Utilia

SQL formatuotojas

Formatuok SQL užklausas PostgreSQL, MySQL, SQL Server, Oracle, BigQuery ir kitiems dialektams su raktažodžių registro ir įtraukos nustatymais naršyklėje.

Kaip suformatuoti SQL užklausą

  1. Įklijuok vieną ar kelias užklausas arba spustelėk Atidaryti failą, kad įkeltum .sql failą (iki 10 MB).
  2. Pasirink savo duomenų bazės Dialektas, pavyzdžiui, PostgreSQL, MySQL ar SQL Server (T-SQL).
  3. Pasirink, kaip rašyti Raktažodžiai (DIDŽIOSIOMIS, mažosiomis arba Palikti kaip įvesta) ir Įtrauka.
  4. Pažymėk Be tarpų aplink operatorius, jei labiau patinka a=b+1 nei a = b + 1.
  5. Spustelėk Formatuoti SQL, tada nukopijuok arba Atsisiųsti rezultatą. Pakeitus nustatymą, užklausa formatuojama iš naujo.

Užklausa tik performatuojama kaip tekstas. Ji niekada nevykdoma ir niekada nesiunčiama į duomenų bazę ar serverį.

Ką daro formatuotojas

Įrankis naudoja atvirojo kodo biblioteką sql-formatter. Jis kiekvieną sakinį skaido į sąlygas ir kiekvieną sąlygos raktažodį (SELECT, FROM, WHERE, GROUP BY, ORDER BY…) deda į atskirą eilutę, o sąlygos turinį įtraukia po juo. SELECT sąraše stulpeliai dedami po vieną eilutėje, AND ir OR sąlygos prasideda naujose eilutėse, o paprogramės ir CASE išraiškos įtraukiamos pagal įdėjimo lygį. Trumpos išraiškos skliaustuose lieka vienoje eilutėje. Keli kabliataškiais atskirti sakiniai atskiriami tuščia eilute.

Keičiasi tik tarpai ir raidžių registras. Eilutės literalai, cituojami identifikatoriai ir komentarai paliekami tiksliai tokie, kokie buvo, todėl suformatuota užklausa duoda tą patį rezultatą kaip originali.

Kodėl dialektas svarbus

SQL duomenų bazės dalijasi pagrindine kalba, bet skiriasi detalėmis, o formatuotojas turi jas žinoti, kad teisingai perskaitytų užklausą:

  • identifikatoriai standartiniame SQL ir PostgreSQL cituojami "dvigubomis kabutėmis", MySQL, MariaDB ir BigQuery – `atvirkštinėmis kabutėmis`, o SQL Server – [laužtiniais skliaustais];
  • operatoriai, pavyzdžiui, PostgreSQL ->> ir :: tipų konvertavimas arba Snowflake : kelio prieiga, egzistuoja tik kai kuriuose dialektuose;
  • parametrų vietos žymekliai skiriasi: ?, $1, :name ar @name;
  • kiekvienas dialektas turi savo rezervuotus žodžius ir funkcijas, kurias keičia nustatymas Raktažodžiai.

Jei gauni pranešimą „Užklausos nepavyko išanalizuoti“, pirmiausia patikrink, ar pasirinktas dialektas atitinka tavo duomenų bazę. Klaida parodo eilutę ir stulpelį, kuriame analizė sustojo. Standartinis SQL yra griežčiausias pasirinkimas; kai tik galima, rinkis savo tikrąją duomenų bazę.

Raktažodžių registras ir stiliaus patarimai

Didžiosios raidės raktažodžiuose išlieka dažniausia konvencija, nes iškart atskiria kalbą nuo lentelių ir stulpelių pavadinimų. Mažosios raidės populiarios komandose, kurioms taip skaityti lengviau, o Palikti kaip įvesta palieka tavo pasirinkimą nepaliestą. Lentelių, stulpelių ir funkcijų pavadinimai niekada nekeičiami: nustatymo paiso tik rezervuoti raktažodžiai. Ilguose failuose nuoseklus formatavimas taip pat gerokai palengvina versijų skirtumų peržiūrą.

Dažnai užduodami klausimai

Kokie dialektai palaikomi?

Standartinis SQL, 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 ir Couchbase N1QL.

Ar įrankis tikrina, ar mano užklausa teisinga?

Ne. Jis tikrina, ar užklausą galima perskaityti pasirinktu dialektu, bet ne tai, ar lentelės ar stulpeliai egzistuoja arba ar užklausa veiktų. Tai patvirtinti gali tik tavo duomenų bazė.

Ar galima formatuoti saugomąsias procedūras?

Iš dalies. Procedūrų viduje esantys sakiniai formatuojami, bet procedūriniai blokai (BEGIN … END, ciklai, DECLARE) išdėstomi paprasčiau nei specializuotoje IDE.

Ar mano užklausa siunčiama į serverį?

Ne. Formatavimas vyksta tavo naršyklėje, todėl užklausos su lentelių pavadinimais ar duomenimis lieka tavo kompiuteryje.

Kodėl mano komentaras atsidūrė kitoje vietoje?

Komentarai išsaugomi, bet eilutės gale esantis komentaras gali persikelti kartu su elementu, po kurio eina, kai tas elementas perkeliamas į naują eilutę.