O tomto nástroji
Dotazy SQL sú rýchlo dlhé a zložité – spojenia v mnohých tabuľkách, vnorené poddotazy, veľké klauzuly WHERE s mnohými podmienkami, zložité výrazy CASE. Kompaktné SQL vtesnané do niekoľkých riadkov je nečitateľné; správne odsadený SQL s konzistentným používaním veľkých písmen robí štruktúru dotazu viditeľnou na prvý pohľad. Formátovanie je rozdiel medzi dotazom, ktorý môžete ladiť, a dotazom, ktorý nemôžete.
Tento formátovač analyzuje SQL a vydáva odsadený výstup so správnymi malými a malými písmenami. Kľúčové slová SQL (SELECT, FROM, WHERE, JOIN, GROUP BY) sú zvyčajne písané veľkými písmenami, názvy tabuliek a stĺpcov zodpovedajú zdroju a odsadenie odráža vnorenie (poddotazy odsadené vo vnútri svojich rodičov, odsadené vetvy CASE). Podpora viacerých dialektov zvláda rozdiely medzi MySQL, PostgreSQL, SQL Server, Oracle a SQLite.
Formátovanie je nedeštruktívne – formátovaný dotaz je funkčne identický so vstupom. Menia sa iba medzery a malé a veľké písmená.
Prečo formátovať SQL
Čítanie hustého neformátovaného SQL je psychicky náročné. Identifikácia toho, ktoré podmienky patria ku ktorým JOINom, kde začínajú a končia poddotazy a ako súvisia vetvy CASE, to všetko je ťažšie, keď je všetko na niekoľkých riadkoch. Formátovaný SQL je rýchlejší na čítanie a znižuje chyby spôsobené chybným čítaním štruktúry.
Najmä výhody kontroly kódu. Recenzenti môžu rýchlo pochopiť, čo robí dotaz, keď je naformátovaný; čítanie neformátovaného SQL počas kontroly podporuje preskakovanie alebo označovanie. Formátovaný SQL tiež vytvára zmysluplné rozdiely pri zmene dotazov.
Technické detaily
Analýza SQL vyžaduje pochopenie dialektu, pretože rôzne databázy rozširujú gramatiku rôznymi spôsobmi. Formátovač zvyčajne používa tokenizér na identifikáciu kľúčových slov, identifikátorov, literálov a interpunkcie a potom vytvára výstup s pravidlami pre medzery a odsadenie medzi tokenmi.
Pravidlá odsadenia: SELECT, FROM, WHERE, GROUP BY, ORDER BY každý na vlastnom riadku. Pripojené tabuľky v nasledujúcich riadkoch odsadené pod FROM. Podmienky v WHERE na samostatných riadkoch kvôli čitateľnosti. Poddotazy v ich vlastných odsadených blokoch.
Konvencie malých a veľkých písmen: kľúčové slová sú najčastejšie veľké (SELECT, FROM, WHERE). Niektoré tímy uprednostňujú malé písmená. Identifikátory (názvy tabuliek a stĺpcov) zachovávajú veľkosť písmen zdroja.
Často kladené otázky
- Mení formátovanie správanie dotazu?
- Nie. Formátovanie SQL upravuje iba medzery, zlomy riadkov a veľké a malé písmená. Logika dotazu, plán vykonávania a výsledky zostávajú rovnaké. Ide čisto o zlepšenie čitateľnosti.
- Ktoré dialekty SQL sú podporované?
- Nástroj podporuje štandardné SQL a špecifické dialekty: MySQL, PostgreSQL, SQLite, SQL Server (T-SQL) a Oracle PL/SQL. Kľúčové slová a funkcie špecifické pre nárečie sa rozpoznávajú správne.
- Spracováva poddotazy a CTE?
- áno. Bežné tabuľkové výrazy (WITH klauzuly), vnorené poddotazy, funkcie okien a komplexné reťazce JOIN sú naformátované s vhodnými úrovňami odsadenia.
- Môžem to použiť pre uložené procedúry?
- Formátovač najlepšie zvláda jednotlivé príkazy SQL. Procedúry, spúšťače a funkcie s viacerými príkazmi môžu fungovať, ale formátovanie zložitej procedurálnej logiky (IF/ELSE, slučky) závisí od dialektu.
- Mali by byť kľúčové slová veľké alebo malé?
- Konvencia sa líši. Kľúčové slová s veľkými písmenami sú tradičné a bežné. Malé písmená sa udomácňujú v sprievodcoch moderného štýlu. Vyberte si jeden a zostaňte konzistentní v rámci kódovej základne.
- Formátuje uložené procedúry?
- Väčšina formátovačov spracováva syntax uložených procedúr (CREATE PROCEDURE, BEGIN/END bloky, tok riadenia). Rozšírenia špecifické pre dialekty môžu byť čiastočne podporované.
- Je môj SQL nahraný?
- Nie. Formátovanie prebieha vo vašom prehliadači.
- Môžem formátovať z príkazového riadku?
- Niekoľko formátovačov SQL ponúka nástroje CLI (sqlfluff, sql-formatter). Použite ich na dávkové formátovanie alebo integráciu CI. Prehliadačové formátovače sú na jednorazové použitie ad hoc.