Utilia

Formatare SQL

Formatează interogări SQL pentru PostgreSQL, MySQL, SQL Server, Oracle, BigQuery, Snowflake și altele, cu opțiuni pentru litere și indentare, în browserul tău.

Cum formatezi o interogare SQL

  1. Lipește una sau mai multe interogări sau apasă Deschide fișierul ca să încarci un fișier .sql (până la 10 MB).
  2. Alege Dialect potrivit bazei tale de date, de exemplu PostgreSQL, MySQL sau SQL Server (T-SQL).
  3. Alege cum se scriu Cuvinte-cheie (MAJUSCULE, minuscule sau Ca la introducere) și Indentare.
  4. Bifează Fără spații în jurul operatorilor dacă preferi a=b+1 în loc de a = b + 1.
  5. Apasă Formatează SQL, apoi copiază sau descarcă rezultatul. Schimbarea unei opțiuni reformatează interogarea.

Interogarea este doar reformatată ca text. Nu este rulată niciodată și nu este trimisă către o bază de date sau un server.

Ce face formatatorul

Instrumentul folosește biblioteca open-source sql-formatter. Împarte fiecare instrucțiune în clauze și pune cuvântul-cheie al fiecărei clauze (SELECT, FROM, WHERE, GROUP BY, ORDER BY…) pe propria linie, cu conținutul clauzei indentat dedesubt. Coloanele dintr-o listă SELECT sunt așezate câte una pe linie, condițiile AND și OR încep linii noi, iar subinterogările și expresiile CASE sunt indentate după nivelul de imbricare. Expresiile scurte din paranteze rămân pe o singură linie. Mai multe instrucțiuni separate prin punct și virgulă sunt desprinse printr-o linie goală.

Se schimbă doar spațiile albe și literele mari sau mici. Literalii șir, identificatorii între ghilimele și comentariile sunt păstrate exact, deci interogarea formatată dă același rezultat ca originalul.

De ce contează dialectul

Bazele de date SQL au în comun limbajul de bază, dar diferă în detalii, iar un formatator trebuie să le cunoască pentru a citi corect interogarea:

  • identificatorii se pun între "ghilimele duble" în SQL standard și PostgreSQL, între `backticks` în MySQL, MariaDB și BigQuery și între [paranteze drepte] în SQL Server;
  • operatori precum ->> și conversiile :: din PostgreSQL sau accesul pe cale cu : din Snowflake există doar în unele dialecte;
  • marcajele de parametri diferă: ?, $1, :name sau @name;
  • fiecare dialect are propriile cuvinte rezervate și funcții, pe care opțiunea Cuvinte-cheie le schimbă.

Dacă primești „Interogarea nu a putut fi analizată”, verifică mai întâi dacă dialectul ales corespunde bazei tale de date. Eroarea arată linia și coloana la care s-a oprit analiza. SQL standard este alegerea cea mai restrictivă; alege baza ta de date reală ori de câte ori e posibil.

Litere și stil: sfaturi

Cuvintele-cheie cu majuscule rămân convenția cea mai răspândită, pentru că separă dintr-o privire limbajul de numele tabelelor și coloanelor. Minusculele sunt populare în echipele care le consideră mai ușor de citit, iar Ca la introducere lasă alegerea ta neatinsă. Numele tabelelor, coloanelor și funcțiilor nu se schimbă niciodată: doar cuvintele-cheie rezervate urmează opțiunea. Pentru fișiere lungi, o formatare consecventă face mult mai ușor de verificat diferențele dintre versiuni.

Întrebări frecvente

Ce dialecte sunt acceptate?

SQL standard, PostgreSQL, MySQL, MariaDB, SQLite, SQL Server (T-SQL), Oracle (PL/SQL), Google BigQuery, Snowflake, Amazon Redshift, IBM Db2, Db2 for i, Apache Hive, Spark SQL, Trino/Presto, DuckDB, ClickHouse, SingleStoreDB, TiDB și Couchbase N1QL.

Verifică instrumentul dacă interogarea mea este validă?

Nu. Verifică dacă interogarea poate fi citită în dialectul ales, dar nu dacă tabelele sau coloanele există ori dacă interogarea ar rula. Doar baza ta de date poate confirma asta.

Poate formata proceduri stocate?

Parțial. Instrucțiunile din proceduri sunt formatate, dar blocurile procedurale (BEGIN … END, bucle, DECLARE) sunt așezate mai simplu decât într-un IDE dedicat.

Este interogarea mea trimisă unui server?

Nu. Formatarea rulează în browserul tău, deci interogările care conțin nume de tabele sau date rămân pe calculatorul tău.

De ce comentariul meu este în alt loc?

Comentariile sunt păstrate, dar un comentariu de la sfârșitul unei linii se poate muta odată cu elementul pe care îl urmează, atunci când acel element trece pe o linie nouă.