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.
Teraz kiedy mamy stworzoną tabelę z ekwipunkiem i powiązaną
kluczem z tabelą bohaterów czas wykorzystać nowo
zdobyte możliwości w tej lekcji zobaczysz w jaki sposób
można wykorzystać sql do wyciągania powiązanych
danych to znaczy wyciągania danych z obu tabel jednocześnie
a teraz praktyczny przykład jak to się robi przejdźmy
teraz do do wykorzystania łączenia baz żeby wyciągnąć
potrzebne nam informację z tabel do naszej aplikacji wyobrażamy
sobie że takim typowym zapytaniem byłoby wyciągnięcie danych bohatera
i całego jego ekwipunku tak żeby można było wyświetlić
co nasz bohater posiada tudzież w co jest ubrany najpierw
pomyślmy co chcemy zobaczyć jakie dane chcemy wyciągnąć
na pewno to będzie imię i nazwisko bohatera żeby było wiadomo
czyj ekwipunek oglądamy a także chcemy zobaczyć jakie
elementy ekwipunków posiada czyli nazwę i typ na razie tylko
tyle będziemy na pewno wyciągać dane z tabeli
heroes bo stamtąd potrzebujemy imię i nazwisko
natomiast ekwipunek będziemy wyciągać z tabeli equipment no
i teraz musimy je jakoś połączyć do tego służy klauzula join
pełna nazwa jest inner join z tym że inner jest słowem
pomocniczym ukazującym jakiego typu jest to joy natomiast samo
słowo join oznacza że jest to inner join i łączymy
tabelę equipment teraz łączenie tabeli jak już mówiłem polega
na dopasowaniu rekordów z jednej i z drugiej wedle jakiegoś warunku
i ten warunek możemy tutaj sprecyzować będziemy łączyć te rekordy
na podstawie kolumn hero id w jednej i w drugiej tabeli i interesują
nas dane dla których w tabeli heroes hero id
wartość równa się kolumnie hero id w tabeli
equipment zobaczmy jak to będzie wyglądało proszę
to jest cała lista naszych bohaterów którzy posiadają jakieś elementy broni
czy uzbrojenia teraz widać że niektóre osoby mają po
kilka rzeczy natomiast ponieważ nie uporządkowaliśmy tych danych to nie jest to
takie oczywiste dodamy do tego sortowanie po nazwisku
w ten sposób mamy zgrupowane rekordy
dotyczące jednego bohatera i widać tutaj
jakiego typu ekwipunek taki bohater
posiada wspominałem też o innym
typu łączenia czyli alter join lewym lub prawym lub
pełnym spróbujmy podłączyć tutaj naszą
tabelę bohaterów z ekwipunkiem z tym że
chcielibyśmy zobaczyć wszystkie elementy ekwipunku i ewentualnie
połączone z elementami ekwipunku postacie
ponieważ chcemy zobaczyć cały ekwipunek dlatego tutaj
w ramach joina użyjemy right
join tak chcemy wyciągnąć wszystkie rekordy z
tabeli po prawej stronie joina czyli z tabeli equipment w tym wypadku
nasz warunek nadal pozostaje taki sam łączymy
po kolumnie hero id co pozwoli dla tych bohaterów którzy
mają jakiś ekwipunek wyświetlić odpowiednie wiersze
natomiast dla tych którzy nie mają albo w tym
przypadku dla ekwipunku który nie jest przypisany do żadnego bohatera
będzie to wyglądało troszkę inaczej
Wybranie danych z połączonych tabel · 1 min
-- Wybieranie danych o ekwipunku bohaterów (z dwóch połączonych tabel)
SELECT first_name, last_name, equipment_name, equipment_type
FROM hereos
JOIN equipment ON heroes.hero_id = equipment.hero_id
ORDER BY last_name;
-- Wybranie wszystkich elementów ekwipunku, nawet jeśli nie mają przypisania do żadnej postaci
SELECT first_name, last_name, equipment_name, equipment_type
FROM hereos RIGHT JOIN equipment ON heroes.hero_id = equipment.hero_id
ORDER BY last_name;