Ćwiczenia w PHP i SQL - Portal Sakila

Niniejszy wpis jest pewnego rodzaju "instrukcją" prowadzącą do zbudowania portalu obsługującego wypożyczalnię wideo - Sakilę. Portal ten bazuje na testowej bazie danych Sakila (tutaj zip), z której korzystam podczas zajęć związanych z bazami danych. Przy każdej liście zadań znajduje się zaznaczenie, które metody spośród CRUD są implementowane w zadaniach na liście.

(Lista jest w trakcie tworzenia. Data ostatniej aktualizacji: 02.11.2023.)

Lista 1: wyświetlanie informacji podstawowych (cRud)

  1. Utwórz plik index.php wyświetlający listę filmów w bazie. Każdy film powinien być linkiem do pliku film.php, wysyłającym metodą GET (ale nie formularzem!), który film wyświetlić.
  2. Utwórz plik film.php. Plik ten powinien wyświetlić informacje o wybranym filmie (parametr wysłany metodą GET) - tytuł, opis, rating, długość. Następnie należy wyświetlić kategorie, do których film należy (każda kategoria "klikalna" - link do category.php wyświetlającego szczegóły kategorii), oraz obsadę (lista/tabela aktorów, każdy "klikalny" - link do actor.php wyświetlającego szczegóły aktora).
  3. Utwórz plik actor.php. Plik ten powinien wyświetlić szczegóły dotyczące aktora: imię i nazwisko, liczbę filmów, w których grał. Poniżej powinna być przedstawiona lista filmów, w których grał (każdy tytuł "klikalny" jak w p. 2).
  4. Utwórz plik category.php. Plik ten powinien wyświetlać szczegóły kategorii: nazwę, liczbę filmów w tej kategorii i ich listę (każdy tytuł "klikalny" jak w p. 2).

W tym momencie powinno być możliwe przeglądanie listy filmów, szczegółów o filmach, aktorach i kategoriach.

Czytaj dalej

SQL DQL - ćwiczenia w zapytaniach, funkcjach agregujących i złączeniach

Bazując na bazie testowej Sakila (tutaj zip), wykonaj następujące ćwiczenia. Ułatwieniem może być widok schematu relacji tej bazy. Data ostatniej aktualizacji list: 07.10.2024.

Lista 1: zapytania na jednej tabeli

  1. Podaj tytuły, opisy, czas wypożyczenia, koszt wypożyczenia za dzień i całkowity koszt wypożyczenia (jako iloczyn czasu wypożyczenia i jego kosztu) dla każdego filmu. Przyjmij, że pole rental_rate zawiera koszt wypożyczenia za dzień (według dokumentacji bazy jest to koszt wypożyczenia na tyle dni, ile zapisano w polu rental_duration).
    • Wersja zgodna z dokumentacją. Podaj tytuły, opisy, czas wypożyczenia oraz koszt wypożyczenia za dzień (jako iloraz kosztu wypożyczenia na przewidzianą liczbę dni) dla każdego filmu.
  2. Podaj alfabetyczną listę nazwisk aktorów, każde nazwisko jeden raz.
  3. Wypisz wszystkie rodzaje ratingów filmów (każdy rating jednokrotnie).
  4. Wypisz tytuły, opisy, ratingi i długość filmów, które trwają 3 godziny lub dłużej.
    1. Zmodyfikuj powyższe zapytanie tak, aby czas był wyświetlany w godzinach (np. 75 minut = 1,25 godz.).
    2. Zmodyfikuj powyższe zapytanie tak, aby czas był wyświetlany w godzinach z dokładnością do drugiego miejsca po przecinku (np. 75 minut = 1,25 godz.).
    3. Zmodyfikuj powyższe zapytanie tak, aby kolumna z długością filmu w godzinach miała nazwę (alias) length_hours.
  5. Wypisz wszystkie informacje z tabeli customer o tych klientach, którzy są nieaktywni albo ich nazwisko kończy się na M.
  6. Wypisz wszystkie kategorie, których identyfikator jest większy niż 4, a których nazwa zaczyna się na C, S lub T. Użyj klauzuli WHERE.
    • Wykonaj powyższe ćwiczenie, używając operatora IN do określenia zbioru liter C, S, T.
      Uwaga. Trzeba użyć pewnej funkcji na tekstach.
  7. Wypisz wszystkie filmy z ratingiem G, PG-13 lub NC-17. Użyj operatora IN.
  8. Wypisz listę otwartych wypożyczeń (czyli wypożyczono film, ale jeszcze go nie zwrócono).
  9. Wypisz wypożyczenia, które miały miejsce między 25 a 26 maja 2005 r. Skorzystaj z operatora BETWEEN. Zwróć uwagę, że w polu rental_date przechowywana jest zarówno data, jak i godzina (typ danych to DATETIME).
  10. Wypisz listę dziesięciu ostatnio wypożyczonych filmów.
Czytaj dalej