Formatuoti ir įtraukti SQL užklausą
- Skydelis
- Dokumentacija
- API
Kodėl SQL formatavimas?
SQL formatavimas padeda SQL užklausas padaryti lengviau skaitomas ir suprantamas kūrėjams ir duomenų bazių administratoriai. Tai palengvina derinimą, kodo peržiūrą ir optimizavimą prašymus. Gerai suformatuotas SQL yra būtinas norint palaikyti kodo kokybę ir efektyviai bendradarbiauti kūrimo komandoje.
Palaikomi SQL užklausų tipai
Šis įrankis palaiko visų tipų SQL užklausas, įskaitant SELECT, INSERT, UPDATE, DELETE, taip pat lentelės kūrimo ir modifikavimo instrukcijas (CREATE, ALTER, DROP).
Kaip formatuoti SQL užklausas
Formatavimo puslapyje galite suformatuoti SQL užklausą įklijuodami ją į pateiktą teksto laukelį šiam tikslui.
Kai tik bus pateikta SQL užklausa, ji bus suformatuota ir rodoma rezultatų laukelyje. Jei užklausa yra neteisingas, bus rodoma klaida su nurodymu apie problemos pobūdį.
Naudokite suformatuotą SQL
Suformatuotą SQL galite nukopijuoti naudodami tam skirtą kopijavimo mygtuką. Tai palengvins SQL užklausų integravimas į savo projektus ar ataskaitas.
Jūsų SQL kodas turėtų atrodyti taip:
PASIRINKITE u.id, u.vardą, u.el. paštą,
p.product_name, p.price,
o.užsakymo_data, o.kiekis,
(PASIRINKITE SUMĄ (2 p. kaina * 2. kiekis)
IŠ užsakymų o2
PRISIJUNK prie produktų p2 ON o2.produkto_id = p2.id
WHERE o2.user_id = u.id) kaip bendras_išleistas kiekis
IŠ vartotojų u
JOIN užsakymai o ON u.id = o.user_id
PRISIJUNGTI prie produktų p ON o.produkto_id = p.id
KUR u.id IN (
PASIRINKITE vartotojo_id
IŠ užsakymų
WHERE order_date >= '2023-01-01' AND order_date <= '2023-12-31'
GROUP BY user_id
TURIMAS SKAIČIUS (*) > 5
)
IR p.kaina > 50
ORDER BY u.name ASC, o.order_date DESC
RIBA 10;
Dažnai užduodami klausimai
Kokie SQL dialektai palaikomi: MySQL, PostgreSQL, SQL Server?
Treneris atpažįsta standartinę SQL sintaksę (ANSI), taip pat pagrindinius MySQL, PostgreSQL, SQL Server (T-SQL), Oracle (PL/SQL) ir SQLite plėtinius. Kiekvienam varikliui būdingi raktiniai žodžiai (MySQL ir PostgreSQL LIMIT, SQL serverio TOP, PostgreSQL RETURNING, MERGE) įtrauka teisingai. Varikliui būdingos pagrindinės funkcijos išlaikomos tokios, kokios yra be patvirtinimo.
Ar formatavimo priemonė tvarko CTE ir rekursines užklausas?
Taip. CTE (bendrosios lentelės išraiškos), deklaruotos naudojant WITH ... AS (...), yra įtrauktos į atskirą bloką, o rekursiniai CTE (WITH RECURSIVE) atpažįstami. Dėl to sudėtingos užklausos, įskaitant hierarchijas (medžius, grafikus) ir stumdomus langus, tampa daug lengviau skaitomos. Susijusios antrinės užklausos taip pat suderinamos su jų pirmine apimtimi.
Kuo skiriasi SQL formatavimo priemonė nuo užklausų optimizavimo priemonės?
SQL formatuotojas nekeičia užklausos semantikos: jis tiesiog vizualiai pertvarko kodą (eilutės lūžiai, įtrauka, didžiosios ir mažosios raidės). Kad pagerintų našumą, optimizatorius perrašo užklausą arba siūlo pakeitimus (trūksta indeksų, sujungimai pertvarkomi, antrinės užklausos paverčiamos sujungimais). Norėdami išanalizuoti vykdymo planą, naudokite EXPLAIN arba EXPLAIN ANALYZE, priklausomai nuo variklio.
Ar išsaugomi SQL komentarai?
Taip. Eilutiniai komentarai -- komentaras ir kelių eilučių komentarai /* ... */ saugomi pradinėje vietoje. Tai būtina norint dokumentuoti sudėtingą užklausą arba pažymėti skyrius (TODO, patarimas optimizuoti, perkėlimo versija). Jei perduodate užklausą varikliui, kuris interpretuoja komentuojamas užuominas (/*+ INDEX(...) */ Oracle), jos taip pat išsaugomos.
Kodėl SQL raktiniai žodžiai rašomi didžiosiomis raidėmis?
Raktinių žodžių rašymas didžiosiomis raidėmis (SELECT, FROM, WHERE, JOIN) yra istorinė taisyklė, kuri vizualiai atskiria juos nuo identifikatorių (lentelių pavadinimų, stulpelių). Ši praktika palengvina skaitymą, ypač ilgų užklausų atveju. Tačiau lentelių ir stulpelių pavadinimai išsaugomi originalioje raidėje, kad būtų laikomasi schemos susitarimų (ypač „PostgreSQL“, kur didžiosios ir mažosios raidės yra jautrios cituojamiems identifikatoriams).
Ar formatuotojas patvirtina SQL sintaksę?
Formatuotojas atlieka lengvą sintaksinę analizę, kuri aptinka dideles klaidas (nesubalansuotus skliaustus, trūkstamą kabliataškį teiginio pabaigoje, nenuoseklius raktinius žodžius). Tai nepatvirtina nei lentelių ir stulpelių egzistavimo, nei atitikties konkrečiai schemai. Norėdami tai padaryti, duomenų bazėje paleiskite užklausą režimu EXPLAIN arba naudokite specialią liniją, pvz., sqlfluff.
Užklausos pavyzdys
curl -X POST https://cdrn.fr/api/v1/tools/sql-formatter/execute \
-H "Content-Type: application/json" \
-d '{"input":"..."}'
Įvesties schema
| Laukas | Tipas | Privalomas | Numatytasis |
|---|---|---|---|
input |
text | ✓ | – |
Galiniai taškai
GET https://cdrn.fr/api/v1/tools- išvardija visus galimus įrankiusGET https://cdrn.fr/api/v1/tools/sql-formatter- gauna šio įrankio schemąPOST https://cdrn.fr/api/v1/tools/sql-formatter/execute- vykdo šį įrankį su JSON payload