15.06.20235 min
Suraj Gurav

Suraj GuravProduct Manager / Data AnalyticsAmazon

3 najlepsze sprawdzone praktyki w SQL

Poznaj 3 praktyki w SQL, których warto używać, , które powinieneś znać, jeśli zajmujesz się analizą danych.

3 najlepsze sprawdzone praktyki w SQL

Omówię w tym tekście 3 sposoby pisania łatwych do odczytania, debugowania i modyfikacji zapytań SQL

Pisanie zapytań SQL jest podstawowym krokiem w analizie danych. Nawet z elementarną wiedzą na temat SQL, każdy jest w stanie je pisać. Jak więc wyróżnić się z tłumu? Pisanie czytelnych i łatwych w utrzymaniu zapytań SQL pozwala to zrobić. 

Niezależnie od tego, czy pracujesz z innymi programistami lub użytkownikami SQL, Twój kod powinien być łatwy do odczytania, debugowania i modyfikacji. Dzięki zastosowaniu tych 3 prostych, ale najbardziej skutecznych najlepszych praktyk SQL, jakość Twoich zapytań poszybuje w górę.

Niezależnie od systemu zarządzania relacyjną bazą danych, takiego jak SQL Server, MySQL Workbench lub DB Browser, są to 3 najlepsze sposoby pisania łatwych w utrzymaniu zapytań. I nie mówię tutaj o tradycyjnych najlepszych praktykach, które podpowiada Ci Google. 

Na potrzeby poniższych przykładów, używam MySQL Workbench i samodzielnie utworzonego pliku Sales Data, utworzonego przy użyciu biblioteki Faker. Wszystko znajdziesz na moim repozytorium na Githubie i to za darmo, na licencji MIT License. Jest to prosty zestaw danych 9999 x 11, jak możesz zobaczysz na poniższym zdjęciu.

Rozpocznijmy od najbardziej podstawowej operacji SQL, tj. wyboru kolumn tabeli.

Każda nazwa kolumny w nowym wierszu

Zapewne spotkałeś się z bardzo popularną, najlepszą, praktyką SQL — Don’s use SELECT *, i być może ją praktykujesz.

Zakładając, że postępujesz zgodnie z tą praktyką, będziesz wymieniać wszystkie nazwy kolumn po SELECT. Jednak samo oddzielenie nazw kolumn przez przecinek nie jest wystarczające.

Pozwólcie, że wyjaśnię dlaczego.

Załóżmy, że chcesz wybrać kolumny OrderID, Quantity i Status ze zbioru danych.

SELECT OrderID, Quantity, Status
FROM sql_practice.dummy_sales_data_v1


Działa bez zarzutu!

Załóżmy teraz, że na ten moment nie potrzebujesz wyodrębniać danych z kolumny Quantity, ale chcesz zachować tę nazwę kolumny w zapytaniu, aby wykorzystać je w przyszłości.

A teraz chciałbyś zakomentować tylko kolumnę „Quantity”. Jak możemy to zrobić? Nie da rady!

Po zapisaniu każdej nazwy kolumny w nowej linii, jak pokazano poniżej, można ją łatwo skomentować bez ingerencji w resztę zapytania.

SELECT OrderID,
        Quantity,
        Status
FROM sql_practice.dummy_sales_data_v1


Aby zakomentować kolumnę Quantity, wystarczy dodać przed nią --, jak poniżej —

SELECT OrderID,
--      Quantity,
        Status
FROM sql_practice.dummy_sales_data_v1


Tym samym możesz zachować nazwę kolumny w zapytaniu, gdybyś potrzebował jej w przyszłości i nie pozyskiwać jej wartości z bazy danych.

Na przyszłość, gdy będziesz potrzebował uwzględnić wartości z tej kolumny w danych wyjściowych, wystarczy usunąć -- i zapytanie jest gotowe do użycia. Mniej roboty!

Jednak powyższe zapytanie nadal nie jest zgodne z najlepszymi praktykami. Już mówię dlaczego.

Załóżmy, że zamiast kolumny Quantity chcesz skomentować kolumnę Status. Jak najbardziej możesz to zrobić, ale spójrzmy na problem.

SELECT OrderID,
        Quantity,
--      Status
FROM sql_practice.dummy_sales_data_v1


Kod błędu: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘FROM sql_practice.dummy_sales_data_v1’ at line 4 0.016 sec

Pojawi się błąd z powodu przecinka po kolumnie Quantity.

I moja kolejna najlepsza praktyka rozwiązuje ten problem. Już wszystko mówię.

Rozpocznij każdą nazwę kolumny przecinkiem

Pisanie przecinka po nazwie kolumny to dość powszechna ludzka tendencja, ponieważ jest to bardziej intuicyjne. I absolutnie nie ma w tym nic złego.

Jednak podczas pisania zapytania SQL może to być problematyczne, zwłaszcza gdy zakomentujesz ostatnią kolumnę w instrukcji SELECT. Nawet jeśli dodasz nową kolumnę tuż przed zakomentowaną linią, istnieje większe prawdopodobieństwo, że zakończysz nazwę kolumny przecinkiem.

Po wpisaniu przecinka przed nazwą kolumny, jak pokazano poniżej, zapytanie SQL będzie bardziej czytelne i łatwiejsze w utrzymaniu.

SELECT OrderID
       , Quantity
       , Status
FROM sql_practice.dummy_sales_data_v1


W tym przypadku, nawet jeśli zakomentujesz kolumnę Status, na końcu kolumny Quantity nie pojawi się przecinek, więc nie musisz się martwić o błąd składni.

Kolejna zaleta tej praktyki — łatwość zlokalizowania brakującego przecinka

Jeśli zastosujesz się do pierwszej praktyki — zapisując każdą nazwę kolumny w nowej linii — wszystkie nazwy kolumn w zapytaniu zostaną wyrównane do lewej. Po wpisaniu przecinka na początku nazwy kolumny, wszystkie przecinki znajdą się w tej samej pionowej linii, jak widać w powyższym zapytaniu.

Znalezienie brakującego przecinka będzie bardzo łatwe i mniej obciążające dla oczu, ponieważ będziemy przewijać oczami w linii pionowej.

Na koniec, zobaczmy interesujący sposób na dodanie filtrowania w zapytaniu SQL.

Użycie WHERE 1=1

Jak wiadomo, w SQL można filtrować rekordy podczas pobierania danych przy pomocy klauzuli WHERE.

Dlaczego jednak uwzględniamy ją tylko wtedy, gdy jej potrzebujemy?

To znaczy, jak najbardziej możesz napisać klauzulę WHERE, nawet jeśli akurat w tym momencie jej nie potrzebujesz. Być może w przyszłości będziesz chciał dodać filtrowanie do niektórych kolumn.

Możesz po prostu dodać WHERE 1=1 w zapytaniu po instrukcji FROM, tak jak poniżej.

SELECT OrderID
       , Quantity
       , Status
FROM sql_practice.dummy_sales_data_v1
WHERE 1=1


Ten warunek to to samo co WHERE TRUE. Nie będzie to więc miało żadnego wpływu na wynik zapytania, ani nawet na czas jego wykonania.

Ale dzięki temu jest łatwiejszy do modyfikacji.

Na przykład, załóżmy, że chcesz uwzględnić filtrowanie w kolumnie Status. Wystarczy napisać warunek i dodać AND przed napisaniem go w klauzuli WHERE, podobnie jak tutaj:

SELECT OrderID
       , Quantity
       , Status
FROM sql_practice.dummy_sales_data_v1
WHERE 1=1
AND Status NOT IN ('Delivered')


I podobnie, jeśli chcesz usunąć jeden lub więcej warunków filtrowania, to wystarczy zakomentować ten wiersz w zapytaniu, nie martwiąc się o żadne końcowe AND.

W ten sposób zapytanie SQL będzie bardziej czytelne, łatwe do debugowania i modyfikacji.

Mam nadzieję, że spodobała Ci się ta krótka, ale skuteczna lektura i dowiedziałeś się czegoś o najlepszych sposobach pisania łatwych do odczytania i łatwych do modyfikacji zapytań SQL. Uważam, że te najlepsze praktyki bardzo się przydają, zwłaszcza gdy pracujesz w zespole i musisz wielokrotnie modyfikować ten sam kod.

Tym samym, reasumując, stosowanie najlepszych praktyk SQL przy pisaniu kodu sprawia, że stajesz się jeszcze lepszym programistą.

Wykorzystaj te praktyki już dzisiaj, aby w prosty sposób być w stanie tworzyć i obsługiwać zapytania SQL!

Dzięki za przeczytanie!

<p>Loading...</p>