INF.03 · Bazy danych i SQL

Wypożyczalnia filmów, część 2: zapytania SELECT

Baza z poprzedniego zadania jest gotowa, więc czas jej użyć. To ćwiczenie utrwala SELECT na nowym, nieznanym wcześniej zestawie tabel. Zwróć uwagę na pułapkę, która pojawia się przy NULL.

  • około 35 minut
  • SELECT · LIKE · IS NULL · ORDER BY · LIMIT
  • baza: wypozyczalnia_filmow

Po tej lekcji: napiszesz zapytania z filtrem, wzorcem tekstu, sortowaniem i IS NULL na bazie, której wcześniej nie widziałeś.

1 · Sytuacja

Pytania klientów wypożyczalni

Pracujesz na bazie wypozyczalnia_filmow zaimportowanej w zadaniu 6. Zanim napiszesz zapytanie z NULL, przypomnij sobie różnicę między = NULL a IS NULL. Każde zapytanie buduj od najprostszego SELECT ... FROM ... i dopisuj warunki po jednym.

Jeśli liczba wierszy wygląda nierealistycznie (0 albo wszystkie), to sygnał błędu w warunku.

Tabela Filmy (12 rekordów)

id_filmutytulrok_produkcjiid_gatunkucena_wypozyczenia
1Kod nieśmiertelności202349.99
2Śmiech przez łzy202126.99
3Ostatnia misja202218.99
4Cichy ocean202037.49
5Galaktyczny patrol2024410.99
6Rodzinne wakacje201925.99
7Za horyzontem202237.99
8Bohaterowie ulicy202319.49
9Kraina zabawek202156.49
10Podniebny pościg2024110.49
11Miasto cieni202037.99
12Kosmiczna wyprawa201845.49
Gatunki: 1 Akcja, 2 Komedia, 3 Dramat, 4 Sci-Fi, 5 Animacja.

2 · Do wykonania

Zadania do wykonania

  1. Pokaż wszystkie filmy z gatunku Sci-Fi (gatunek 4): tytuł i rok.
    Oczekiwany wynik3 wiersze
  2. Pokaż filmy wyprodukowane po roku 2021, od najnowszego (przy tym samym roku po tytule alfabetycznie).
    Oczekiwany wynik6 wierszypierwszy wiersz: Galaktyczny patrol · 2024
  3. Znajdź filmy, których tytuł zawiera „kosmicz” (pierwsze zapytanie LIKE).
    Oczekiwany wynik1 wiersz
  4. Znajdź filmy, których tytuł zawiera „Galaktycz” (drugie zapytanie LIKE).
    Oczekiwany wynik1 wiersz
  5. Pokaż 3 najtańsze filmy do wypożyczenia (tytuł i cena).
    Oczekiwany wynik3 wierszepierwszy wiersz: Kosmiczna wyprawa · 5.49
  6. Pokaż wypożyczenia, które nie zostały jeszcze zwrócone (data_zwrotu IS NULL).To oczekiwany wynik, a nie błąd.
    Oczekiwany wynik4 wiersze
  7. Pokaż klientów, których e-mail jest w domenie onet.pl.
    Oczekiwany wynik2 wiersze

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

Trzy pomyłki w zapytaniach

Rozwiń każdą z nich.

= NULL zamiast IS NULL
Tak nie
SELECT * FROM Wypozyczenia WHERE data_zwrotu = NULL;

Zero wierszy, choć są cztery niezwrócone wypożyczenia. Porównanie z NULL przez = nigdy nie jest prawdziwe.

Tak
SELECT * FROM Wypozyczenia WHERE data_zwrotu IS NULL;

Brak wartości sprawdzasz przez IS NULL.

Polskie znaki i wielkość liter w LIKE
Tak nie
WHERE tytul LIKE 'Kosmiczna';

Zero wierszy. Bez % LIKE szuka pełnego tytułu, a tytuł to „Kosmiczna wyprawa”.

Tak
WHERE tytul LIKE '%kosmicz%';

Fragment tekstu zawsze z % z obu stron.

Sortowanie w złą stronę
Tak nie
ORDER BY rok_produkcji

Najstarsze filmy są pierwsze, a polecenie prosiło o najnowsze.

Tak
ORDER BY rok_produkcji DESC

„Od najnowszego” to sortowanie malejące.

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. IS NULL do braku wartości, nigdy = NULL.
  2. LIKE z % szuka fragmentu tekstu.
  3. ORDER BY ... DESC daje największe wartości jako pierwsze.
  4. Liczba wierszy to pierwsza kontrola.

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