Formatarea și indentarea unei cereri SQL
- Panou de control
- Documentație
- API
De ce formatarea SQL?
Formatarea SQL permite a face cererile SQL mai lizibile și de înțeles pentru dezvoltatori și administratorii de baze de date. Aceasta facilitează debug-ul, code review-ul și optimizarea cererilor. Un SQL bine formatat este esențial pentru a menține calitatea codului și a colabora eficient în cadrul unei echipe de dezvoltare.
Tipuri de cereri SQL luate în considerare
Acest instrument ia în considerare toate tipurile de cereri SQL, inclusiv instrucțiunile SELECT, INSERT, UPDATE, DELETE, precum și instrucțiunile de creare și modificare a tabelelor (CREATE, ALTER, DROP).
Cum să formatezi cereri SQL
Pe pagina de formatare, poți formata cererea ta SQL lipind-o în zona de text prevăzută în acest scop.
Imediat ce cererea SQL este trimisă, va fi formatată și afișată într-o zonă de rezultat. Dacă cererea este invalidă, o eroare va fi afișată cu o indicație a naturii problemei.
Utilizarea SQL-ului formatat
Poți copia SQL-ul formatat utilizând butonul de copiere prevăzut în acest scop. Aceasta va facilita integrarea cererilor SQL în proiectele sau rapoartele tale.
Codul tău SQL ar trebui să arate astfel:
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;
Întrebări frecvente
Ce dialecte SQL sunt luate în considerare: MySQL, PostgreSQL, SQL Server?
Formatatorul recunoaște sintaxa SQL standard (ANSI) precum și principalele extensii ale MySQL, PostgreSQL, SQL Server (T-SQL), Oracle (PL/SQL) și SQLite. Cuvintele cheie specifice fiecărui motor (LIMIT din MySQL și PostgreSQL, TOP din SQL Server, RETURNING din PostgreSQL, MERGE) sunt indentate corect. Funcțiile native proprii unui motor sunt păstrate ca atare fără validare.
Formatatorul gestionează CTE-urile și cererile recursive?
Da. CTE-urile (Common Table Expressions) declarate cu WITH ... AS (...) sunt indentate pe propriul lor bloc, iar CTE-urile recursive (WITH RECURSIVE) sunt recunoscute. Aceasta face cererile complexe semnificativ mai lizibile, în special ierarhiile (arbori, grafuri) și ferestrele alunecătoare. Subcererile corelate sunt de asemenea aliniate cu sfera lor părinte.
Care este diferența între un formatator SQL și un optimizator de cereri?
Un formatator SQL nu schimbă semantica cererii: se mulțumește să reorganizeze vizual codul (salturi de linie, indentare, cazuri ale cuvintelor cheie). Un optimizator, el, rescrie cererea sau sugerează modificări (indexuri lipsă, joinuri de reorganizat, subcereri de transformat în joinuri) pentru a îmbunătăți performanțele. Pentru a analiza planul de execuție, utilizează EXPLAIN sau EXPLAIN ANALYZE în funcție de motor.
Comentariile SQL sunt păstrate?
Da. Comentariile pe linie -- comentariu și comentariile pe mai multe linii /* ... */ sunt păstrate la locul lor de origine. Este esențial pentru a documenta o cerere complexă sau a marca secțiuni (TODO, hint pentru optimizator, versiune a unei migrări). Dacă transmiți cererea unui motor care interpretează hint-urile comentate (/*+ INDEX(...) */ pe Oracle), sunt de asemenea păstrate.
De ce cuvintele cheie SQL sunt puse în majuscule?
Punerea cuvintelor cheie (SELECT, FROM, WHERE, JOIN) în majuscule este o convenție istorică care le distinge vizual de identificatori (nume de tabele, coloane). Această practică facilitează citirea, mai ales în cererile lungi. Numele de tabele și de coloane sunt în schimb păstrate în caz-ul lor de origine pentru a respecta convențiile schemei (în special pe PostgreSQL unde caz-ul este sensibil pentru identificatorii cu ghilimele).
Formatatorul validează sintaxa SQL?
Formatatorul efectuează o analiză sintactică ușoară care detectează erorile grosolane (paranteze neechilibrate, punct și virgulă lipsă la sfârșitul instrucțiunii, cuvinte cheie incoerente). Nu validează nici existența tabelelor și coloanelor, nici conformitatea cu o schemă precisă. Pentru aceasta, execută cererea în mod EXPLAIN pe baza ta, sau utilizează un linter dedicat precum sqlfluff.
Exemplu de cerere
curl -X POST https://cdrn.fr/api/v1/tools/sql-formatter/execute \
-H "Content-Type: application/json" \
-d '{"input":"..."}'
Schema de intrare
| Câmp | Tip | Obligatoriu | Implicit |
|---|---|---|---|
input |
text | ✓ | – |
Puncte de acces
GET https://cdrn.fr/api/v1/tools- listează toate instrumentele disponibileGET https://cdrn.fr/api/v1/tools/sql-formatter- obține schema acestui instrumentPOST https://cdrn.fr/api/v1/tools/sql-formatter/execute- execută acest instrument cu un payload JSON