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.
Do tej pory wyświetlaliśmy dane z naszej tablicy bohaterów
w różnych konfiguracjach kolumn ale zawsze były
to wszystkie rekordy jakie mamy w bazie zwykle odczytywać
wszystkich rekordów zajmuje to dużo pamięci a
także jest trudne do przeglądania czy analizy dlatego
w tej lekcji pokażę ci jak można filtrować dane uzyskane
z bazy do filtrowania danych
służy klauzula where i jeśli przerabiałeś
pierwszy rozdział to miałaś okazję zastosować proste filtrowanie za
pomocą tej klauzuli istnieje także klauzula having która
służy do filtrowania zgrupowanych danych ale o tym opowiem
w rozdziale o agregacji danych w tej lekcji
pójdziemy dalej i oprócz rozszerzonych warunków filtrowania przedstawię
też kilka cennych rad dotyczych klauzuli where
najpierw zobaczymy jak się formuuje
takie warunki można używać operatorów
porównania i a także łączyć poszczególne
warunki operatorami logicznymi innym
operatorem który jest przydatny jest operator in który
zwraca wartość true prawdy jeśli wartość wyrażenia po
jego lewej stronie znajduje się w zbiorze wartości po prawej stronie
co ciekawe zbiorem wartości może
być wyrażenie select musi tylko zwracać jedną
kolumnę wartości jeśli szukamy jakiegoś
słowa lub fragmentu w większym tekście operator
like pozwoli na wybranie rekordów zawierających szukany
ciąg znaków znak procenta na końcu oznacza
że sprawdzany tekst czy szukany tekst
znajduje się na początku wyrażenia znak
ten można umieścić umieścić też na początku tekstu
tego szukanego to będzie oznaczało szukanie wyrażenia
które kończy się tekstem szukanym a
teraz pytanie jak należałoby oznaczyć tekst który
chcemy znaleźć w środku wyrażenia zapauzuj wideo jeśli
potrzebujesz chwili żeby przemyśleć odpowiedź dobrze
myślałaś znaki procent w takim wypadku należy umieścić
na początku i na końcu tekstu szukanego jeszcze
jednym popularnym przykładem jest predykat between który
bada czy wartość wyrażenia znajduje się pomiędzy
dwoma podanymi wartościami warto
żebyś pamiętał że ten operator bada zależność wartości
w zbiorze obustronnie domknięty to znaczy tak
wartość przy between jak i wartość przy and będzie zawarta
w zbiorze szukanych wartości w
przypadku użycia not between czyli odwrotnego warunku
zbiór szukanych wartości będzie obustronnie
otwarty to znaczy że obie wartości nie będą uwzględnione
w szukanym zbiorze a
teraz do naszej bazy załóżmy że chcemy wybrać tylko
mężczyzn którzy mają manę większą niż
200 dla czytelności zacznę warunek query od nowej
linijki i w tym przypadku taki warunek jest
dosyć prosty where gender równa się m and
mana większa niż 200 mamy proszę bardzo mamy
czterech bohaterów którzy spełniają taki warunek a
teraz wybierzmy takich bohaterów którzy
są krasnoludami albo elfami
czyli race tu możemy zastosować operator
in elf i podać listę ras które
nas interesują proszę bardzo
zapytanie z operatorem in można też zapisać w formie
dłuższej z użyciem operatora or i
przyrównania efekt jest taki sam natomiast
jak widać ten zapis z operatorem in jest
po prostu czytelniejszy i prostszy chciałem jeszcze zademonstrować
ci użycie operatora like
na przykład wyszukajmy
postacie które w swoim nazwisku posiadają
sylabę an proszę bardzo mamy
dwóch takich bohaterów tutaj też można zaprezentować
pięknie jeżeli usunę ostatni
procent pamiętasz będzie oznaczało że interesuje
mnie końcówka nazwiska to powinno nam
dać tylko jeden rekord dlatego że tylko jedno
nazwisko spełnia takie warunki i tak właśnie jest
i ostatni przykład z użyciem predykatu
between będziemy chcieli wybrać tych bohaterów którzy
posiadają współczynnik siły pomiędzy
10 a 20 i
proszę bardzo tutaj też widać bardzo ładnie że ten
zakres zawiera w sobie podane wartości tak
czyli tutaj mika który ma 20 siły też
został zawarty w tym zakresie w tym zbiorze jedna
ciekawostka jeżeli chciałbym zobaczyć wszystkie
rekordy ale z jakichś powodów chciałbym uwzględnić
klauzulę where można to zrobić
po prostu wpisując tutaj wartość true
Filtrowanie danych z bazy · 4 min
-- Wybranie wszystkich rekordów z bazy
SELECT * FROM heroes;
-- Wybranie tylko mężczyzn posiadających więcej niż 200 many
SELECT * FROM heroes
WHERE gender = 'M' AND mana > 200;
-- Wybranie tylko elfów i krasnoludów (z użyciem operatora IN)
SELECT * FROM heroes
WHERE race IN ('elf', 'krasnolud');
-- Alternatywne wybranie tylko elfów i krasnoludów (z użyciem operatora OR)
SELECT * FROM heroes
WHERE race = 'elf' OR race = 'krasnolud';
-- Wybranie wszystkich postaci, których nazwisko kończy się na 'an'
SELECT * FROM heroes
WHERE last_name LIKE '%an';
-- Wybranie bohaterów, których siła jest między 10 a 20
SELECT * FROM heroes
WHERE strength BETWEEN 10 AND 20;
-- Wybranie wszystkich rekordów ale z użyciem klauzli WHERE
SELECT * FROM heroes WHERE True;