Formátovat a odsadit SQL dotaz
- Dashboard
- Dokumentace
- API
Proč SQL formátování?
SQL formátování umožňuje udělat SQL queries čitelnější a srozumitelnější pro developery a administrátory databází. Usnadňuje to debugování, code review a optimalizaci queries. Dobře formátované SQL je zásadní pro udržení kvality kódu a efektivní spolupráci v rámci vývojářského týmu.
Podporované typy SQL queries
Tento nástroj podporuje všechny typy SQL queries, včetně instrukcí SELECT, INSERT, UPDATE, DELETE, stejně jako instrukcí pro vytváření a úpravu tabulek (CREATE, ALTER, DROP).
Jak formátovat SQL queries
Na formátovací stránce můžete formátovat svůj SQL query jeho vložením do textové oblasti k tomu určené.
Jakmile je SQL query odesláno, bude formátováno a zobrazeno v oblasti výsledků. Pokud je query nevalidní, chyba bude zobrazena s indikací povahy problému.
Použití formátovaného SQL
Můžete zkopírovat formátované SQL použitím kopírovacího tlačítka k tomu určeného. To usnadní integraci SQL queries do vašich projektů nebo reportů.
Váš SQL kód by měl vypadat 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
Jaké SQL dialekty jsou podporovány: MySQL, PostgreSQL, SQL Server?
Formátor rozpoznává standardní SQL syntaxi (ANSI) stejně jako hlavní rozšíření MySQL, PostgreSQL, SQL Server (T-SQL), Oracle (PL/SQL) a SQLite. Klíčová slova specifická pro každý engine (LIMIT z MySQL a PostgreSQL, TOP ze SQL Serveru, RETURNING z PostgreSQL, MERGE) jsou správně indentována. Nativní funkce specifické pro engine jsou zachovány jak jsou bez validace.
Spravuje formátor CTE a rekurzivní queries?
Ano. CTE (Common Table Expressions) deklarované s WITH ... AS (...) jsou indentovány na vlastní blok, a rekurzivní CTE (WITH RECURSIVE) jsou rozpoznány. To dělá komplexní queries výrazně čitelnější, zejména hierarchie (stromy, grafy) a sliding windows. Korelované subqueries jsou také zarovnány se svým rodičovským rozsahem.
Jaký je rozdíl mezi SQL formátorem a optimalizátorem queries?
SQL formátor nemění sémantiku query: jen vizuálně reorganizuje kód (zalomení řádků, odsazení, případ klíčových slov). Optimalizátor, on, přepisuje query nebo navrhuje úpravy (chybějící indexy, JOINy k reorganizaci, subqueries k transformaci na JOINy) pro zlepšení výkonu. Pro analýzu plánu provedení použijte EXPLAIN nebo EXPLAIN ANALYZE podle enginu.
Jsou SQL komentáře zachovány?
Ano. Řádkové komentáře -- komentář a víceřádkové komentáře /* ... */ jsou zachovány na svém původním místě. Je to zásadní pro dokumentaci komplexního query nebo označení sekcí (TODO, hint pro optimalizátor, verze migrace). Pokud query předáte enginu, který interpretuje komentované hinty (/*+ INDEX(...) */ na Oracle), jsou také zachovány.
Proč jsou SQL klíčová slova ve velkých písmenech?
Psaní klíčových slov (SELECT, FROM, WHERE, JOIN) velkými písmeny je historická konvence, která je vizuálně odlišuje od identifikátorů (názvy tabulek, sloupců). Tato praxe usnadňuje čtení, zejména v dlouhých queries. Názvy tabulek a sloupců jsou naopak zachovány v jejich původním případě pro respektování konvencí schématu (zejména na PostgreSQL, kde je případ citlivý pro citované identifikátory).
Validuje formátor SQL syntaxi?
Formátor provádí lehkou syntaktickou analýzu, která detekuje hrubé chyby (nevyvážené závorky, chybějící středník na konci instrukce, nekonzistentní klíčová slova). Nevaliduje ani existenci tabulek a sloupců, ani soulad s konkrétním schématem. Pro to spusťte query v módu EXPLAIN na vaší databázi, nebo použijte dedikovaný linter jako sqlfluff.
Ukázka požadavku
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é | Výchozí |
|---|---|---|---|
input |
text | ✓ | – |
Koncové body
GET https://cdrn.fr/api/v1/tools- vypíše všechny dostupné nástrojeGET https://cdrn.fr/api/v1/tools/sql-formatter- získá schéma tohoto nástrojePOST https://cdrn.fr/api/v1/tools/sql-formatter/execute- spustí tento nástroj s JSON payloadem