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.
Tak jak można filtrować dane w zapytaniu używając
klauzuli where tak samo można filtrować dane zgrupowane
jest to bardzo przydatne w takich sytuacjach gdzie chcemy
odfiltrować dane na podstawie wartości zagregowanych
na przykład patrząc na naszą bazę bohaterów jeśli chciałbyś
zobaczyć pięciu bohaterów z najmniejszą ilością ekwipunku
tak żeby ich doposażyć to filtrowanie grup świetnie
ci w tym pomoże a wartością po której byśmy filtrowali jest
zliczenie elementów ekwipunku dla każdego bohatera do
filtrowania grup służy klauzula having dla przykładu z
pierwszej lekcji gdzie liczyliśmy średnią ocen możemy
dorzucić odfiltrowanie słabych studentów w tej sytuacji zostaną
wybrani tylko ci studenci których średnia jest powyżej 3 zauważ
że w warunku klauzuli where użyłem funkcji agregującej a
nie aliasu średnia tak jak w przypadku klauzuli where
należy użyć całe wyrażenie a nie nazwę kolumny
wspomniałem na początku że having jest podobne w działaniu do where
klauzulę where można tutaj stosować także na
przykład jeśli chcielibyśmy wykluczyć jakiś przedmiot z liczonej
średniej można to zrobić dodając na koniec zapytania where
i warunek filtrujący odpowiednie przedmioty warunki w klauzuli
where sprawdzane są w pierwszej kolejności a następnie tak przefiltrowany
zestaw danych poddawany jest grupowaniu i agregacji do zgrupowania
i wyliczenia średnich będą brane oceny ze wszystkich
przedmiotów oprócz sql zobaczmy
jak filtrowanie grup możemy wykorzystać w naszej
bazie bohaterów a zatem do bazy załóżmy
że do nowej drużyny którą tworzymy w grze potrzebujemy już tylko
osiłka który świetnie się nada do noszenia dużych tarcz
i wyważania drzwi chcielibyśmy wiedzieć z jakiej rasy możemy skorzystać tak
żeby dopełnić różnorodności nowopowstającej drużyny pytanie w
takim razie jakie rasy mają średnią siłę powyżej wartości powiedzmy
15 zaczniemy od tego co chcemy wyciągnąć z
bazy czyli select race chcemy listę raz
i chcemy średnią siłę
zrzutujemy ją sobie na format miły dla oka czyli z dwoma miejscami
po przecinku grupujemy oczywiście po lasach i
chcemy przefiltrować i wybrać te grupy dla których średnia
siła jest większa niż 15 w wyniku dostajemy dwie
człowiek i krasnoludy mam nadzieję że teraz już jest
jasne w jaki sposób można filtrować pogrupowane dane więc
przejdźmy to w ramach pracy własnej sprawdź czy
są zdublowane elementy ekwipunku w tabeli z
ekwipunkiem napisz takie zadanie które wyciągnie
z bazy te pozycje które występują więcej niż raz
to jest bardzo często wykonywany rodzaj
zapytania w którym poszukujemy zdublowanych wartości
jak będziesz już miał gotowe rozwiązanie na początku następnej lekcji będziesz
miał okazję porównać je z zaproponowanym przeze mnie rozwiązaniem
tego zadania
https://space.eduweb.pl/files/various/Kursy/SQL/filtrowanie_rozwiazanie.pdf
Filtrowanie grup · 2 min
-- Wyświetlenie tych ras, dla których średnia siła bohaterów jest większa niż 15
SELECT race, CAST(AVG(strength) AS NUMERIC(4,2))
FROM heroes
GROUP BY race
HAVING AVG(strength) > 15;