INF.03 · Bazy danych i SQL
Wypożyczalnia filmów, część 4: agregacje, zmiany i podzapytania
Ta część łączy wszystko, co umiesz: grupowanie, podzapytanie, modyfikację danych i zmianę struktury. Zmiana danych wymaga szczególnej ostrożności: najpierw SELECT, który pokazuje, co zostanie zmienione, i dopiero potem UPDATE albo DELETE.
- około 50 minut
- agregacje · UPDATE · DELETE · ALTER
- podzapytania
Po tej lekcji: policzysz średnie w grupach, użyjesz podzapytania z MAX i AVG, bezpiecznie zmienisz dane i dodasz kolumnę do tabeli.
1 · Sytuacja
Raport i porządki w bazie
Pracujesz na wypozyczalnia_filmow. Zadania 3 i 4 zmieniają dane, więc najpierw wykonaj SELECT z tym samym warunkiem i zapisz, ile wierszy wskazuje. Dopiero potem zamień go na UPDATE albo DELETE i porównaj komunikat o liczbie zmienionych wierszy.
Po zakończeniu ćwiczenia możesz przywrócić dane, importując plik jeszcze raz (usuń wcześniej bazę).
2 · Do wykonania
Zadania do wykonania
-
Policz średnią cenę wypożyczenia filmu w każdym gatunku (nazwa gatunku, średnia do dwóch miejsc).Oczekiwany wynik5 wierszy
-
Znajdź gatunek o najwyższej średniej cenie wypożyczenia (podzapytanie z
MAX,ALLalbo sortowanie zLIMIT 1).Oczekiwany wynik1 wierszpierwszy wiersz: Akcja -
Podwyższ cenę wypożyczenia wszystkich filmów Sci-Fi o 10% (
UPDATE). Najpierw sprawdźSELECT-em, ile filmów to obejmie.Na przykład 9.99 zł zmieni się na 10.99 zł.Oczekiwany wynikzmienionych wierszy: 3 -
Usuń wypożyczenia sprzed 2026-02-05 (
DELETE). Najpierw ten sam warunek wSELECT.Liczba usuniętych wierszy ma zgadzać się z wynikiem kontrolnegoSELECT.Oczekiwany wynikzmienionych wierszy: 4 -
Znajdź klientów, którzy wypożyczyli więcej filmów, niż wynosi średnia liczba wypożyczeń na klienta (przed usunięciem z zadania 4). Użyj podzapytania w
HAVING.Oczekiwany wynik6 wierszy -
Dodaj do tabeli Filmy kolumnę
liczba_kopii(liczba całkowita, obowiązkowa, domyślnie 1). SprawdźDESCRIBE Filmy;.ALTER TABLE Filmy ADD COLUMN liczba_kopii INT NOT NULL DEFAULT 1;Oczekiwany wynik6 kolumn w DESCRIBE
3 · Sprawdź się
Czy Twoje wyniki się zgadzają?
To szybka kontrola, a nie ocena. Liczba wierszy jest pierwszym sygnałem, że warunek albo złączenie działa tak, jak trzeba.
4 · Zanim się pomylisz
Cztery pomyłki przy zmianie danych
Rozwiń każdą z nich.
UPDATE bez WHERE
UPDATE Filmy SET cena_wypozyczenia = cena_wypozyczenia * 1.1;Wszystkie filmy zdrożały, a polecenie dotyczyło gatunku Sci-Fi.
UPDATE Filmy SET cena_wypozyczenia = ROUND(cena_wypozyczenia * 1.1, 2)
WHERE id_gatunku = 4;Warunek najpierw sprawdź SELECT-em.
DELETE bez sprawdzenia
DELETE FROM Wypozyczenia WHERE data_wypozyczenia < '2026-02-05';Usuwasz wiersze, których nie obejrzałeś. Bez kopii nie cofniesz zmiany.
SELECT * FROM Wypozyczenia WHERE data_wypozyczenia < '2026-02-05';
DELETE FROM Wypozyczenia WHERE data_wypozyczenia < '2026-02-05';SELECT pokazuje dokładnie te wiersze, które znikną.
Warunek „starsze niż rok 2025”
Wypożyczenia starsze niż rok 2025.Wszystkie wypożyczenia w bazie są z lutego 2026, więc żadne nie jest starsze niż 2025 i DELETE nic by nie usunął. Warunek musi pasować do danych.
Użyj granicy z danych, na przykład data_wypozyczenia < '2026-02-05'.Sprawdź zakres dat zapytaniem SELECT MIN(data_wypozyczenia), MAX(data_wypozyczenia).
ALTER bez sprawdzenia
ALTER TABLE Filmy ADD COLUMN liczba_kopii INT;Kolumna dopuszcza NULL, a polecenie wymagało wartości domyślnej 1.
ALTER TABLE Filmy ADD COLUMN liczba_kopii INT NOT NULL DEFAULT 1;
DESCRIBE Filmy;Po ALTER zawsze sprawdź strukturę.
5 · Sprawdź sam siebie
Zanim oddasz pracę
Ta lista odpowiada temu, co sprawdza komisja egzaminacyjna: poprawną bazę, poprawne wyniki i dokumentację.
Podsumowanie
Co warto zapamiętać
- Przy zmianie danych: sprawdź, zmień, sprawdź.
- Warunek
WHEREmusi pasować do danych w tabeli. - Podzapytanie w
HAVINGpozwala porównać grupę ze średnią całości. - Po
ALTER TABLEzawszeDESCRIBE.
Dalej na swoim koncie
Rozgrzewki, quiz i zadania są w biurku ucznia.
Teoria jest otwarta dla wszystkich. Żeby rozwiązywać zadania, zapisywać szkice i widzieć swój postęp, zaloguj się.
Zaloguj się →