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

  1. Policz średnią cenę wypożyczenia filmu w każdym gatunku (nazwa gatunku, średnia do dwóch miejsc).
    Oczekiwany wynik5 wierszy
  2. Znajdź gatunek o najwyższej średniej cenie wypożyczenia (podzapytanie z MAX, ALL albo sortowanie z LIMIT 1).
    Oczekiwany wynik1 wierszpierwszy wiersz: Akcja
  3. 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
  4. Usuń wypożyczenia sprzed 2026-02-05 (DELETE). Najpierw ten sam warunek w SELECT.Liczba usuniętych wierszy ma zgadzać się z wynikiem kontrolnego SELECT.
    Oczekiwany wynikzmienionych wierszy: 4
  5. 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
  6. 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.

Ta interakcja wymaga włączonego JavaScriptu.

4 · Zanim się pomylisz

Cztery pomyłki przy zmianie danych

Rozwiń każdą z nich.

UPDATE bez WHERE
Tak nie
UPDATE Filmy SET cena_wypozyczenia = cena_wypozyczenia * 1.1;

Wszystkie filmy zdrożały, a polecenie dotyczyło gatunku Sci-Fi.

Tak
UPDATE Filmy SET cena_wypozyczenia = ROUND(cena_wypozyczenia * 1.1, 2)
WHERE id_gatunku = 4;

Warunek najpierw sprawdź SELECT-em.

DELETE bez sprawdzenia
Tak nie
DELETE FROM Wypozyczenia WHERE data_wypozyczenia < '2026-02-05';

Usuwasz wiersze, których nie obejrzałeś. Bez kopii nie cofniesz zmiany.

Tak
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”
Tak nie
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.

Tak
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
Tak nie
ALTER TABLE Filmy ADD COLUMN liczba_kopii INT;

Kolumna dopuszcza NULL, a polecenie wymagało wartości domyślnej 1.

Tak
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ć

  1. Przy zmianie danych: sprawdź, zmień, sprawdź.
  2. Warunek WHERE musi pasować do danych w tabeli.
  3. Podzapytanie w HAVING pozwala porównać grupę ze średnią całości.
  4. Po ALTER TABLE zawsze DESCRIBE.

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ę →
Źródła i dalsza nauka