Vorminda ja taanda SQL-päring

vormindab teie SQL-päringud, et need oleksid loetavad ja mõistetavad, hõlbustades arendamist ja hooldust

Miks SQL-i vormindamine?

SQL-i vormindamine aitab muuta SQL-päringud arendajatele loetavamaks ja arusaadavamaks ja andmebaasi administraatorid. See hõlbustab silumist, koodi ülevaatamist ja optimeerimist taotlusi. Hästi vormindatud SQL on koodikvaliteedi säilitamiseks ja tõhusaks koostööks hädavajalik arendusmeeskonna sees.

Toetatud SQL päringutüübid

See tööriist toetab igat tüüpi SQL-päringuid, sealhulgas SELECT, INSERT, UPDATE, DELETE, samuti tabeli loomise ja muutmise juhised (CREATE, ALTER, DROP).

Kuidas vormindada SQL päringuid

Vormindamislehel saate oma SQL-päringu vormindada, kleepides selle vastavasse tekstikasti selleks otstarbeks.

Niipea kui SQL-päring on esitatud, vormindatakse see ja kuvatakse tulemuskastis. Kui päring on kehtetu, kuvatakse veateade, mis näitab probleemi olemust.

Kasutage vormindatud SQL-i

Vormindatud SQL-i saate kopeerida selleks ettenähtud kopeerimisnupu abil. See hõlbustab SQL-päringute integreerimine oma projektidesse või aruannetesse.

Teie SQL-kood peaks välja nägema selline:


VALI u.id, u.nimi, u.e-post,
       p.product_name, p.price,
       o.order_date, o.quantity,
       (VALI SUMMA(p2.hind * o2.kogus)
        tellimustest o2
        LIITUMINE toodetega p2 ON o2.toote_id = p2.id
        WHERE o2.kasutaja_id = u.id) kui kulutatud kogusumma
Kasutajatelt u
JOIN tellimused o ON u.id = o.kasutaja_id
LIITUMINE toodetega p ON o.toote_id = p.id
KUS u.id IN (
    SELECT user_id
    tellimustest
    KUS tellimuse_kuupäev >= '2023-01-01' JA tellimuse_kuupäev <= '2023-12-31'
    GROUP BY user_id
    LOENDAB (*) > 5
)
JA tk hind > 50
ORDER BY u.name ASC, o.order_date DESC
LIIT 10;

    

Korduma kippuvad küsimused

Milliseid SQL-i dialekte toetatakse: MySQL, PostgreSQL, SQL Server?

Koolitaja tunneb ära nii standardse SQL süntaksi (ANSI) kui ka MySQL, PostgreSQL, SQL Server (T-SQL), Oracle (PL/SQL) ja SQLite peamised laiendused. Iga mootori jaoks omased märksõnad (MySQL-i ja PostgreSQL-i LIMIT, SQL Serveri TOP, PostgreSQL-i RETURNING, MERGE) on õigesti taandatud. Mootorile omased algfunktsioonid säilitatakse ilma kinnitamiseta.

Kas vormindaja käsitleb CTE-sid ja rekursiivseid päringuid?

Jah. CTE-d (tavalised tabeliväljendid), mis on deklareeritud koodiga WITH ... AS (...), on oma plokkidesse taandatud ja rekursiivsed CTE-d (WITH RECURSIVE) tuvastatakse. See muudab keerukad päringud palju loetavamaks, sealhulgas hierarhiad (puud, graafikud) ja lükandaknad. Korreleeruvad alampäringud joondatakse ka nende vanema ulatusega.

Mis vahe on SQL-i vormindajal ja päringu optimeerijal?

SQL-i vormindaja ei muuda päringu semantikat: see lihtsalt korraldab koodi visuaalselt ümber (reavahetused, taane, võtmetähtsus). Optimeerija kirjutab päringu ümber või soovitab toimivuse parandamiseks muudatusi (puuduvad indeksid, ümberkorraldatavad liitumised, liitumisteks teisendatavad alampäringud). Täitmisplaani analüüsimiseks kasutage olenevalt mootorist käsku EXPLAIN või EXPLAIN ANALYZE.

Kas SQL-i kommentaarid on säilinud?

Jah. Tekstisisesed kommentaarid -- kommentaar ja mitmerealised kommentaarid /* ... */ säilitatakse nende algses asukohas. See on oluline keeruka päringu dokumenteerimiseks või osade märgistamiseks (TODO, vihje optimeerijale, migratsiooni versioon). Kui edastate päringu mootorile, mis tõlgendab kommenteeritud vihjeid (/*+ INDEX(...) */ Oracle'is), säilitatakse ka need.

Miks on SQL-i märksõnad suurtähtedega?

Märksõnade suurtähtede kasutamine (SELECT, FROM, WHERE, JOIN) on ajalooline tava, mis eristab neid visuaalselt identifikaatoritest (tabelinimed, veerud). See tava muudab lugemise lihtsamaks, eriti pikkade päringute puhul. Siiski säilitatakse tabelite ja veergude nimed nende algses käändes, et järgida skeemi tavasid (eriti PostgreSQL-is, kus suur- ja suurtähted on tsiteeritud identifikaatorite suhtes tundlik).

Kas vormindaja kinnitab SQL-i süntaksit?

Vormindaja teeb kerge süntaktilise analüüsi, mis tuvastab jämedad vead (tasakaalustamata sulud, puuduv semikoolon lause lõpus, vastuolulised märksõnad). See ei kinnita tabelite ja veergude olemasolu ega vastavust konkreetsele skeemile. Selleks käivitage päring oma andmebaasis režiimis EXPLAIN või kasutage spetsiaalset linterit, näiteks sqlfluff.

Päringunäide

curl -X POST https://cdrn.fr/api/v1/tools/sql-formatter/execute \
  -H "Content-Type: application/json" \
  -d '{"input":"..."}'

Sisendskeem

Väli Tüüp Kohustuslik Vaikimisi
input text

Lõpp-punktid

  • GET https://cdrn.fr/api/v1/tools - loetleb kõik saadaolevad tööriistad
  • GET https://cdrn.fr/api/v1/tools/sql-formatter - toob selle tööriista skeemi
  • POST https://cdrn.fr/api/v1/tools/sql-formatter/execute - täidab selle tööriista JSON-payloadiga