SQL i podstawy technologii relacyjnych baz danych Zadania dodatkowe Baza danych Dane do zadań Ze strony www.testcoast.com pobierz plik rating.sql zawierający wyeksportowane dane bazy danych SQL w formacie umożliwiającym odtworzenie struktury i zawartości bazy. Otwórz SQLite Manager, utwórz nowy plik bazy danych i zaimportuj zawartość pliku rating.sql. W tym celu wybierz z menu polecenie Database Import. W prawej części okna otworzy się kreator importu (Import Wizard). Otwórz w nim zapisany wcześniej plik rating.sql, wybierz format danych SQL i potwierdź klikając OK. W wyniku działania kreatora importu w bazie powinna powstać struktura wypełniona danymi do zadań. Opis struktury i danych Jest to baza danych prostego filmowego serwisu internetowego, w którym użytkownicy mogą różnym filmom przyznawać oceny wyrażone jako gwiazdki. Baza zawiera trzy tabele o następującej strukturze: Nazwa tabeli: Movie mid Int 0 NULL 0 Identyfikator filmu title Text 0 NULL 0 Tytuł filmu year Int 0 NULL 0 Rok premiery director Text 0 NULL 0 Imię i nazwisko reżysera 1
Nazwa tabeli: Rating rid Int 0 NULL 0 Identyfikator oceniającego mid Int 0 NULL 0 Identyfikator filmu stars Int 0 NULL 0 Liczba gwiazdek (ocena) ratingdate Date 0 NULL 0 Data wystawienia oceny Nazwa tabeli: Reviewer rid Int 0 NULL 0 Identyfikator oceniającego name Text 0 NULL 0 Imię i nazwisko oceniającego Zadania Korzystając ze składni języka SQL właściwej dla bazy danych SQLite, napisz zapytania realizujące poniższe polecenia. 1. Znajdź tytuły wszystkich filmów, których reżyserem jest Steven Spielberg. 2. Znajdź wszystkie lata, w których premierę miał film oceniany na 4 lub 5 gwiazdek i posortuj je rosnąco. 3. Znajdź tytuły wszystkich filmów, które nie zostały ocenione. 4. Niektórzy oceniający nie podali daty oceny. Znajdź imiona i nazwiska wszystkich oceniających, którzy mają wystawioną ocenę z wartością NULL w polu daty. 5. Napisz zapytanie, które zwróci oceny w bardziej czytelnym formacie: imię i nazwisko oceniającego, tytuł filmu, liczbę gwiazdek, datę oceny. Posortuj dane według imienia i nazwiska oceniającego, tytułu filmu i liczby gwiazdek. 6. Dla wszystkich przypadków, w których oceniający wystawił ocenę dla tego samego filmu dwukrotnie i za drugim razem dał wyższą ocenę niż za pierwszym, wyszukaj imię i nazwisko oceniającego i tytuł filmu. 7. Dla każdego filmu, który ma choć jedną ocenę, znajdź najwyższą liczbę gwiazdek, jaką ten film otrzymał. Zwróć tytuł filmu i liczbę gwiazdek. Posortuj po tytule filmu. 8. Dla każdego filmu zwróć tytuł i rozrzut ocen, to znaczy różnicę pomiędzy najwyższą i najniższą oceną przyznaną temu filmowi. Posortuj po rozrzucie ocen od największego do najmniejszego, następnie po tytule filmu. 9. Znajdź różnicę pomiędzy średnią oceną filmów, które miały premierę przed 1980 rokiem i średnią oceną filmów, które miały premierę w 1980 roku lub później. Policz najpierw średnią ocenę dla każdego filmu, a dopiero potem średnią ze średnich ocen filmów wydanych przed i po 1980 roku. 10. Dodaj oceniającego o imieniu i nazwisku Roger Ebert i identyfikatorze 209. 11. Dodaj 5-gwiazdkową ocenę każdego filmu dokonaną przez Jamesa Camerona. Jako datę oceny pozostaw wartość NULL. 2
12. Wszystkim filmom, które mają średnią ocenę 4 gwiazdki lub wyższą, dodaj 25 do roku premiery (zaktualizuj istniejące wpisy). 13. Usuń wszystkie oceny dla filmów z datą premiery przed 1970 rokiem lub po 2000 roku, które są niższe niż 4 gwiazdki. Odpowiedzi Zadanie 1. E.T. Raiders of the Lost Ark Zadanie 2. 1937 1939 1981 2009 Zadanie 3. Star Wars Titanic Zadanie 4. Chris Jackson Daniel Lewis Zadanie 5. Ashley White E.T. 3 2011-01-02 Brittany Harris Raiders of the Lost Ark 2 2011-01-30 Brittany Harris Raiders of the Lost Ark 4 2011-01-12 Brittany Harris The Sound of Music 2 2011-01-20 Chris Jackson E.T. 2 2011-01-22 Chris Jackson Raiders of the Lost Ark 4 <NULL> Chris Jackson The Sound of Music 3 2011-01-27 Daniel Lewis Snow White 4 <NULL> Elizabeth Thomas Avatar 3 2011-01-15 Elizabeth Thomas Snow White 5 2011-01-19 James Cameron Avatar 5 2011-01-20 Mike Anderson Gone with the Wind 3 2011-01-09 Sarah Martinez Gone with the Wind 2 2011-01-22 Sarah Martinez Gone with the Wind 4 2011-01-27 Zadanie 6. Sarah Martinez Gone with the Wind 3
Zadanie 7. Avatar 5 E.T. 3 Gone with the Wind 4 Raiders of the Lost Ark 4 Snow White 5 The Sound of Music 3 Zadanie 8. Avatar 2 Gone with the Wind 2 Raiders of the Lost Ark 2 E.T. 1 Snow White 1 The Sound of Music 1 Zadanie 9. 0.0555555555556 Zadanie 10. select * from Reviewer order by rid, name 201 Sarah Martinez 202 Daniel Lewis 203 Brittany Harris 204 Mike Anderson 205 Chris Jackson 206 Elizabeth Thomas 207 James Cameron 208 Ashley White 209 Roger Ebert 4
Zadanie 11. select * from Rating where stars = 5 order by rid, mid 206 106 5 2011-01-19 207 101 5 <NULL> 207 102 5 <NULL> 207 103 5 <NULL> 207 104 5 <NULL> 207 105 5 <NULL> 207 106 5 <NULL> 207 107 5 <NULL> 207 107 5 2011-01-20 207 108 5 <NULL> Zadanie 12. select * from Movie order by mid 101 Gone with the Wind 1939 Victor Fleming 102 Star Wars 1977 George Lucas 103 The Sound of Music 1965 Robert Wise 104 E.T. 1982 Steven Spielberg 105 Titanic 1997 James Cameron 106 Snow White 1962 <NULL> 107 Avatar 2034 James Cameron 108 Raiders of the Lost Ark 1981 Steven Spielberg Zadanie 13. select R.rID, R.mID, R.stars, M.title, M.year from Rating R join Movie M on (R.mID = M.mID) order by R.rID, R.mID 201 101 4 Gone with the Wind 1939 202 106 4 Snow White 1937 203 108 2 Raiders of the Lost Ark 1981 203 108 4 Raiders of the Lost Ark 1981 205 104 2 E.T. 1982 205 108 4 Raiders of the Lost Ark 1981 206 106 5 Snow White 1937 207 107 5 Avatar 2009 208 104 3 E.T. 1982 Dane i zadania pochodzą z kursu Jennifer Widom Introduction to Databases udostępnionego przez Stanford University za pośrednictwem serwisu Coursera. 5