Dataczwartek, 13 sierpnia 2026 Czas18:09:26
← Materiały dla ucznia

Lekcja 1. Bazy danych do ćwiczeń — 5 kompletów + zapytania

Średni

Po co się tego uczymy?

Żeby uczeń miał gotowe, działające bazy danych do ćwiczeń w XAMPP i nie tracił czasu na przepisywanie tabel. Każdy zestaw jest małym, realistycznym systemem.

Teoria

To jest zestaw baz danych do samodzielnych ćwiczeń w domu i na lekcji. Każda baza ma gotowe tabele, klucze obce i dane testowe, dzięki czemu możesz od razu ćwiczyć SELECT, JOIN, agregacje, grupowanie, aktualizacje i proste operacje administracyjne.

Import w XAMPP/phpMyAdmin: pobierz plik, wejdź w phpMyAdmin, wybierz zakładkę Importuj i wskaż pobrany plik. Pliki są spakowane jako .gz, a phpMyAdmin przyjmuje je bez rozpakowywania. Jeżeli po pobraniu nazwa wygląda np. szkolny_sklep.sql_.gz i import nie przejdzie, zmień nazwę na szkolny_sklep.sql.gz.

Przykład z życia

Szkolny sklepik

Zakres: zamówienia, klienci, produkty, kategorie i pozycje zamówień.

Pobierz bazę: szkolny_sklep.sql_.gz

  1. Wyświetl wszystkie produkty z ceną większą niż 4 zł.
  2. Wyświetl produkty z kategorii „Artykuły szkolne”.
  3. Policz, ile produktów znajduje się w każdej kategorii.
  4. Pokaż łączną wartość magazynu dla każdego produktu (`cena * stan`).
  5. Wyświetl zamówienia razem z imieniem, nazwiskiem i klasą klienta.
  6. Policz wartość każdego zamówienia na podstawie pozycji.
  7. Pokaż trzy najdroższe produkty.
  8. Wyświetl klientów, którzy złożyli więcej niż jedno zamówienie.
  9. Pokaż produkty, których stan magazynowy jest mniejszy niż 25.
  10. Wyświetl zamówienia z dnia 2026-03-07.
  11. Pokaż sumę sprzedaży według statusu zamówienia.
  12. Wyświetl nazwy produktów, które pojawiły się w zamówieniach.
  13. Policz, ile sztuk każdego produktu sprzedano.
  14. Pokaż zamówienia anulowane wraz z nazwiskiem klienta.
  15. Wyświetl klientów bez zamówień.
  16. Znajdź najczęściej kupowany produkt.
  17. Pokaż średnią cenę produktów w każdej kategorii.
  18. Wyświetl produkty posortowane według kategorii i ceny malejąco.
  19. Pokaż klasy, które wygenerowały największą wartość zakupów.
  20. Dodaj zapytanie aktualizujące stan produktu po sprzedaży 2 sztuk wody.

Wypożyczalnia gier

Zakres: gry, platformy, klienci, wypożyczenia i zwroty.

Pobierz bazę: wypozyczalnia_gier.sql_.gz

  1. Wyświetl wszystkie gry razem z nazwą platformy.
  2. Pokaż gry aktualnie niedostępne.
  3. Wyświetl wypożyczenia niezwrócone.
  4. Policz liczbę gier na każdej platformie.
  5. Pokaż średnią cenę wypożyczenia za dzień według platform.
  6. Wyświetl klientów i liczbę ich wypożyczeń.
  7. Pokaż wypożyczenia po terminie, przyjmując datę 2026-04-15.
  8. Oblicz liczbę dni opóźnienia dla zwróconych po terminie gier.
  9. Pokaż sumę opłat każdego klienta.
  10. Wyświetl gry z gatunku „Wyścigi”.
  11. Pokaż najdroższą grę do wypożyczenia.
  12. Wyświetl klientów bez zaległych opłat.
  13. Pokaż gry wypożyczone przez Jana Kowalskiego.
  14. Policz liczbę wypożyczeń według gatunku gry.
  15. Wyświetl wypożyczenia wraz z kwotą przypisanej opłaty.
  16. Znajdź klientów, którzy wypożyczali grę więcej niż raz.
  17. Pokaż gry wydane po 2020 roku.
  18. Wyświetl opłaty nieopłacone.
  19. Przygotuj zapytanie zmieniające `dostepna` na 1 po zwrocie gry o id 3.
  20. Dodaj nowe wypożyczenie i sprawdź, czy gra powinna stać się niedostępna.

Przychodnia

Zakres: pacjenci, lekarze, specjalizacje, wizyty i recepty.

Pobierz bazę: przychodnia.sql_.gz

  1. Wyświetl lekarzy razem z nazwą specjalizacji.
  2. Pokaż wizyty zaplanowane.
  3. Pokaż wizyty zakończone z rozpoznaniem.
  4. Wyświetl pacjentów z Poznania.
  5. Policz liczbę lekarzy w każdej specjalizacji.
  6. Policz liczbę wizyt każdego lekarza.
  7. Wyświetl wizyty z receptami.
  8. Pokaż pacjentów, którzy mają więcej niż jedną wizytę.
  9. Wyświetl wizyty z dnia 2026-05-12.
  10. Pokaż lekarzy bez zaplanowanych wizyt.
  11. Policz wizyty według statusu.
  12. Wyświetl pacjentów urodzonych po 2000 roku.
  13. Pokaż recepty refundowane.
  14. Wyświetl terminy wizyt pacjenta Tomasza Kani.
  15. Pokaż najbliższe 3 wizyty według terminu.
  16. Wyświetl specjalizacje, do których przypisano co najmniej jedną wizytę.
  17. Pokaż pacjentów bez recept.
  18. Zmień status wizyty odwołanej na zaplanowaną.
  19. Dodaj nową receptę do wybranej zakończonej wizyty.
  20. Usuń pacjenta tylko wtedy, gdy nie ma żadnej wizyty — zapisz najpierw zapytanie sprawdzające.

Liga szkolna

Zakres: drużyny, zawodnicy, mecze, bramki i tabela wyników.

Pobierz bazę: liga_szkolna.sql_.gz

  1. Wyświetl zawodników każdej drużyny.
  2. Pokaż mecze z nazwami gospodarza i gościa.
  3. Policz liczbę bramek każdego zawodnika.
  4. Wyświetl klasy i liczbę drużyn w każdej klasie.
  5. Pokaż mecze zakończone remisem.
  6. Pokaż mecze, w których gospodarze zdobyli więcej niż 2 gole.
  7. Policz liczbę bramek każdej drużyny na podstawie tabeli `bramki`.
  8. Znajdź króla strzelców.
  9. Pokaż bramki strzelone po 60. minucie.
  10. Wyświetl drużyny bez zwycięstwa jako gospodarz.
  11. Pokaż zawodników z numerem większym niż 9.
  12. Policz średnią liczbę goli gospodarzy.
  13. Wyświetl mecze posortowane od najbardziej bramkowych.
  14. Pokaż zawodników, którzy strzelili co najmniej 2 gole.
  15. Policz liczbę meczów każdej drużyny jako gospodarz.
  16. Wyświetl terminarz z datami i parami drużyn.
  17. Pokaż bramki drużyny „Orły”.
  18. Dodaj nową drużynę i trzech zawodników.
  19. Zmień wynik wybranego meczu.
  20. Usuń bramkę wpisaną pomyłkowo i sprawdź ponownie klasyfikację strzelców.

Hotel praktykant

Zakres: pokoje, goście, rezerwacje, usługi dodatkowe i płatności.

Pobierz bazę: hotel_praktykant.sql_.gz

  1. Wyświetl wszystkie pokoje posortowane według ceny.
  2. Pokaż rezerwacje razem z nazwiskiem gościa i numerem pokoju.
  3. Policz liczbę rezerwacji dla każdego pokoju.
  4. Oblicz liczbę dób każdej rezerwacji.
  5. Oblicz koszt noclegu każdej rezerwacji (`liczba dób * cena_doba`).
  6. Pokaż usługi wykupione do każdej rezerwacji.
  7. Oblicz koszt usług dla każdej rezerwacji.
  8. Pokaż łączny koszt rezerwacji: nocleg + usługi.
  9. Wyświetl rezerwacje bez pełnej płatności.
  10. Pokaż gości, którzy rezerwowali więcej niż raz.
  11. Wyświetl pokoje wolne w dniu 2026-06-11.
  12. Pokaż rezerwacje potwierdzone.
  13. Policz przychód według metody płatności.
  14. Pokaż najdroższą usługę.
  15. Wyświetl pokoje na 2. piętrze.
  16. Pokaż średnią cenę doby według typu pokoju.
  17. Znajdź rezerwację o najwyższym łącznym koszcie usług.
  18. Dodaj nową usługę „Obiad” i przypisz ją do wybranej rezerwacji.
  19. Zmień status rezerwacji `nowa` na `potwierdzona`.
  20. Usuń usługę z rezerwacji i ponownie policz jej koszt.

Przykład importu i pierwszego zapytania

USE szkolny_sklep;

SELECT p.nazwa, k.nazwa AS kategoria, p.cena, p.stan
FROM produkty p
JOIN kategorie k ON k.id = p.kategoria_id
ORDER BY k.nazwa, p.cena DESC;

Komentarz i wyjaśnienie kodu

Każda baza zaczyna się od DROP DATABASE IF EXISTS i CREATE DATABASE, więc najlepiej importować ją jako osobny zestaw ćwiczeniowy. Zapytania są ułożone od prostego filtrowania po łączenie tabel, agregacje i modyfikację danych.

Ćwiczenie samodzielne

Wybierz jedną bazę, zaimportuj ją, wykonaj pierwsze 5 zapytań, a potem zapisz zrzuty wyników albo plik tekstowy z poleceniami SQL.

Zadania do pracy własnej

  1. Zaimportuj bazę szkolny_sklep i wykonaj zapytania 1–5.

  2. Wybierz dowolną bazę i wykonaj zapytania 6–15. Zwróć uwagę na aliasy tabel i funkcje agregujące.

  3. Wybierz dwie bazy i wykonaj zapytania 16–20. Tam pojawiają się aktualizacje, usuwanie, sprawdzanie zależności i bardziej egzaminacyjny sposób myślenia.

Typowe błędy

  • Importowanie kilku baz naraz bez sprawdzenia, która jest aktualnie wybrana w phpMyAdmin.
  • Brak aliasów przy zapytaniach z kilkoma tabelami.
  • Mylenie warunku połączenia ON z filtrem WHERE.

Nawiązanie do egzaminu zawodowego

To bezpośrednio ćwiczy INF.03: projektowanie relacji, import bazy, zapytania wybierające, łączenie tabel, grupowanie danych oraz proste operacje DML.