Menu

Formater SQL

Porządkuj zapytania SQL z wcięciami zgodnymi ze składnią.

Autor: Nethanel Bar, Co-founder & CEO

Ostatnia aktualizacja

Chcesz naprawdę nauczyć się programować?

Coddy uczy cię przez pisanie prawdziwego kodu w przeglądarce: interaktywne lekcje, natychmiastowa informacja zwrotna i pomoc AI, gdy utkniesz.

Czym jest SQL formatter?

SQL formatter bierze gęsty, jednolinijkowy lub wygenerowany automatycznie kod SQL i przepisuje go ze spójnymi wcięciami i podziałami linii. Programiści i analitycy sięgają po niego przy przeglądaniu złączeń, debugowaniu filtrów, porządkowaniu wyniku z ORM, udostępnianiu zapytań w zgłoszeniach lub dokumentacji i analizie planów zapytań.

Formatowanie nie zmienia tego, co zapytanie *robi*, tylko to, jak łatwo człowiek je przeczyta. Gdy układ jest spójny, relacje między SELECT, FROM, JOIN, WHERE, GROUP BY, HAVING i ORDER BY dużo łatwiej prześledzić, zwłaszcza w zapytaniach łączących podzapytania i CTE.

SQL ma wiele *dialektów*: PostgreSQL, MySQL, SQLite, T-SQL (Microsoft SQL Server), Oracle i BigQuery rozszerzają standard o własną składnię. Dobry formatter rozumie wybrany dialekt, więc nie psuje składni specyficznej dla danej bazy.

Czego nauczysz się, formatując SQL

  • Klauzule SQL mają konkretne role: SELECT wybiera kolumny, FROM wybiera tabele, WHERE filtruje wiersze, GROUP BY agreguje, a ORDER BY sortuje.
  • Czytelne wcięcia odsłaniają zagnieżdżone zapytania, złączenia i warunki, których w jednolinijkowym zapytaniu w ogóle nie widać.
  • Dialekt ma znaczenie: RETURNING, LIMIT, TOP i identyfikatory w nawiasach ([col] kontra "col") nie są przenośne między bazami danych.
  • Dobre formattery zachowują komentarze, więc możesz wyjaśnić, *dlaczego* dany filtr istnieje, tuż obok niego.

Jak sformatować zapytanie SQL krok po kroku

  1. Wklej zapytanie

    Wklej swój SQL do pola wejściowego. Zadziała SQL jednolinijkowy, wygenerowany przez ORM albo częściowo sformatowany.

  2. Wybierz dialekt

    Wybierz PostgreSQL, MySQL, SQLite lub T-SQL, aby formatter uwzględnił słowa kluczowe specyficzne dla bazy, takie jak LIMIT, TOP czy RETURNING.

  3. Ustaw styl

    Wybierz wielkość liter słów kluczowych (standardem są wielkie litery) i szerokość wcięcia (2 lub 4 spacje). Większość zespołów wybiera wielkie litery i wcięcie na 2 spacje.

  4. Przeczytaj sformatowany wynik

    Każda klauzula jest w osobnej linii, złączenia są wyrównane, a podzapytania mają wcięcia. Komentarze zostają zachowane.

  5. Skopiuj z powrotem do projektu

    Wklej sformatowane zapytanie do migracji, surowego zapytania ORM lub narzędzia BI. Wszystko zostaje w twojej przeglądarce.

Klauzule SQL: szybka ściągawka

Klauzule, które zobaczysz w 95% zapytań SELECT, w kolejności, w jakiej są koncepcyjnie przetwarzane. Dokumentacja baz: PostgreSQL SELECT, MySQL SELECT.

KlauzulaCelPrzykład
SELECTWybiera kolumny lub wyrażenia do zwróceniaSELECT id, name
FROMWybiera tabele źródłoweFROM users
JOIN ... ONŁączy wiersze z inną tabeląJOIN orders ON orders.user_id = users.id
WHEREFiltruje wiersze przed grupowaniemWHERE active = true
GROUP BYAgreguje wiersze o wspólnych wartościachGROUP BY country
HAVINGFiltruje zagregowane grupyHAVING COUNT(*) > 10
ORDER BYSortuje wynikORDER BY created_at DESC
LIMIT / OFFSETDzieli wynik na stronyLIMIT 20 OFFSET 40
WITH ... ASCommon Table Expression (CTE): nazwane podzapytanieWITH active AS (...)

Przykłady SQL do wypróbowania

Sformatuj proste zapytanie

Wejście
select id,name from users where active=true order by created_at desc limit 10
Sformatowane
SELECT  id,  nameFROM usersWHERE active = trueORDER BY created_at DESCLIMIT 10;

Każda klauzula jest teraz w osobnej linii, a lista kolumn ma wcięcie. Przegląd tego zapytania w code review stał się 10× łatwiejszy.

Przeanalizuj złączenie

Wejście
select u.name,o.total from users u join orders o on o.user_id=u.id where o.total>100
Sformatowane
SELECT  u.name,  o.totalFROM users uJOIN orders o ON o.user_id = u.idWHERE o.total > 100;

Aliasy tabel (users u, orders o) skracają listę kolumn. Linia JOIN ... ON wprost pokazuje relację między tabelami.

Przeczytaj zagnieżdżone podzapytanie

Wejście
select * from users where id in (select user_id from enrollments where course_id=5)
Sformatowane
SELECT *FROM usersWHERE id IN (  SELECT user_id  FROM enrollments  WHERE course_id = 5);

Wcięcie wewnętrznego zapytania wyraźnie pokazuje zależność. Gdy struktura jest widoczna, wiele podzapytań da się przepisać na JOINy lub CTE.

Uporządkuj zminifikowany wynik z ORM

Wejście
SELECT "posts"."id", "posts"."title", "users"."name" FROM "posts" INNER JOIN "users" ON "users"."id" = "posts"."author_id" WHERE "posts"."published" = true AND "posts"."created_at" > '2026-01-01' ORDER BY "posts"."created_at" DESC LIMIT 25
Upiększone
SELECT  "posts"."id",  "posts"."title",  "users"."name"FROM "posts"INNER JOIN "users" ON "users"."id" = "posts"."author_id"WHERE "posts"."published" = true  AND "posts"."created_at" > '2026-01-01'ORDER BY "posts"."created_at" DESCLIMIT 25;

ORM-y takie jak Prisma, Django czy ActiveRecord logują SQL jako jedną długą linię. Beautifier dzieli ją na klauzule i robi wcięcia w łańcuchu warunków WHERE, żeby dało się przeczytać, co robi zapytanie, zanim wkleisz je do zgłoszenia.

Częste błędy przy formatowaniu SQL

  • Zakładanie, że sformatowany SQL to *poprawny* SQL. Formatowanie zmienia układ, a nie znaczenie: zapytanie może wyglądać czysto i nadal zwracać zły wynik.
  • Edytowanie zapytania podczas formatowania i zapominanie o ponownym przetestowaniu wyniku.
  • Ignorowanie dialektu: LIMIT 10 w PostgreSQL, TOP 10 w T-SQL i FETCH FIRST 10 ROWS ONLY w standardowym SQL robią to samo.
  • Mieszanie wielkości liter słów kluczowych (Select, SELECT, select) w jednym projekcie. Wybierz jeden styl i trzymaj się go: większość zespołów używa wielkich liter.

SQL Formatter: najczęstsze pytania

Czy formatowanie SQL zmienia wynik zapytania?
Nie. Formatowanie zmienia tylko białe znaki i wielkość liter. Baza danych przetwarza obie wersje do tego samego planu zapytania, więc zwrócone wiersze są identyczne.
Po co formatować SQL?
Czytelny SQL łatwiej debugować, przeglądać w code review, uczyć i utrzymywać, zwłaszcza gdy zapytanie ma wiele złączeń, podzapytań, CTE lub funkcji okna.
Co to jest dialekt SQL?
Dialekt SQL to rozszerzenie standardowego SQL specyficzne dla danej bazy danych. PostgreSQL, MySQL, SQLite, T-SQL (SQL Server), Oracle i BigQuery mają własną składnię wykraczającą poza standard SQL.
Czy SQL formatter naprawi błędne zapytanie?
Formatter może ujawnić problemy ze składnią, bo wypisuje zapytanie w uporządkowanej formie, ale nie rozumie twojego schematu i nie zagwarantuje, że zapytanie jest logicznie poprawne.
Czy pisać słowa kluczowe SQL wielkimi literami?
Większość przewodników stylu zaleca wielkie litery dla słów kluczowych (SELECT, FROM, WHERE) i małe dla identyfikatorów, bo kontrast wizualny wyraźnie pokazuje strukturę zapytania. Wybierz jeden styl i trzymaj się go.
Czym różni się SQL formatter od SQL beautifier?
To dwie nazwy tego samego narzędzia. "Beautify" i "format" oznaczają przepisanie zapytania ze spójnymi wcięciami, podziałami linii i wielkością liter słów kluczowych, żeby łatwiej się je czytało. Niezależnie od tego, czy szukasz SQL beautifier, SQL pretty printer czy SQL formatter, to narzędzie zrobi swoje: wklej zapytanie, wybierz dialekt i skopiuj czystą wersję.
Jak za darmo sformatować zapytanie SQL online?
Wklej zapytanie do pola wejściowego, wybierz dialekt (PostgreSQL, MySQL, SQLite lub T-SQL), a formatter od razu doda wcięcia i umieści każdą klauzulę w osobnej linii. Narzędzie jest całkowicie darmowe, bez rejestracji, i działa w całości w przeglądarce: twój SQL nigdy nie jest wysyłany na serwer, więc możesz bezpiecznie formatować zapytania firmowe lub produkcyjne.

Dowiedz się więcej

Inne narzędzia dla programistów

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ