Formatuj i wcinaj zapytanie SQL
- Panel
- Dokumentacja
- API
Dlaczego formatowanie SQL?
Formatowanie SQL pozwala uczynić zapytania SQL bardziej czytelnymi i zrozumiałymi dla programistów i administratorów baz danych. Ułatwia to debugowanie, code review i optymalizację zapytań. Dobrze sformatowany SQL jest niezbędny do utrzymania jakości kodu i efektywnej współpracy w zespole programistycznym.
Obsługiwane typy zapytań SQL
To narzędzie obsługuje wszystkie typy zapytań SQL, w tym instrukcje SELECT, INSERT, UPDATE, DELETE oraz instrukcje tworzenia i modyfikacji tabel (CREATE, ALTER, DROP).
Jak formatować zapytania SQL
Na stronie formatowania możesz sformatować swoje zapytanie SQL, wklejając je w przeznaczonym do tego polu tekstowym.
Po przesłaniu zapytania SQL zostanie ono sformatowane i wyświetlone w obszarze wyniku. Jeśli zapytanie jest nieprawidłowe, wyświetlony zostanie błąd ze wskazaniem natury problemu.
Korzystanie ze sformatowanego SQL
Możesz skopiować sformatowany SQL za pomocą dedykowanego przycisku kopiowania. Ułatwi to integrację zapytań SQL w twoich projektach lub raportach.
Twój kod SQL powinien wyglądać tak:
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;
Najczęściej zadawane pytania
Jakie dialekty SQL są obsługiwane: MySQL, PostgreSQL, SQL Server?
Formater rozpoznaje standardową składnię SQL (ANSI) oraz główne rozszerzenia MySQL, PostgreSQL, SQL Server (T-SQL), Oracle (PL/SQL) i SQLite. Słowa kluczowe specyficzne dla każdego silnika (LIMIT w MySQL i PostgreSQL, TOP w SQL Server, RETURNING w PostgreSQL, MERGE) są poprawnie wcinane. Funkcje natywne właściwe dla silnika są zachowywane bez walidacji.
Czy formater obsługuje CTE i zapytania rekurencyjne?
Tak. CTE (Common Table Expressions) zadeklarowane przez WITH ... AS (...) są wcinane na własnym bloku, a CTE rekurencyjne (WITH RECURSIVE) są rozpoznawane. Czyni to złożone zapytania znacznie bardziej czytelnymi, zwłaszcza hierarchie (drzewa, grafy) i okna przesuwne. Skorelowane podzapytania są również wyrównywane do swojego nadrzędnego zakresu.
Jaka jest różnica między formaterem SQL a optymalizatorem zapytań?
Formater SQL nie zmienia semantyki zapytania: ogranicza się do wizualnego reorganizowania kodu (znaki nowej linii, wcięcia, wielkość liter słów kluczowych). Optymalizator natomiast przepisuje zapytanie lub sugeruje modyfikacje (brakujące indeksy, joiny do reorganizacji, podzapytania do przekształcenia w joiny), aby poprawić wydajność. Aby przeanalizować plan wykonania, użyj EXPLAIN lub EXPLAIN ANALYZE w zależności od silnika.
Czy komentarze SQL są zachowywane?
Tak. Komentarze liniowe -- commentaire i komentarze wielolinijkowe /* ... */ są zachowywane w ich oryginalnej lokalizacji. Jest to niezbędne do dokumentowania złożonego zapytania lub oznaczania sekcji (TODO, hint dla optymalizatora, wersja migracji). Jeśli przekazujesz zapytanie silnikowi, który interpretuje komentowane hinty (/*+ INDEX(...) */ w Oracle), również są zachowywane.
Dlaczego słowa kluczowe SQL są pisane wielką literą?
Zapisywanie słów kluczowych (SELECT, FROM, WHERE, JOIN) wielką literą to historyczna konwencja, która wizualnie odróżnia je od identyfikatorów (nazwy tabel, kolumn). Ta praktyka ułatwia czytanie, zwłaszcza w długich zapytaniach. Nazwy tabel i kolumn są natomiast zachowywane w oryginalnej wielkości liter, aby przestrzegać konwencji schematu (zwłaszcza w PostgreSQL, gdzie wielkość liter jest istotna dla cytowanych identyfikatorów).
Czy formater waliduje składnię SQL?
Formater wykonuje lekką analizę składniową, która wykrywa grube błędy (niezbalansowane nawiasy, brakujący średnik na końcu instrukcji, niespójne słowa kluczowe). Nie waliduje istnienia tabel i kolumn ani zgodności z konkretnym schematem. W tym celu uruchom zapytanie w trybie EXPLAIN w bazie danych lub użyj dedykowanego lintera, takiego jak sqlfluff.
Przykładowe zapytanie
curl -X POST https://cdrn.fr/api/v1/tools/sql-formatter/execute \
-H "Content-Type: application/json" \
-d '{"input":"..."}'
Schemat wejściowy
| Pole | Typ | Wymagane | Domyślnie |
|---|---|---|---|
input |
text | ✓ | – |
Punkty końcowe
GET https://cdrn.fr/api/v1/tools- lista wszystkich dostępnych narzędziGET https://cdrn.fr/api/v1/tools/sql-formatter- zwraca schemat dla tego narzędziaPOST https://cdrn.fr/api/v1/tools/sql-formatter/execute- uruchamia to narzędzie z payloadem JSON