Czytelny SQL w dialekcie, którego używasz
Ten SQL formatter przyjmuje zapytanie dowolnej długości, nawet kilka instrukcji naraz, i spójnie je wcina: jedna klauzula na linię, kolumny i warunki wyrównane, słowa kluczowe w wybranej wielkości liter. Rozumie składnię ponad piętnastu dialektów, od PostgreSQL, MySQL i SQL Server po BigQuery, Snowflake i Oracle PL/SQL, więc operatory, cudzysłowy i placeholdery typowe dla dialektu pozostają nienaruszone. Przełącz na Minifikuj, aby z powrotem zamienić zapytanie w jedną linię do pliku konfiguracyjnego lub ciągu w kodzie. Wszystko działa w przeglądarce; Twoje zapytania nigdy nie są wysyłane.
Jak sformatować zapytanie SQL
- 1Wklej SQL do lewego panelu albo zacznij od przykładowego zapytania.
- 2Wybierz dialekt, w którym napisano zapytanie. Standard SQL wystarczy dla większości prostych zapytań; właściwy dialekt ma znaczenie np. przy rzutowaniach
::w PostgreSQL, identyfikatorach w backtickach w MySQL czy[brackets]w SQL Server. - 3Ustaw wielkość liter słów kluczowych i wcięcia, a w Więcej opcji wielkość liter typów danych i funkcji, wcięcia tabelaryczne, położenie
AND/ORi puste linie między instrukcjami. - 4Sformatowane zapytanie pojawia się po prawej podczas pisania. Jeśli nie da się go przeanalizować, wyświetlana jest linia i kolumna problemu.
- 5Skopiuj wynik, pobierz go jako plik
.sqllub wybierz Minifikuj, aby zwinąć go do jednej linii.
Po co formatować SQL?
SQL pisze się raz, a czyta wiele razy: w code review, w logu wolnych zapytań, w migracji, którą ktoś musi debugować o 2 w nocy. Zapytanie wygenerowane przez ORM lub skopiowane z logu zwykle przychodzi jako jedna ogromna linia. Umieszczenie każdej klauzuli w osobnej linii i wcięcie podzapytań ujawnia strukturę: które tabele są łączone, po czym i które warunki gdzie obowiązują.
Spójne formatowanie zmniejsza też diffy. Gdy cały zespół formatuje zapytania tak samo, zmieniony warunek widać jako jedną zmienioną linię zamiast przebudowanego akapitu.
Opcje formatowania
- Wielkość liter słów kluczowych
- UPPER wyróżnia SELECT, FROM i WHERE na tle nazw tabel i kolumn, to najczęstsza konwencja. lower pasuje zespołom, którym wielkie litery wydają się krzykliwe. Zachowaj pozostawia słowa kluczowe tak, jak je wpisano.
- Wcięcia
- Dwie lub cztery spacje albo tabulatory. Style tabelaryczne dopełniają słowa kluczowe do kolumny o stałej szerokości, aby wyrażenia po nich były wyrównane.
- Położenie AND / OR
- Na początku umieszcza każdy operator logiczny na początku linii, co ułatwia zakomentowanie jednego warunku; na końcu zostawia go na końcu poprzedniej linii.
- Szerokość wyrażenia
- Wyrażenia w nawiasach krótsze niż ta liczba znaków zostają w jednej linii; dłuższe są dzielone.
- Zwarte operatory
- Zapisuje a+b zamiast a + b. Zwięźle, ale mniej czytelnie.
Wybór właściwego dialektu
Dialekty SQL różnią się bardziej, niż się wydaje: sposobem cytowania identyfikatorów ("name", `name` lub [name]), wyglądem placeholderów (?, $1, :name, @param) i listą słów zastrzeżonych. Formatter używa osobnej gramatyki dla każdego dialektu, więc nie pomyli ciała funkcji $$ w PostgreSQL ani komentarza # w MySQL z czymś innym.
Jeśli widzisz błąd parsowania przy zapytaniu, które na pewno jest poprawne, najpierw sprawdź dialekt. Standard SQL jest celowo rygorystyczny i nie zna wszystkich rozszerzeń producentów.
Minifikacja SQL
Minifikacja to odwrotność formatowania: usuwa komentarze i zamienia wszystkie białe znaki na pojedyncze spacje, dając jedną linię do wklejenia w plik YAML, zmienną środowiskową lub literał tekstowy. Literały tekstowe, identyfikatory w cudzysłowach i ciała w dollar-quoting są kopiowane dokładnie, więc wartość taka jak 'two spaces' zachowuje obie spacje. Wskazówki optymalizatora zapisane jako /*+ … */ i wykonywalne komentarze MySQL /*! … */ zostają, bo zmieniają sposób wykonania zapytania.
Pracujesz z JSON? JSON Formatter robi to samo dla dokumentów JSON, a minifikator kodu obsługuje CSS, JavaScript i HTML.
Najczęstsze pytania
- Czy mój SQL jest wysyłany na serwer?
- Nie. Formatowanie i minifikacja działają w całości w przeglądarce, więc zapytania z nazwami tabel, danymi klientów czy danymi logowania nigdy nie opuszczają Twojego urządzenia.
- Jakie dialekty SQL są obsługiwane?
- Standard SQL, PostgreSQL, MySQL, MariaDB, SQLite, SQL Server (T-SQL), Oracle PL/SQL, BigQuery, Snowflake, Amazon Redshift, Spark SQL, Hive, Trino i Presto, DuckDB, ClickHouse, IBM Db2 i Db2 for IBM i, SingleStoreDB, TiDB oraz Couchbase N1QL.
- Czy formatowanie zmienia działanie zapytania?
- Nie. Zmieniają się tylko białe znaki i, jeśli wybierzesz, wielkość liter słów kluczowych, typów danych i funkcji. Identyfikatory w cudzysłowach i literały tekstowe nigdy nie są zmieniane. Zmiana wielkości liter identyfikatorów bez cudzysłowów jest bezpieczna w większości baz, ale zostaw Zachowaj, jeśli Twoja baza rozróżnia w nich wielkość liter.
- Skąd błąd parsowania?
- Albo zapytanie ma błąd składni, np. niezamknięty nawias lub cudzysłów, albo używa składni, której wybrany dialekt nie obejmuje. Komunikat pokazuje linię i kolumnę, w której parsowanie się zatrzymało; spróbuj dialektu, którego faktycznie używa Twoja baza.
- Czy mogę sformatować kilka instrukcji naraz?
- Tak. Oddziel je średnikami, a każda zostanie sformatowana po kolei, z wybraną liczbą pustych linii pomiędzy.
- Czy komentarze są zachowywane?
- Przy formatowaniu tak: komentarze liniowe i blokowe zostają na swoim miejscu. Minifikacja je usuwa, z wyjątkiem wskazówek optymalizatora i wykonywalnych komentarzy MySQL.
- Jak zminifikować zapytanie SQL do jednej linii?
- Wybierz Minifikuj u góry narzędzia. Komentarze są usuwane, a białe znaki skracane, natomiast literały tekstowe i identyfikatory w cudzysłowach zostają dokładnie takie, jak zapisano.