Om dette værktøj
SQL-forespørgsler bliver hurtigt lange og komplekse – joinforbindelser på tværs af mange tabeller, indlejrede underforespørgsler, store WHERE-sætninger med mange betingelser, komplekse CASE-udtryk. Kompakt SQL, der er proppet på få linjer, er ulæselig; korrekt indrykket SQL med ensartet brug af store bogstaver gør forespørgselsstrukturen synlig med et øjeblik. Formatering er forskellen mellem en forespørgsel, du kan fejlsøge, og en, du ikke kan.
Dette formateringsprogram analyserer SQL og udsender indrykket, korrekt indbygget output. SQL-nøgleord (SELECT, FROM, WHERE, JOIN, GROUP BY) er typisk med store bogstaver, tabel- og kolonnenavne matcher kilden, og indrykning afspejler indlejring (underforespørgsler indrykket i deres forældre, CASE-grene indrykket). Understøttelse af flere dialekter håndterer forskelle i MySQL, PostgreSQL, SQL Server, Oracle og SQLite.
Formatering er ikke-destruktiv - den formaterede forespørgsel er funktionelt identisk med inputtet. Kun mellemrum og store og små bogstaver ændres.
Hvorfor formatere SQL
At læse tæt uformateret SQL er mentalt belastende. Det bliver sværere at identificere hvilke forhold der hører til hvilke JOINs, hvor underforespørgsler starter og slutter, og hvordan CASE-grene relaterer sig, når alt er på få linjer. Formateret SQL er hurtigere at læse og reducerer fejl fra fejllæsningsstruktur.
Kodegennemgang fordele især. Korrekturlæsere kan hurtigt forstå, hvad en forespørgsel gør, når den er formateret; læsning af uformateret SQL under gennemgang tilskynder til spring eller gummistempling. Formateret SQL producerer også meningsfulde forskelle, når forespørgsler ændres.
Tekniske detaljer
SQL-parsing kræver forståelse af dialekten, fordi forskellige databaser udvider grammatikken på forskellige måder. Formateringsværktøjet bruger typisk en tokenizer til at identificere nøgleord, identifikatorer, bogstaver og tegnsætning og producerer derefter output med regler for mellemrum og indrykning mellem tokens.
Indrykningsregler: SELECT, FROM, WHERE, GROUP BY, ORDER BY hver på deres egen linje. Sammenføjede tabeller på efterfølgende linjer indrykket under FRA. Betingelser i WHERE på separate linjer for læsbarhed. Underforespørgsler i deres egne indrykkede blokke.
Kasuskonventioner: nøgleord med store bogstaver (SELECT, FROM, WHERE) er mest almindelige. Nogle hold foretrækker små bogstaver. Identifikatorer (tabel- og kolonnenavne) bevarer kildens store og små bogstaver.
Ofte stillede spørgsmål
- Ændrer formatering forespørgselsadfærden?
- Nej. SQL-formatering justerer kun mellemrum, linjeskift og nøgleordets store og små bogstaver. Forespørgselslogikken, udførelsesplanen og resultaterne forbliver identiske. Det er udelukkende en forbedring af læsbarheden.
- Hvilke SQL-dialekter understøttes?
- Værktøjet understøtter standard SQL og specifikke dialekter: MySQL, PostgreSQL, SQLite, SQL Server (T-SQL) og Oracle PL/SQL. Dialektspecifikke nøgleord og funktioner genkendes korrekt.
- Håndterer den underforespørgsler og CTE'er?
- Ja. Almindelige tabeludtryk (WITH-sætninger), indlejrede underforespørgsler, vinduesfunktioner og komplekse JOIN-kæder er formateret med passende indrykningsniveauer.
- Kan jeg bruge dette til lagrede procedurer?
- Formateringsværktøjet håndterer enkelt SQL-sætninger bedst. Multi-sætningsprocedurer, triggere og funktioner kan fungere, men kompleks procedurel logik (IF/ELSE, loops) formatering afhænger af dialekten.
- Skal søgeord være store eller små?
- Konventionen varierer. Store bogstaver er traditionelle og almindelige. Små bogstaver vinder indpas i moderne stilguider. Vælg en og forbliv konsekvent i kodebasen.
- Formaterer den lagrede procedurer?
- De fleste formatere håndterer lagret proceduresyntaks (OPRET PROCEDURE, BEGIN/SLUT-blokke, kontrolflow). Dialektspecifikke udvidelser kan delvist understøttes.
- Er min SQL uploadet?
- Nej. Formatering sker i din browser.
- Kan jeg formatere fra kommandolinjen?
- Flere SQL-formatere tilbyder CLI-værktøjer (sqlfluff, sql-formatter). Brug dem til batchformatering eller CI-integration. Browserformatere er til ad hoc engangsbrug.