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.
-
Pokaż wszystkie zajęcia razem z imieniem i nazwiskiem prowadzącego trenera.Oczekiwany wynik5 wierszy
-
Pokaż zajęcia, które zaczynają się po godzinie 17:00:00 (ostra nierówność).Oczekiwany wynik2 wierszepierwszy wiersz: Cardio HIIT · 18:30:00
-
Policz, ilu klientów ma karnet typu „Premium”.Oczekiwany wynik1 wierszpierwszy wiersz: 3
-
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
-
Pokaż klientów zapisanych na co najmniej dwoje różnych zajęć (imię, nazwisko i liczba różnych zajęć).Oczekiwany wynik4 wiersze
-
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.
4 · Zanim się pomylisz
Cztery pułapki w tym zadaniu
Rozwiń każdą z nich.
Granica godziny
WHERE godzina >= '17:00:00'Do wyniku trafiają też zajęcia dokładnie o 17:00 (Spinning), a polecenie mówi „po 17:00”.
WHERE godzina > '17:00:00'„Po” oznacza ostrą nierówność.
Zliczanie zapisów zamiast klientów
COUNT(*) przy pytaniu o liczbę różnych zajęć klientaTen sam klient może zapisać się na te same zajęcia kilka razy (inne daty), więc zawyżysz wynik.
COUNT(DISTINCT s.id_zajec)DISTINCT liczy różne wartości.
Remis w pytaniu „kto najwięcej”
„Klient zapisany na najwięcej zajęć.”Czterech klientów ma po dwoje różnych zajęć. LIMIT 1 wskazałby jednego z nich przypadkowo.
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
Import do bazy silownia_fitzone, która już istnieje.Błąd Table 'trenerzy' already exists i niekompletne dane.
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ć
- Czytaj polecenie jak opis wyniku: kolumny, tabele, warunek, kolejność.
- Złączenia buduj po jednym i kontroluj liczbę wierszy.
- Pusty wynik też może być poprawny, więc sprawdź go kontrolnym zapytaniem.
- 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ę →