O ovom alatu
SQL upiti brzo postaju dugi i složeni — spojevi preko mnogih tablica, ugniježđeni podupiti, velike WHERE klauzule s mnogo uvjeta, složeni CASE izrazi. Kompaktni SQL natrpan na nekoliko redaka je nečitljiv; ispravno uvučen SQL s dosljednim velikim slovima čini strukturu upita vidljivom na prvi pogled. Formatiranje je razlika između upita koji možete ispraviti i onog koji ne možete.
Ovaj formater analizira SQL i emitira uvučeni izlaz s pravilnim malim i malim slovima. SQL ključne riječi (SELECT, FROM, WHERE, JOIN, GROUP BY) obično su napisane velikim slovima, nazivi tablica i stupaca odgovaraju izvoru, a uvlačenje odražava ugniježđivanje (podupiti uvučeni unutar roditelja, CASE grane uvučene). Podrška za više dijalekata rješava razlike u MySQL, PostgreSQL, SQL Serveru, Oracleu i SQLiteu.
Formatiranje je nedestruktivno — formatirani upit funkcionalno je identičan unosu. Mijenjaju se samo razmak i velika i mala slova.
Zašto formatirati SQL
Čitanje gustog neformatiranog SQL-a mentalno je naporno. Identificirati koji uvjeti pripadaju kojim JOIN-ovima, gdje podupiti počinju i završavaju i kako se CASE grane odnose, sve postaje teže kada je sve u nekoliko redaka. Formatirani SQL je brži za čitanje i smanjuje pogreške nastale zbog pogrešnog čitanja strukture.
Osobito koristi pregled koda. Pregledatelji mogu brzo shvatiti što upit radi kada je formatiran; čitanje neformatiranog SQL-a tijekom pregleda potiče preskakanje ili utiskivanje. Formatirani SQL također proizvodi značajne razlike kada se upiti promijene.
Tehnički detalji
SQL parsiranje zahtijeva razumijevanje dijalekta jer različite baze podataka proširuju gramatiku na različite načine. Formater obično koristi tokenizer za identificiranje ključnih riječi, identifikatora, literala i interpunkcijskih znakova, zatim proizvodi izlaz s pravilima za razmake i uvlake između tokena.
Pravila uvlačenja: SELECT, FROM, WHERE, GROUP BY, ORDER BY svaki u svom retku. Spojene tablice u sljedećim recima uvučene pod FROM. Uvjeti u WHERE u zasebnim redovima radi čitljivosti. Podupiti u vlastitim uvučenim blokovima.
Pravila velikih i malih slova: najčešće su ključne riječi pisane velikim slovima (SELECT, FROM, WHERE). Neki timovi više vole mala slova. Identifikatori (imena tablica i stupaca) čuvaju velika i mala slova.
Često postavljana pitanja
- Mijenja li oblikovanje ponašanje upita?
- Ne. SQL formatiranje prilagođava samo razmake, prijelome redaka i velika i mala slova ključne riječi. Logika upita, plan izvršenja i rezultati ostaju identični. To je samo poboljšanje čitljivosti.
- Koji su SQL dijalekti podržani?
- Alat podržava standardni SQL i specifične dijalekte: MySQL, PostgreSQL, SQLite, SQL Server (T-SQL) i Oracle PL/SQL. Ključne riječi i funkcije specifične za dijalekt ispravno se prepoznaju.
- Obrađuje li podupiti i CTE?
- Da. Uobičajeni tablični izrazi (klauzule WITH), ugniježđeni podupiti, funkcije prozora i složeni lanci JOIN formatirani su s odgovarajućim razinama uvlake.
- Mogu li ovo koristiti za pohranjene procedure?
- Formater najbolje obrađuje pojedinačne SQL izjave. Procedure s više naredbi, okidači i funkcije mogu funkcionirati, ali formatiranje složene proceduralne logike (IF/ELSE, petlje) ovisi o dijalektu.
- Trebaju li ključne riječi biti velika ili mala slova?
- Konvencija se razlikuje. Ključne riječi napisane velikim slovima tradicionalne su i uobičajene. Mala slova se sve više usvajaju u modernim stilskim vodičima. Odaberite jedan i ostanite dosljedni unutar baze kodova.
- Formatira li pohranjene procedure?
- Većina programa za formatiranje rukuje sintaksom pohranjene procedure (CREATE PROCEDURE, blokovi BEGIN/END, kontrola tijeka). Proširenja specifična za dijalekt mogu biti djelomično podržana.
- Je li moj SQL učitan?
- Ne. Formatiranje se događa u vašem pregledniku.
- Mogu li formatirati iz naredbenog retka?
- Nekoliko SQL formatera nudi CLI alate (sqlfluff, sql-formatter). Koristite ih za skupno formatiranje ili CI integraciju. Formateri preglednika služe za ad-hoc jednokratnu upotrebu.