Formátovať a odsadiť SQL požiadavku

formátuje vaše SQL požiadavky, aby boli čitateľné a zrozumiteľné, uľahčuje vývoj a údržbu

Prečo SQL formátovanie?

SQL formátovanie umožňuje urobiť SQL dotazy čitateľnejšími a zrozumiteľnejšími pre vývojárov a administrátorov databáz. To uľahčuje debugovanie, code review a optimalizáciu dotazov. Dobre formátovaný SQL je nevyhnutný pre udržanie kvality kódu a efektívnu spoluprácu v rámci vývojového tímu.

Podporované typy SQL dotazov

Tento nástroj podporuje všetky typy SQL dotazov, vrátane SELECT, INSERT, UPDATE, DELETE inštrukcií, ako aj inštrukcií vytvárania a modifikácie tabuliek (CREATE, ALTER, DROP).

Ako formátovať SQL dotazy

Na stránke formátovania môžete formátovať váš SQL dotaz jeho vložením do vyhradenej textovej zóny.

Akonáhle je SQL dotaz odoslaný, bude formátovaný a zobrazený v zóne výsledku. Ak je dotaz nevalidný, zobrazí sa chyba s indikáciou povahy problému.

Použitie formátovaného SQL

Formátovaný SQL môžete skopírovať pomocou vyhradeného tlačidla kopírovania. To uľahčí integráciu SQL dotazov do vašich projektov alebo reportov.

Váš SQL kód by mal vyzerať takto:


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;

    

Často kladené otázky

Aké SQL dialekty sú podporované: MySQL, PostgreSQL, SQL Server?

Formátor rozpoznáva štandardnú SQL syntax (ANSI), ako aj hlavné rozšírenia MySQL, PostgreSQL, SQL Server (T-SQL), Oracle (PL/SQL) a SQLite. Kľúčové slová špecifické každému engine (LIMIT MySQL a PostgreSQL, TOP SQL Server, RETURNING PostgreSQL, MERGE) sú správne odsadené. Natívne funkcie patriace jednému engine sú zachované tak, ako sú, bez validácie.

Spravuje formátor CTE a rekurzívne dotazy?

Áno. CTE (Common Table Expressions) deklarované cez WITH ... AS (...) sú odsadené na vlastnom bloku a rekurzívne CTE (WITH RECURSIVE) sú rozpoznané. To robí komplexné dotazy výrazne čitateľnejšími, najmä hierarchie (stromy, grafy) a sliding windows. Korelované poddotazy sú tiež zarovnané so svojím rodičovským rozsahom.

Aký rozdiel medzi SQL formátorom a optimalizátorom dotazov?

SQL formátor nemení sémantiku dotazu: uspokojí sa s vizuálnym preorganizovaním kódu (zlomy riadkov, odsadenie, veľkosť písmen kľúčových slov). Optimalizátor naopak prepisuje dotaz alebo navrhuje modifikácie (chýbajúce indexy, joins na preorganizovanie, poddotazy na transformáciu na joins) pre zlepšenie výkonu. Pre analýzu plánu spustenia použite EXPLAIN alebo EXPLAIN ANALYZE podľa engine.

Sú SQL komentáre zachované?

Áno. Inline komentáre -- komentar a viacriadkové komentáre /* ... */ sú zachované na svojom pôvodnom mieste. Je to nevyhnutné pre dokumentovanie komplexného dotazu alebo označovanie sekcií (TODO, hint pre optimalizátor, verzia migrácie). Ak prenášate dotaz na engine interpretujúci komentované hints (/*+ INDEX(...) */ na Oracle), sú tiež zachované.

Prečo sú SQL kľúčové slová veľkými písmenami?

Dať kľúčové slová (SELECT, FROM, WHERE, JOIN) veľkými písmenami je historická konvencia, ktorá ich vizuálne odlišuje od identifikátorov (názvy tabuliek, stĺpcov). Táto prax uľahčuje čítanie, najmä v dlhých dotazoch. Názvy tabuliek a stĺpcov sú naopak zachované vo svojej pôvodnej veľkosti písmen pre rešpektovanie schémových konvencií (najmä na PostgreSQL, kde je veľkosť písmen citlivá pre kvótované identifikátory).

Validuje formátor SQL syntax?

Formátor vykonáva ľahkú syntaktickú analýzu, ktorá detekuje hrubé chyby (nevyvážené zátvorky, chýbajúca bodkočiarka na konci inštrukcie, nekoherentné kľúčové slová). Nevaliduje existenciu tabuliek a stĺpcov, ani súlad s presnou schémou. Pre to spustite dotaz v móde EXPLAIN na vašej databáze, alebo použite dedikovaný linter ako sqlfluff.

Ukážka požiadavky

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

Vstupná schéma

Pole Typ Povinné Predvolené
input text

Koncové body

  • GET https://cdrn.fr/api/v1/tools - vypíše všetky dostupné nástroje
  • GET https://cdrn.fr/api/v1/tools/sql-formatter - získa schému tohto nástroja
  • POST https://cdrn.fr/api/v1/tools/sql-formatter/execute - spustí tento nástroj s JSON payloadom