Gagnasafnsfræði, haust 2011
[ Dagskrá | Námsefni | Verkefni | Dæmatímar | Orðalisti | Námsmat | Kennslubók ]Verkefni 2 - Venslalíkanið og grunnatriði í SQL
Lausnum skal skilað í hólf viðkomandi dæmakennara (sjá lista yfir dæmatíma).Skiladagur: föstudaginn 9. september fyrir kl 16:00
PostgreSQL uppsetning og import á movies.sql
Tenglar:- Sækja PostgreSQL
- Sækja PostgreSQL 9.0.4-1 fyrir Windows 32-bit (beinn linkur)
- Sækja PostgreSQL 9.0.4-1 fyrir Windows 64-bit (beinn linkur)
- Handbók PostgreSQL
- SQL skilgreiningar fyrir litla gagnasafnið um kvikmyndir: movies.sql
Til að hlaða movies.sql inn í PostgreSQL gagnasafn er hægt að nota \i skipunina í psql skipanalínunni (movies.sql þarf að vera í vinnumöppunni, working directory, annars þarf að gefa upp fulla slóð, t.d. \i c:/movies.sql):
ATH: Í Windows þarf að gefa upp slóðina með UNIX-backslash, þ.e. "/". Dæmi: c:/movies.sql eða c:/temp/movies.sql (en ekki c:\movies.sql og c:\temp\movies.sql eins og væri venjan í Windows). Gefið upp fulla slóð í psql skelinni:postgres@brainfuck:~$ psql Welcome to psql 8.3.14, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help with psql commands \g or terminate with semicolon to execute query \q to quit postgres=# \i movies.sql [...] INSERT 0 1 INSERT 0 1 INSERT 0 1 [...] postgres=# \d List of relations Schema | Name | Type | Owner --------+---------+-------+---------- public | actor | table | postgres public | casting | table | postgres public | movie | table | postgres (3 rows) postgres=#
Einnig er hægt að hlaða skráni beint inn úr cmd í Windows. Þá þarf að opna cmd og fara inn í möppuna þar sem psql.exe er (eða gefa upp full path á psql.exe eða setja það í system path):Server [localhost]: Database [postgres]: Port [5432]: Username [postgres]: Password for user postgres: psql (9.0.4) WARNING: Console code page (850) differs from Windows code page (1252) 8-bit characters might not work correctly. See psql reference page "Notes for Windows users" for details. Type "help" for help. postgres=# \i c:/movies.sql [...] INSERT 0 1 [...] postgres=#
C:\Program Files\PostgreSQL\9.0\bin>psql -U postgres -f c:\movies.sql Password for user postgres: [..] INSERT 0 1 [..] C:\Program Files\PostgreSQL\9.0\bin>
Skiladæmi:
- Sýnið SQL skipanir til að búa til eftirfarandi gagnasafn (skilgreinið einnig aðallykla og ytri lykla):
Movie(id: integer, title: string, year: integer, director: integer)
Dálkurinn Movie.director er ytri lykill og vísar í Director.id
Director(id: integer, name: string)
Actor(id: integer, name: string)
Casting(id: integer, movie: integer, actor: integer, ord: integer)
Trivia(id: integer, movie: integer, trivia: text)
Dálkurinn Casting.movie er ytri lykill og vísar í Movie.id
Dálkurinn Casting.actor er ytri lykill og vísar í Actor.id
Dálkurinn Trivia.movie er ytri lykill og vísar í Movie.id - Sýnið SQL skipanir til að búa til eftirfarandi gagnasafn (skilgreinið einnig aðallykla og ytri lykla):
- Sýnið SQL skipun til að sækja lista yfir öll mismunandi ártöl (Movie.year) sem eru skráð í Movie töfluna í movies.sql (ábending: SELECT DISTINCT)
- Sýnið SQL skipun til að sækja nafn, ártal og einkunn fyrir allar kvikmyndir með einkunn > 8.5.
Dæmi um úttak:title | year | score ----------------------------------------------------------------------+------+------- Star Wars | 1977 | 8.8 Shawshank Redemption, The | 1994 | 9 Pulp Fiction | 1994 | 8.6 Star Wars: Episode V - The Empire Strikes Back | 1980 | 8.6 Usual Suspects, The | 1995 | 8.7
- Sýnið SQL skipun til að sækja lista yfir nafn leikara og meðaleinkunn allra mynda sem hann hefur leikið í (ábending: þarft að tengja Movie, Casting, Actor og nota GROUP BY ásamt AVG)
Dæmi um úttak:name | avg --------------------------------+------------------ Benny Hill | 6.1 Courtney B. Vance | 6.875 Clare Kramer | 6.5 John Brady (II) | 7 Louis Calhern | 8.3