Formatuj i wcinaj zapytanie SQL

formatuje twoje zapytania SQL, aby były czytelne i łatwe w utrzymaniu

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ędzi
  • GET https://cdrn.fr/api/v1/tools/sql-formatter - zwraca schemat dla tego narzędzia
  • POST https://cdrn.fr/api/v1/tools/sql-formatter/execute - uruchamia to narzędzie z payloadem JSON