INF.03 · Bazy danych i SQL

Siłownia FitZone: zapytania w stylu egzaminacyjnym

Siłownia FitZone potrzebuje systemu do zarządzania zajęciami grupowymi. Dostajesz gotową bazę i sześć poleceń. Pracujesz tak jak na egzaminie: import, kontrola struktury, zapytania etapami i dokumentacja zrzutami.

  • około 45 minut
  • zadanie w stylu egzaminacyjnym
  • baza: silownia_fitzone

Po tej lekcji: wykonasz komplet zapytań w warunkach egzaminacyjnych i udokumentujesz każde zrzutem ekranu.

1 · Sytuacja

Scenariusz i przygotowanie

Zaimportuj bazę silownia_fitzone (cztery tabele: Trenerzy, Zajecia, Klienci, Zapisy). Pobierzesz ją z sekcji „Pliki do pracy”.

Uwaga: jeśli ta baza istnieje już z wcześniejszej lekcji, usuń ją poleceniem DROP DATABASE silownia_fitzone; przed importem, żeby uniknąć błędu „table already exists”.

2 · Do wykonania

Zapytania do wykonania

Dla każdego zapytania zrób zrzut ekranu. Oczekiwane liczby wierszy podano przy zadaniach, a pełne rozwiązania znajdziesz dopiero po wykonaniu pracy samodzielnie.

  1. Pokaż wszystkie zajęcia razem z imieniem i nazwiskiem prowadzącego trenera.
    Oczekiwany wynik5 wierszy
  2. Pokaż zajęcia, które zaczynają się po godzinie 17:00:00 (ostra nierówność).
    Oczekiwany wynik2 wierszepierwszy wiersz: Cardio HIIT · 18:30:00
  3. Policz, ilu klientów ma karnet typu „Premium”.
    Oczekiwany wynik1 wierszpierwszy wiersz: 3
  4. Pokaż liczbę zapisów na każde zajęcia (od największej liczby, przy remisie po nazwie).
    Oczekiwany wynik5 wierszypierwszy wiersz: Trening siłowy · 3
  5. Pokaż klientów zapisanych na co najmniej dwoje różnych zajęć (imię, nazwisko i liczba różnych zajęć).
    Oczekiwany wynik4 wiersze
  6. Pokaż klientów z karnetem Premium, którzy zapisali się na zajęcia „Trening siłowy”.
    Oczekiwany wynik3 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

Cztery pułapki w tym zadaniu

Rozwiń każdą z nich.

Granica godziny
Tak nie
WHERE godzina >= '17:00:00'

Do wyniku trafiają też zajęcia dokładnie o 17:00 (Spinning), a polecenie mówi „po 17:00”.

Tak
WHERE godzina > '17:00:00'

„Po” oznacza ostrą nierówność.

Zliczanie zapisów zamiast klientów
Tak nie
COUNT(*) przy pytaniu o liczbę różnych zajęć klienta

Ten sam klient może zapisać się na te same zajęcia kilka razy (inne daty), więc zawyżysz wynik.

Tak
COUNT(DISTINCT s.id_zajec)

DISTINCT liczy różne wartości.

Remis w pytaniu „kto najwięcej”
Tak nie
„Klient zapisany na najwięcej zajęć.”

Czterech klientów ma po dwoje różnych zajęć. LIMIT 1 wskazałby jednego z nich przypadkowo.

Tak
Zapytaj o klientów z co najmniej dwojgiem zajęć i pokaż wszystkich.

Sprawdź, czy pytanie ma jednoznaczną odpowiedź.

Praca na starej bazie o tej samej nazwie
Tak nie
Import do bazy silownia_fitzone, która już istnieje.

Błąd Table 'trenerzy' already exists i niekompletne dane.

Tak
DROP DATABASE silownia_fitzone; i import od nowa.

Zawsze zaczynaj od czystej bazy.

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. Czytaj polecenie jak opis wyniku: kolumny, tabele, warunek, kolejność.
  2. Złączenia buduj po jednym i kontroluj liczbę wierszy.
  3. Pusty wynik też może być poprawny, więc sprawdź go kontrolnym zapytaniem.
  4. Dokumentuj pracę zrzutami i zapisanym plikiem.

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