Podstawy
4 godz. 8 min · Bazy Danych · Full-stack i Programowanie
Pierwszy rozdział wprowadza w historię powstania języka. Wspomnimy o standardach, wykorzystywanych wersjach i podzbiorach SQL’a. Zaraz potem wskoczymy w pierwsze poważne operacje, które pozwolą na pełny cykl tworzenia, zasilania bazy danych i wyciągnięcia z niej wybranych informacji. Rozwikłamy też tajemniczy akronim - CRUD.
Skoro potrafimy już tworzyć bazę i tabele, w które możemy wstawić nowe wiersze, dowiemy się więcej o bardzo ważnej funkcji bazy danych: weryfikacji danych. Zostaną zaprezentowane mechanizmy i techniki, które pomogą utrzymać spójność danych.
W kolejnych lekcjach znajduje się opis serca SQL’a, czyli polecenia wybierającego dane i możliwości i opcji z nim związanych. Od przekształcenia bazy danych w prosty kalkulator, aż do warunków filtrowania wybieranych danych (klauzulą WHERE), sortowania ich (klauzulą ORDER BY), czy ograniczania dużych zestawów wynikowych - w tym wsparcia do paginacji.
SQL jest językiem obsługi relacyjnych baz danych. Dlatego najwyższy czas, aby wspomnieć o relacjach i tym w jaki sposób rozszerzają one możliwości wyszukiwania danych oraz pozwalają zobrazować powiązania między danymi w bazie. Dowiesz się o różnych rodzajach połączeń między tabelami i jak te połączenia (zwane JOIN’ami) pozwalają wybrać to, czego potrzebujesz.
Kolejny rozdział dotyczy grupowania danych (wykorzystując klauzulę GROUP BY) i związanych z tym nowymi możliwościami. Dowiesz się tutaj też w jaki sposób agregować pogrupowane dane i jak takie zagregowane dane filtrować.
Przekonasz się, w jaki sposób można zapamiętywać trudne lub często wykonywane zapytania, wykorzystując do tego widoki (VIEWS) i jak można poprawić wydajność pobierania z nich danych. Przykładowo zastosujemy widoki zmaterializowane (MATERIALISED VIEWS). W tym rozdziale przećwiczysz też możliwość zapisywania danych przez widoki.
Z baz danych korzysta zwykle wielu użytkowników. Aby operacje, które wykonują na wspólnej bazie nie spowodowały nieoczekiwanych konsekwencji, wykorzystuje się mechanizm transakcji. W tym rozdziale wytłumaczymy Ci w jaki sposób użytkownicy mogą modyfikować równolegle te same dane. Tutaj też dowiesz się o poziomach izolacji transakcji i jak używać ich w różnych sytuacjach bazodanowych.
Przy pracy z większą ilością danych, bardzo szybko doświadczysz spowolnienia wykonywania zapytań. O tym jak je przyspieszyć dowiesz się właśnie w tym rozdziale. Zwiększanie wydajności zapytań jest tematem rozległym i zaawansowanym. Tutaj będziesz miał szansę poznać podstawy, w tym - po co są i jak używać indeksów, w jaki sposób analizować jak zapytania są wykonywane i jakie jeszcze są metody wydajniejszego odczytywania danych.
Kurs jest dla osób początkujących, rozpoczynających przygodę z bazami danych. Nie wymaga się znajomości SQL'a ani zaawansowanej wiedzy dotyczącej baz danych. Warto wiedzieć co to są relacyjne bazy danych. Dobrze mieć dostęp do ulubionego silnika bazy danych, ale nie jest to wymagane.
Już wiesz jak działa grupowanie w bazach danych i potrafisz
to uzyskać odpowiednim zapytaniem ale grupowanie danych jak
sam już pewnie zauważyłeś pozwala nam zrobić to co głównie nas
interesuje czyli zagregować dane pozwala to nam na wyciągnięcie
z danych które mamy zapisane w bazie wiele różnych
ciekawych informacji czy zależności do agregacji sql
daje nam sporo możliwości w postaci funkcji agregujących
o nich za chwilę powiem więcej a teraz wyczekiwane
przykładowe rozwiązania zadań samodzielnych mam tutaj stworzoną
tabelę z odpowiednimi kolumnami zobaczmy
co w niej się znajduje dokładnie
takie dane jak na przykładzie w takim razie jakby
miało wyglądać to nasze rozwiązanie chcieliśmy zobaczyć przedmioty
więc to na pewno będzie jedna
kolumna po której będziemy grupować i średnią ocen
z każdego z nich czyli interesuje nas średnia z kolumny ocena
wybieramy z naszej tabeli i
grupujemy to w kolumnie przedmiot w
tym wypadku funkcja average zwraca typ numeric o
określonej liczbie znaków po przecinku możemy
sobie to zaokrąglić jedną z metod będzie zamiana
wyniku funkcji average na typ numeric
4,2 oznacza że cztery cyfry całkowite
i dwa miejsca po przecinku i w ten sposób możemy to zaokrąglić
funkcje agregujące po angielsku aggregate functions
przetwarzają zestaw danych do pojedynczej wartości jedną
taką funkcję już użyłeś podczas pierwszej lekcji tych funkcji jest
znacznie więcej oto kilka bardzo często używanych sum czyli
funkcja która liczy sumę z zestawu wartości który
przy grupowaniu jest zestawem danych dla danej grupy w podanej
kolumnie average już użyta wcześniej liczy średnią która
zlicza ilość wystąpień wartości w danym zestawie danych i
funkcje max i min które podają odpowiednio maksymalną
i minimalną wartość dla danego zestawu danych funkcje
te używane są najczęściej wraz z grupowaniem i liczą wartości
odpowiednio dla każdej z grup zwracanej przez zapytanie można
jednak używać ich bez grupowania tak jak w tym przykładzie dotyczą
wtedy jednej grupy która obejmuje wszystkie wiersze zwrócone
przez zapytanie niekoniecznie oznacza to wszystkie
wiersze z tabeli bo oczywiście można filtrować
dane i wtedy funkcja liczy zwrócone wiersze
biorąc pod uwagę przefiltrowane dane na wyświetlonym
przykładzie nie ma filtrowania więc takie zapytanie zwróci ilość wszystkich
studentów z danej tabeli a
teraz do bazy grupowanie
danych bardzo często stosowane jest do uzyskania przeróżnych statystyk
i danych podglądowych zobaczymy ilu mamy bohaterów każdej
rasy będziemy chcieli zobaczyć rasę i zliczyć
postacie najlepiej do tego nadaje się identyfikator
nazwiemy sobie jakoś ładnie tą kolumnę wybieramy z
tabeli heroes i grupujemy po trasie w ten sposób
dostajemy piękne zestawienie dwóch elfów dwóch hobbitów trzech krasnoludów
i 4 człowieki jak wspomniałem już wcześniej można grupować
po kilku kolumnach daje to nam możliwość zejścia w bardziej szczegółowe
statystyki jeżeli do rasy dodajemy na przykład płeć
i wyświetlimy sobie też tą kolumnę tutaj mogę
ją wyświetlić nie muszę używać funkcji agregujących dlatego że będziemy po niej też
grupować i zobaczmy jak to wygląda żeby
lepiej to wyglądało posortuję po kolumnie race
wtedy lepiej widać że reprezentantów obu płci mamy
tylko u krasnoludów a teraz zadania do pracy własnej
wykorzystując tabelę z ekwipunkiem zlicz ile elementów
zbroi znajduje się w tej tabeli jako dodatkowe zadanie zastanów
się jak można by zagregować kolumnę przedmiot podpowiem że jest taka
możliwość spróbuj poszukać funkcji agregacyjnej która by to
nam umożliwiła i tak jak w poprzednich pracach swoje rozwiązania będziesz
miał szansę porównać z przykładowymi rozwiązaniami które przedstawię
na początku następnej lekcji
Agregacja danych · 4 min
-- Zapytanie wyświetlające ilości bohaterów per rasa
SELECT race, COUNT(hero_id) AS hero_count
FROM heroes
GROUP BY race;
-- Zapytanie dodatkowo grupujące po płci (ilość bohaterów dla każdej kombinacji rasy i płci)
SELECT race, gender, COUNT(hero_id) AS hero_count
FROM heroes
GROUP BY race, gender
ORDER BY race;