Formátovať a odsadiť SQL požiadavku
- Dashboard
- Dokumentácia
- API
Prečo SQL formátovanie?
SQL formátovanie umožňuje urobiť SQL dotazy čitateľnejšími a zrozumiteľnejšími pre vývojárov a administrátorov databáz. To uľahčuje debugovanie, code review a optimalizáciu dotazov. Dobre formátovaný SQL je nevyhnutný pre udržanie kvality kódu a efektívnu spoluprácu v rámci vývojového tímu.
Podporované typy SQL dotazov
Tento nástroj podporuje všetky typy SQL dotazov, vrátane SELECT, INSERT, UPDATE, DELETE inštrukcií, ako aj inštrukcií vytvárania a modifikácie tabuliek (CREATE, ALTER, DROP).
Ako formátovať SQL dotazy
Na stránke formátovania môžete formátovať váš SQL dotaz jeho vložením do vyhradenej textovej zóny.
Akonáhle je SQL dotaz odoslaný, bude formátovaný a zobrazený v zóne výsledku. Ak je dotaz nevalidný, zobrazí sa chyba s indikáciou povahy problému.
Použitie formátovaného SQL
Formátovaný SQL môžete skopírovať pomocou vyhradeného tlačidla kopírovania. To uľahčí integráciu SQL dotazov do vašich projektov alebo reportov.
Váš SQL kód by mal vyzerať takto:
SELECT u.id, u.name, u.email,
p.product_name, p.price,
o.order_date, o.quantity,
(SELECT SUM(p2.price * o2.quantity)
FROM orders o2
JOIN products p2 ON o2.product_id = p2.id
WHERE o2.user_id = u.id) as total_spent
FROM users u
JOIN orders o ON u.id = o.user_id
JOIN products p ON o.product_id = p.id
WHERE u.id IN (
SELECT user_id
FROM orders
WHERE order_date >= '2023-01-01' AND order_date <= '2023-12-31'
GROUP BY user_id
HAVING COUNT(*) > 5
)
AND p.price > 50
ORDER BY u.name ASC, o.order_date DESC
LIMIT 10;
Často kladené otázky
Aké SQL dialekty sú podporované: MySQL, PostgreSQL, SQL Server?
Formátor rozpoznáva štandardnú SQL syntax (ANSI), ako aj hlavné rozšírenia MySQL, PostgreSQL, SQL Server (T-SQL), Oracle (PL/SQL) a SQLite. Kľúčové slová špecifické každému engine (LIMIT MySQL a PostgreSQL, TOP SQL Server, RETURNING PostgreSQL, MERGE) sú správne odsadené. Natívne funkcie patriace jednému engine sú zachované tak, ako sú, bez validácie.
Spravuje formátor CTE a rekurzívne dotazy?
Áno. CTE (Common Table Expressions) deklarované cez WITH ... AS (...) sú odsadené na vlastnom bloku a rekurzívne CTE (WITH RECURSIVE) sú rozpoznané. To robí komplexné dotazy výrazne čitateľnejšími, najmä hierarchie (stromy, grafy) a sliding windows. Korelované poddotazy sú tiež zarovnané so svojím rodičovským rozsahom.
Aký rozdiel medzi SQL formátorom a optimalizátorom dotazov?
SQL formátor nemení sémantiku dotazu: uspokojí sa s vizuálnym preorganizovaním kódu (zlomy riadkov, odsadenie, veľkosť písmen kľúčových slov). Optimalizátor naopak prepisuje dotaz alebo navrhuje modifikácie (chýbajúce indexy, joins na preorganizovanie, poddotazy na transformáciu na joins) pre zlepšenie výkonu. Pre analýzu plánu spustenia použite EXPLAIN alebo EXPLAIN ANALYZE podľa engine.
Sú SQL komentáre zachované?
Áno. Inline komentáre -- komentar a viacriadkové komentáre /* ... */ sú zachované na svojom pôvodnom mieste. Je to nevyhnutné pre dokumentovanie komplexného dotazu alebo označovanie sekcií (TODO, hint pre optimalizátor, verzia migrácie). Ak prenášate dotaz na engine interpretujúci komentované hints (/*+ INDEX(...) */ na Oracle), sú tiež zachované.
Prečo sú SQL kľúčové slová veľkými písmenami?
Dať kľúčové slová (SELECT, FROM, WHERE, JOIN) veľkými písmenami je historická konvencia, ktorá ich vizuálne odlišuje od identifikátorov (názvy tabuliek, stĺpcov). Táto prax uľahčuje čítanie, najmä v dlhých dotazoch. Názvy tabuliek a stĺpcov sú naopak zachované vo svojej pôvodnej veľkosti písmen pre rešpektovanie schémových konvencií (najmä na PostgreSQL, kde je veľkosť písmen citlivá pre kvótované identifikátory).
Validuje formátor SQL syntax?
Formátor vykonáva ľahkú syntaktickú analýzu, ktorá detekuje hrubé chyby (nevyvážené zátvorky, chýbajúca bodkočiarka na konci inštrukcie, nekoherentné kľúčové slová). Nevaliduje existenciu tabuliek a stĺpcov, ani súlad s presnou schémou. Pre to spustite dotaz v móde EXPLAIN na vašej databáze, alebo použite dedikovaný linter ako sqlfluff.
Ukážka požiadavky
curl -X POST https://cdrn.fr/api/v1/tools/sql-formatter/execute \
-H "Content-Type: application/json" \
-d '{"input":"..."}'
Vstupná schéma
| Pole | Typ | Povinné | Predvolené |
|---|---|---|---|
input |
text | ✓ | – |
Koncové body
GET https://cdrn.fr/api/v1/tools- vypíše všetky dostupné nástrojeGET https://cdrn.fr/api/v1/tools/sql-formatter- získa schému tohto nástrojaPOST https://cdrn.fr/api/v1/tools/sql-formatter/execute- spustí tento nástroj s JSON payloadom