O tym narzędziu
Zapytania SQL szybko stają się długie i złożone — połączenia wielu tabel, zagnieżdżone podzapytania, duże klauzule WHERE z wieloma warunkami, złożone wyrażenia CASE. Kompaktowy SQL upchnięty w kilku wierszach jest nieczytelny; odpowiednio wcięty SQL ze stałą wielkością liter sprawia, że struktura zapytania jest widoczna na pierwszy rzut oka. Formatowanie to różnica między zapytaniem, które można debugować, a zapytaniem, którego nie można.
Ten program formatujący analizuje SQL i emituje dane wyjściowe z wcięciami i odpowiednią wielkością liter. Słowa kluczowe SQL (SELECT, FROM, WHERE, JOIN, GROUP BY) są zazwyczaj pisane wielkimi literami, nazwy tabel i kolumn odpowiadają źródłu, a wcięcia odzwierciedlają zagnieżdżenie (podzapytania są wcięte wewnątrz ich rodziców, wcięcia gałęzi CASE). Obsługa wielu dialektów obsługuje różnice w MySQL, PostgreSQL, SQL Server, Oracle i SQLite.
Formatowanie nie ma charakteru destrukcyjnego — sformatowane zapytanie jest funkcjonalnie identyczne z danymi wejściowymi. Zmieniają się tylko białe znaki i wielkość liter.
Po co formatować SQL
Czytanie gęstego, niesformatowanego SQL jest obciążające psychicznie. Określenie, które warunki należą do których JOIN, gdzie zaczynają się i kończą podzapytania oraz w jaki sposób powiązane są gałęzie CASE, staje się trudniejsze, gdy wszystko jest w kilku liniach. Sformatowany SQL jest szybszy do odczytania i zmniejsza liczbę błędów wynikających z błędnego odczytania struktury.
Przegląd kodu przynosi szczególne korzyści. Recenzenci mogą szybko zrozumieć, co robi zapytanie po jego sformatowaniu; czytanie niesformatowanego kodu SQL podczas przeglądania zachęca do pomijania lub stemplowania. Sformatowany SQL generuje również znaczące różnice w przypadku zmiany zapytań.
Szczegóły techniczne
Analiza SQL wymaga zrozumienia dialektu, ponieważ różne bazy danych rozszerzają gramatykę na różne sposoby. Osoba formatująca zazwyczaj używa tokenizera do identyfikowania słów kluczowych, identyfikatorów, literałów i znaków interpunkcyjnych, a następnie generuje dane wyjściowe z regułami dotyczącymi białych znaków i wcięć między tokenami.
Reguły wcięć: SELECT, FROM, WHERE, GROUP BY, ORDER BY, każdy w osobnej linii. Połączone tabele w kolejnych wierszach z wcięciem FROM. Warunki w WHERE w oddzielnych wierszach dla czytelności. Podzapytania w osobnych blokach z wcięciem.
Konwencje wielkości liter: najczęściej używane są wielkie litery (SELECT, FROM, WHERE). Niektóre zespoły wolą pisać małymi literami. Identyfikatory (nazwy tabel i kolumn) zachowują wielkość liter źródłowych.
Często zadawane pytania
- Czy formatowanie zmienia zachowanie zapytania?
- Nie. Formatowanie SQL dostosowuje tylko białe znaki, podziały wierszy i wielkość liter słów kluczowych. Logika zapytań, plan wykonania i wyniki pozostają identyczne. To po prostu poprawa czytelności.
- Które dialekty SQL są obsługiwane?
- Narzędzie obsługuje standardowy SQL oraz specyficzne dialekty: MySQL, PostgreSQL, SQLite, SQL Server (T-SQL) i Oracle PL/SQL. Słowa kluczowe i funkcje specyficzne dla dialektu są rozpoznawane poprawnie.
- Czy obsługuje podzapytania i CTE?
- Tak. Typowe wyrażenia tabelowe (klauzule Z), zagnieżdżone podzapytania, funkcje okna i złożone łańcuchy JOIN są formatowane z odpowiednimi poziomami wcięć.
- Czy mogę tego użyć do procedur przechowywanych?
- Formater najlepiej radzi sobie z pojedynczymi instrukcjami SQL. Procedury, wyzwalacze i funkcje zawierające wiele instrukcji mogą działać, ale formatowanie złożonej logiki proceduralnej (JEŻELI/ELSE, pętle) zależy od dialektu.
- Czy słowa kluczowe powinny być pisane wielkimi czy małymi literami?
- Konwencja jest różna. Słowa kluczowe pisane wielkimi literami są tradycyjne i powszechne. Małe litery zyskują na popularności w nowoczesnych przewodnikach. Wybierz jeden i zachowaj spójność w bazie kodu.
- Czy formatuje procedury składowane?
- Większość formaterów obsługuje składnię procedur składowanych (CREATE PROCEDURE, bloki BEGIN/END, przepływ sterowania). Rozszerzenia specyficzne dla dialektu mogą być częściowo obsługiwane.
- Czy mój SQL został przesłany?
- Nie. Formatowanie odbywa się w przeglądarce.
- Czy mogę sformatować z wiersza poleceń?
- Kilka formaterów SQL oferuje narzędzia CLI (sqlfluff, sql-formatter). Używaj ich do formatowania wsadowego lub integracji CI. Formatery przeglądarki są przeznaczone do jednorazowego użytku ad hoc.