SQL lekérdezés formázása és behúzása

formázza SQL lekérdezéseit olvashatóvá és érthetővé, megkönnyítve a fejlesztést és karbantartást

Miért fontos az SQL formázás?

Az SQL formázás lehetővé teszi, hogy az SQL lekérdezések olvashatóbbak és érthetőbbek legyenek a fejlesztők és az adatbázis-adminisztrátorok számára. Ez megkönnyíti a hibakeresést, a kód felülvizsgálatát és a lekérdezések optimalizálását. A jól formázott SQL elengedhetetlen a kódminőség fenntartásához és a fejlesztőcsapaton belüli hatékony együttműködéshez.

Támogatott SQL lekérdezés típusok

Ez az eszköz minden típusú SQL lekérdezést támogat, beleértve a SELECT, INSERT, UPDATE, DELETE utasításokat, valamint a táblák létrehozására és módosítására szolgáló utasításokat (CREATE, ALTER, DROP).

Hogyan formázzunk SQL lekérdezéseket

A formázási oldalon az SQL lekérdezést az erre a célra szolgáló szövegmezőbe beillesztve formázhatja.

Amint elküldi az SQL lekérdezést, az formázásra kerül és megjelenik egy eredményzónában. Ha a lekérdezés érvénytelen, hibaüzenet jelenik meg a probléma jellegére utaló jelzéssel.

A formázott SQL felhasználása

A formázott SQL-t a megfelelő másolás gombbal másolhatja ki. Ez megkönnyíti az SQL lekérdezések beépítését a projektjeibe vagy jelentéseibe.

Az Ön SQL kódjának így kellene kinéznie:


SELECT u.id, u.name, u.email,
       p.product_name, p.price,
       o.order_date, o.quantity,
       (SELECT SUM(p2.price * o2.quantity)
        FROM orders o2
        JOIN products p2 ON o2.product_id = p2.id
        WHERE o2.user_id = u.id) as total_spent
FROM users u
JOIN orders o ON u.id = o.user_id
JOIN products p ON o.product_id = p.id
WHERE u.id IN (
    SELECT user_id
    FROM orders
    WHERE order_date >= '2023-01-01' AND order_date <= '2023-12-31'
    GROUP BY user_id
    HAVING COUNT(*) > 5
)
AND p.price > 50
ORDER BY u.name ASC, o.order_date DESC
LIMIT 10;

    

Gyakori kérdések

Milyen SQL dialektusok támogatottak: MySQL, PostgreSQL, SQL Server?

A formázó felismeri a standard SQL (ANSI) szintaxist, valamint a MySQL, PostgreSQL, SQL Server (T-SQL), Oracle (PL/SQL) és SQLite főbb kiterjesztéseit. Az egyes motorokra jellemző kulcsszavak (a MySQL és a PostgreSQL LIMIT, az SQL Server TOP, a PostgreSQL RETURNING, MERGE) megfelelően vannak behúzva. A motorfüggő natív függvények változatlanul megmaradnak ellenőrzés nélkül.

Kezeli a formázó a CTE-ket és a rekurzív lekérdezéseket?

Igen. A WITH ... AS (...) segítségével deklarált CTE-k (Common Table Expressions) saját blokkban vannak behúzva, és a rekurzív CTE-k (WITH RECURSIVE) is felismerésre kerülnek. Ez jelentősen olvashatóbbá teszi a komplex lekérdezéseket, különösen a hierarchiákat (fák, gráfok) és a gördülő ablakokat. A korrelált al-lekérdezések szintén a szülő hatókörükhöz vannak igazítva.

Mi a különbség az SQL formázó és a lekérdezés-optimalizáló között?

Az SQL formázó nem változtatja meg a lekérdezés szemantikáját: csupán vizuálisan rendezi át a kódot (soremelések, behúzás, kulcsszavak írásmódja). Az optimalizáló ezzel szemben átírja a lekérdezést, vagy módosításokat javasol (hiányzó indexek, átrendezendő összekapcsolások, összekapcsolássá alakítandó al-lekérdezések) a teljesítmény javítása érdekében. A végrehajtási terv elemzéséhez használja az EXPLAIN vagy EXPLAIN ANALYZE parancsot a motornak megfelelően.

Megmaradnak az SQL megjegyzések?

Igen. Az egysoros -- megjegyzés és a többsoros /* ... */ megjegyzések az eredeti helyükön megmaradnak. Ez elengedhetetlen egy komplex lekérdezés dokumentálásához vagy szakaszok megjelöléséhez (TODO, optimalizáló hint, migráció verziója). Ha a lekérdezést olyan motorhoz továbbítja, amely értelmezi a megjegyzésbe tett hinteket (/*+ INDEX(...) */ Oracle-en), azok szintén megmaradnak.

Miért íródnak nagybetűvel az SQL kulcsszavak?

Az SQL kulcsszavak (SELECT, FROM, WHERE, JOIN) nagybetűvel írása egy történelmi konvenció, amely vizuálisan megkülönbözteti őket az azonosítóktól (táblanevek, oszlopok). Ez a gyakorlat megkönnyíti az olvasást, különösen a hosszú lekérdezésekben. A tábla- és oszlopnevek viszont megmaradnak eredeti írásmódjukban, hogy tiszteletben tartsák a séma konvencióit (különösen a PostgreSQL-en, ahol az idézőjelek közé tett azonosítók kis- és nagybetűérzékenyek).

Ellenőrzi a formázó az SQL szintaxisát?

A formázó könnyű szintaktikai elemzést végez, amely észleli a durva hibákat (nem kiegyensúlyozott zárójelek, hiányzó pontosvessző az utasítás végén, inkonzisztens kulcsszavak). Nem ellenőrzi a táblák és oszlopok létezését, sem a pontos sémának való megfelelést. Ehhez futtassa a lekérdezést EXPLAIN módban az adatbázisán, vagy használjon dedikált lintert, például a sqlfluff-ot.

Kérés példa

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

Bemeneti séma

Mező Típus Kötelező Alapértelmezett
input text

Végpontok

  • GET https://cdrn.fr/api/v1/tools - listázza az összes elérhető eszközt
  • GET https://cdrn.fr/api/v1/tools/sql-formatter - lekéri ezen eszköz sémáját
  • POST https://cdrn.fr/api/v1/tools/sql-formatter/execute - végrehajtja ezen eszközt JSON payloaddal