Liceum Klasa II 45 minut PP: II.3d | s. 344

Lekcja 13: Bazy danych - filtrowanie, kwerendy, wyszukiwanie informacji

Podstawy SQL, zapytania SELECT, filtrowanie WHERE, sortowanie, laczenie tabel

📋 Podstawa programowa: II.3d
JOINSELECTSQLWHEREbazy danychfiltrowanie danychkwerendysortowanie
00:00
Wprowadzenie
5 min
00:05
Teoria
15 min
00:20
Cwiczenia
15 min
00:35
Podsumowanie
10 min
📚

Teoria

Czym jest SQL?

SQL (Structured Query Language) to standardowy jezyk do komunikacji z bazami danych. Umozliwia tworzenie tabel, wstawianie danych, wyszukiwanie informacji, modyfikowanie i usuwanie rekordow. SQL jest uzywany przez niemal wszystkie systemy relacyjnych baz danych.

SQL jest jezykiem deklaratywnym - mowisz bazie danych CO chcesz uzyskac, a nie JAK to zrobic. Np. "Pokaz mi wszystkich uczniow z klasy 2a, ktorzy maja srednia powyzej 4.0" - baza sama znajdzie najefektywniejszy sposob wykonania tego zapytania.

Kwerendy (Queries)

Kwerenda to zapytanie skierowane do bazy danych. W MS Access kwerendy mozna tworzyc w trybie graficznym (projektowania) lub w trybie SQL. Podstawowe typy kwerend:

  • Kwerenda wybierajaca (SELECT) - wyszukuje i wyswietla dane
  • Kwerenda aktualizujaca (UPDATE) - zmienia istniejace dane
  • Kwerenda dolaczajaca (INSERT) - dodaje nowe rekordy
  • Kwerenda usuwajaca (DELETE) - usuwa rekordy
  • Kwerenda tworzaca tabele (CREATE TABLE) - tworzy nowa tabele

Instrukcja SELECT - wyszukiwanie danych

Podstawowa skladnia zapytania SELECT:

SELECT kolumna1, kolumna2, ...
FROM nazwa_tabeli
WHERE warunek
ORDER BY kolumna ASC|DESC;

Przyklady:

-- Wszystkie dane z tabeli Uczniowie
SELECT * FROM Uczniowie;

-- Tylko imiona i nazwiska
SELECT Imie, Nazwisko FROM Uczniowie;

-- Uczniowie z klasy 2a
SELECT * FROM Uczniowie WHERE Klasa = '2a';

-- Uczniowie ze srednia powyzej 4.0, posortowani malejaco
SELECT Imie, Nazwisko, Srednia
FROM Uczniowie
WHERE Srednia > 4.0
ORDER BY Srednia DESC;

Operatory w klauzuli WHERE

  • =, <>, <, >, <=, >= - operatory porownania
  • AND - oba warunki musza byc spelnione
  • OR - przynajmniej jeden warunek musi byc spelniony
  • NOT - negacja warunku
  • BETWEEN x AND y - wartosc w przedziale (wlacznie)
  • IN ('a', 'b', 'c') - wartosc z listy
  • LIKE 'wzorzec' - dopasowanie wzorca (% = dowolne znaki, _ = jeden znak)
  • IS NULL / IS NOT NULL - sprawdzenie pustej wartosci

Przyklady filtrow:

-- Uczniowie z klasy 2a lub 2b
SELECT * FROM Uczniowie WHERE Klasa IN ('2a', '2b');

-- Uczniowie, ktorych nazwisko zaczyna sie na "K"
SELECT * FROM Uczniowie WHERE Nazwisko LIKE 'K%';

-- Uczniowie urodzeni miedzy 2008 a 2010 ze srednia > 4.0
SELECT * FROM Uczniowie
WHERE Data_urodzenia BETWEEN '2008-01-01' AND '2010-12-31'
AND Srednia > 4.0;

Funkcje agregujace

Funkcje obliczajace wartosci dla grup rekordow:

  • COUNT(*) - liczba rekordow
  • SUM(kolumna) - suma wartosci
  • AVG(kolumna) - srednia
  • MIN(kolumna) - minimum
  • MAX(kolumna) - maximum
-- Liczba uczniow w kazdej klasie
SELECT Klasa, COUNT(*) AS Liczba_uczniow
FROM Uczniowie
GROUP BY Klasa;

-- Srednia ocen z kazdego przedmiotu
SELECT Przedmioty.Nazwa, AVG(Oceny.Ocena) AS Srednia_ocen
FROM Oceny
JOIN Przedmioty ON Oceny.ID_przedmiotu = Przedmioty.ID
GROUP BY Przedmioty.Nazwa
HAVING AVG(Oceny.Ocena) > 3.5;

Laczenie tabel (JOIN)

JOIN laczy dane z dwoch lub wiecej tabel na podstawie wspolnego pola (klucza):

  • INNER JOIN - tylko rekordy majace dopasowanie w obu tabelach
  • LEFT JOIN - wszystkie rekordy z lewej tabeli + dopasowane z prawej
  • RIGHT JOIN - wszystkie rekordy z prawej tabeli + dopasowane z lewej
-- Oceny uczniow z nazwami przedmiotow
SELECT Uczniowie.Imie, Uczniowie.Nazwisko,
       Przedmioty.Nazwa, Oceny.Ocena
FROM Oceny
INNER JOIN Uczniowie ON Oceny.ID_ucznia = Uczniowie.ID
INNER JOIN Przedmioty ON Oceny.ID_przedmiotu = Przedmioty.ID
ORDER BY Uczniowie.Nazwisko;

Kwerendy w Microsoft Access

Access oferuje graficzny kreator kwerend:

  1. Tworzenie → Projekt kwerendy
  2. Dodaj tabele (okno "Pokaz tabele")
  3. Przeciagnij pola do siatki kwerendy
  4. Ustaw kryteria (wiersz "Kryteria")
  5. Ustaw sortowanie
  6. Uruchom kwerendy (przycisk Uruchom lub Ctrl+R)
  7. Przelacz na widok SQL, aby zobaczyc wygenerowany kod
✏️

Zadania

Latwe

Zadanie 1: Podstawowe zapytania SQL

Uzyj bazy danych "Dziennik szkolny" z lekcji 12 (lub stworz nowa). Napisz zapytania SQL: (a) wyswietl wszystkich uczniow posortowanych alfabetycznie, (b) wyswietl uczniow z klasy "2a", (c) policz ilu jest uczniow w kazdej klasie, (d) znajdz ucznia z najwyzsza srednia. Wykonaj zapytania w Access lub na stronie db-fiddle.com.

Pokaz przykladowe rozwiazanie
-- a) Wszyscy uczniowie alfabetycznie
SELECT * FROM Uczniowie ORDER BY Nazwisko, Imie;

-- b) Uczniowie z klasy 2a
SELECT * FROM Uczniowie WHERE Klasa = '2a';

-- c) Liczba uczniow w klasach
SELECT Klasa, COUNT(*) AS Liczba
FROM Uczniowie GROUP BY Klasa;

-- d) Uczen z najwyzsza srednia
SELECT Imie, Nazwisko, Srednia
FROM Uczniowie
ORDER BY Srednia DESC
LIMIT 1;
Srednie

Zadanie 2: Zapytania z filtrami i laczeniem tabel

Napisz zapytania SQL: (a) wyswietl imie, nazwisko i wszystkie oceny uczniow z matematyki (JOIN), (b) wyswietl uczniow, ktorzy maja przynajmniej jedna ocene 6 (DISTINCT), (c) oblicz srednia ocene z kazdego przedmiotu, (d) znajdz przedmioty, w ktorych srednia ocen jest nizsza niz 3.5 (HAVING), (e) wyswietl uczniow, ktorych nazwisko zaczyna sie na "K" lub "M" (LIKE, OR).

Srednie

Zadanie 3: Kwerendy w Access - tryb graficzny i SQL

W Microsoft Access stworz 4 kwerendy uzywajac trybu graficznego (Projektowanie): (a) lista uczniow z ocenami z wybranego przedmiotu, (b) raport srednich ocen uczniow (z polem obliczeniowym), (c) kwerenda parametryczna - po uruchomieniu pyta o nazwe klasy i wyswietla uczniow, (d) kwerenda krzyżowa: wiersze = uczniowie, kolumny = przedmioty, wartosci = oceny. Dla kazdej kwerendy sprawdz widok SQL.

Trudne

Zadanie 4: Rozbudowane zapytania SQL

Napisz zaawansowane zapytania SQL: (a) wyswietl 3 najlepszych uczniow z kazdej klasy (podzapytanie), (b) znajdz uczniow, ktorzy nie maja zadnej oceny z matematyki (LEFT JOIN + IS NULL), (c) stworz zapytanie aktualizujace - podnieś o 0.5 wszystkie oceny uczniow klasy 2a z biologii, (d) stworz widok (VIEW) "Raport_ocen" laczacy dane ucznia, przedmiotu i oceny. Przetestuj na db-fiddle.com.

🎥

Materialy wideo

Edukator - jak wyszukiwać w bazie danych
Biblioteka Główna UKEN
Filtrowanie według określonych zapytań za pomocą sp_QuickieStore
Erik Darling (Erik Darling Data)
🎧

Podcasty

✔️

Quiz - sprawdz sie!

📜

Podstawa programowa

← Lekcja 12: Bazy danych - pojecia Lekcja 14: Powtorzenie i sprawdzian →