Jak i po co uczyć się SQL? Czym jest język SQL? Czy warto uczyć się SQL w pierwszej kolejności?
20.02.2022
Ciężko sobie wyobrazić, że coś może nam przynieść dużo korzyści w stosunkowo szybkim czasie. Warto zauważyć, że w moim przypadku tak było z SQL’em. Jak i po co uczyć się SQL? Czy SQL jest dla Ciebie?
Sprawę prawdopodobnie Ci wyjaśnię w moim krótkim filmiku.
Skąd pomysł na wpis - jak i po co się uczyć SQL?
Zaczynając, temat na dzisiejszy wpis powstał na jednym z ostatnich wietrznych spacerów z psem, podczas którego wpadło mi do głowy ciekawe pytanie:
“Co dało mi najwięcej, w najkrótszym czasie.”
Nie, nikt nie pytał…, Tak po prostu, rzuciłem sobie hasło i postanowiłem sobie na nie odpowiedzieć. Nie trwało to długo. Odpowiedź przyszła jakby z automatu… SQL.
Po co uczyć SQL?
Po pierwsze język ten prawdopodobnie zmienił mój sposób pracy. Nauczyłem się ściągać wybrane dane szybciej, bez żmudnego wyszukiwania danych z różnych programów za każdym razem Niewątpliwie, dał również dużo satysfakcji, dzięki któremu rozwiązałem mnóstwo problemów ad-hock, w rezultacie przyspieszając pracę innym. Wygląda na naukę w stylu: win-win.
Jak zacząć pracę z językiem i jak się uczyć SQL?
Tak jak wspomniałem w moim filmowym wstępie, SQL wymaga bazy danych. W środowisku biznesowym są to przede wszystkim serwery w chmurze, fizycznym serwerze, czy w programach jak na przykład Microsft Access.
Istotnie ilość możliwości jest całkiem spora. Choć problem się robi z udostępnieniem tego użytkownikowi. Wydaje się, że najłatwiej przy braku możliwości ćwiczyć SQL’a niczym główna bohaterka serialu “Gambit Królowej”, najprościej w głowie. Tak w skrócie wyglądały moje pierwsze kroki z SQL’em. Nie miałem dostępu do żadnego serwera. Tobie daję tą możliwość. W podsumowaniu, wrzucam stronę szkoleniową, która pozwala popraktykować na prostym serwerze.
Teoria i praktyka języka bazodanowego SQL
Jest wiele platform do obsługi tego języka i wiele odnóg, które nieznacznie się od siebie różnią. Moim dzisiejszym zadaniem jest nauczenie Cię podstawowego schematu w SQL’u na przykładach! Jak zatem zacząć swoją przygodę z SQL? Oczywiście na przykładach!
Zacznijmy od podstawowej linijki kodu.
Podstawowa składnia SQL to:
Select * from nazwa_tabeli
gdzie:
Select – z angielskiego “wybierz” – słowo otwierające każde zapytanie (kwerendę)
* – oznacza wszystkie elementy danego zbioru, docelowo będziemy zastępować konkretnymi kolumnami
from nazwa_tabeli – pobierz z/skąd i definiujemy naszą bazę z której chcemy pobrać nasze dane.
Prosty przykład użycia SQL
Zacznijmy od zadania praktycznego.
Pracujemy w firmie, która zajmuję sprzedażą jedzenia dla zwierząt. Załóżmy, że mamy bazę o nazwie: Spis_transakcji (zdjęcie poniżej), z której chcemy pobrać wszystkie dane. Robiąc to przy pomocy SQL, wyglądałoby to mniej prawdopodobnie tak:
Select * from spis_transakcji
i otrzymujemy naszą bazę:
W powyższej bazie w wyniku mamy 11 kolumn, i 10 wirtualnych transakcji. Podczas pracy z SQL głównie chodzi o to, aby zaczytywać tylko to czego aktualnie potrzebujemy. Ze względu na obciążenie pliku, który byśmy generowali kwerenda: “Select * from spis_transakcji” jest nieefektywna, bez wątpienia nie powinna być przez nas zbyt często stosowana. Dlaczego? Po to, aby nie zaciągać całej bazy za każdym razem. Ze względu na to, że nasze bazy mogą zawierać nawet kilka milionów rekordów ściąganie za każdym razem całej bazy nie będzie optymalnym sposobem pracy z danymi.
Reasumując, wybierając najbardziej leniwy sposób będziemy ściągać gigantyczne pliki prawdopodobnie w dłuższym czasie. Nie o to w tym chodzi.
No więc jak uczyć się SQL?
Warto ograniczać bazy, na początku nawet wyświetlając nie wszystkie wyniki naszych kwerend. Poniżej zaprezentuję przykład, w wyniku, którego wyświetlimy tylko 3 pierwsze wiersze.
Select * from spis_transakcji
limit 3
Select konkretny element, czyli pobieramy z SQL to co chcemy
Pracując w SQL jeszcze bardziej chodzi o ograniczanie elementów. W tym celu maksymalnie zmniejszamy ilość pobieranych informacji. W przeciwieństwie do Excela, gdzie lubimy widzieć gigantyczny zbiór, w tym języku chodzi o to, aby ten zbiór był jak najmniejszy.
Jeżeli byśmy chcieli zobaczyć wybrane produkty sprzedane w grupie, wyświetlić cenę zakupu i cenę sprzedaży i ilość. Wystarczyło by napisać:
Select Produkt, Grupa, Cena_Zakupu, Cena_Sprzedazy, Ilość from spis_transakcji
limit 5
gdzie:
Produkt, Grupa, (…) to nazwy kolumn naszej tabeli
W następstwie otrzymujemy:
Ćwiczenie
Załóżmy, że chcesz wiedzieć, który Klient, z którego Regionu i jaki Produkt zamówił i jaka była Cena_Sprzedazy tego produktu. Pozostałe informację Cię nie interesują!
Jakbyś to zrobił/a?
Rozwiązanie
Select Klient, Region, Produkt, Cena_Sprzedazy from spis_transakcji
limit 5
Jak wprowadzić warunki w SQL
Po wstępie, w których zapoznałeś się z podstawową strukturą pobierania danych, czuję, że możemy pójść krok dalej. Zaczniemy pobierać wybrane informację po zdefiniowaniu konkretnych warunków. Do tego służy słowo WHERE, z angielskiego “gdzie” i tak wpisując np.
Select Klient, Region, Produkt, Cena_Sprzedazy from spis_transakcji
where Klient=’Klient2′
i otrzymujemy taką bazę:
W której wybraliśmy dane tylko dla jednego konkretnego klienta. Załóżmy, że chcielibyśmy ściągnąć dane dla dwóch klientów (Klient1 i Klient2) moglibyśmy użyć warunku logicznego, w tym wypadku używając słowa OR (z angielskiego “LUB”) lub zagnieździć informację w grupie przy pomocy słowa IN ( z angielskiego “W”).
Rozwiązanie 1
Select Klient, Region, Produkt, Cena_Sprzedazy from spis_transakcji
where Klient=’Klient2′ or Klient=’Klient1′
Rozwiązanie 2
Select Klient, Region, Produkt, Cena_Sprzedazy from spis_transakcji
where Klient in (‘Klient2’,‘Klient1’)
Niezależnie od wyboru, w wyniku otrzymalibyśmy:
Więcej warunków przy wprowadzeniu zapytania w SQL
Powyżej wykonaliśmy operację dla jednej kolumny. Zaletą SQL jest to, że możemy również łączyć i mieszać warunki.
Załóżmy, że chcieliśmy otrzymać tabelę ze wszystkimi produktami, cenami sprzedaży i ilości, dla dostawcy “Twój Pies”, w których cena sprzedaży była wyższa od 1000 zł.
Kwerenda dla tego zapytania wyglądała by mniej więcej tak:
Select Dostawca, Produkt, Cena_Sprzedazy, Ilość from spis_transakcji
where Dostawca=’Twój Pies’ and Cena_Sprzedazy>1000
Wynik zapytania byłby następujący:
Dlaczego używamy SQL ?
Wstępnie podsumowując, SQL specjalnie niczym się nie różni od “bazy danych” używanej w zwykłym Excelu. Jak może zauważyłeś, wszystkie te operacje, które wprowadzaliśmy polegały na wyborze konkretnych danych i zastosowaniu filtrów. Kiedy mamy małe bazy, trzymane chociażby w Excelu, operacje na nich są bardzo proste.
Jednak prawdopodobnie schody się robią, kiedy mamy kilkanaście niepotrzebnych kolumn i kilkadziesiąt tysięcy wierszy. Niewątpliwie, wtedy Excel staje się naszym największym wrogiem. W wyniku, coś, co było proste staje się przekleństwem. W rezultacie program może się przywiesić. Uwierz mi, że w przypadku dużego pliku, zakładanie filtra na wybrane dane i kopiowanie ich w Excelu, to istne piekło. To właśnie po to zaczynamy się uczyć SQL.
W tym celu dane ładujemy do baz, z których każdy sobie może wygodnie zaciągnąć, tylko to co faktycznie chce i czego potrzebuję. W efekcie, w trakcie odświeżania danych możesz iść zrobić sobie pyszną kawę.
SQL case biznesowy - zrób to sam
Załóżmy, że jesteś analitykiem w firmie zajmującej się sprzedażą w czterech regionach Polski (W,Z,P,PP). Twoim początkowym zadaniem jest nauczyć się i opanować SQL.
W pierwszym tygodniu pracy dostajesz polecenie zapoznania się z bazą sumującą transakcje o nazwie Transakcje_Regiony za lata 2019-2021. Dostajesz do rozwiązania 3 zadania:
a) W związku z tym, wyciągnij wszystkie transakcje z miesięcy wakacyjnych (lipiec-sierpień), pomiń kolumnę Region.
b) Załóżmy, że zostajesz poproszony o przygotowanie transakcji powyżej 150 000, za rok 2019 dla Regionu Wschodniego (W). Pomiń w prezentacji kolumnę Region i Rok. Tylko Miesiąc i Wartość.
c) Kończąc, przygotuj raport transakcji z kwartału 3 za rok 2020 dla Regionu Południowego (PP).
ROZWIĄZANIA ZNAJDZIESZ NA SAMYM KOŃCU STRONY
Baza Transakcje_Regiony wygląda nastepująco:
Podsumowanie - jak i po co uczyć się SQL i co dalej?
- Group by – grupowanie elementów
- Sum, count, min, max, avg – pozwalające na proste kalkulacje
- poznanie dalszych operatorów logicznych jak np. between, like, rozbudowane kwerendy z OR i AND z nawiasami etc.
- Join’y – łączenie kilku tabel
Rozwiązania Case Bizesowy
Select Miesiąc, Rok, Wartość
from Transakcje_Regiony
where Miesiąc >= 7 And Miesiąc <= 8
lub
Select Miesiąc, Rok, Wartość
from Transakcje_Regiony
where Miesiąc in (‘7′,’8’)
Prezentacja rezultatu:
Select Miesiąc, Wartość
from Transakcje_Regiony
where Region = ‘W’ and Rok=2019 and Wartość > 150000
Prezentacja rezultatu:
Select Rok, Miesiąc, Region, Wartość
from Transakcje_Regiony
where Miesiąc >= 7 and Miesiąc <=9 and Rok = 2020 and Region = ‘PP’
Prezentacja rezultatu: