-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(appunti): Aggiunti appunti comandi SQL (#72)
Aggiunto un file Markdown che contiene tutti i principali comandi SQL e la definizione dei vari tipi di variabili, chiavi, ecc... Aggiunte altre esercitazioni con spiegazione.
- Loading branch information
Showing
12 changed files
with
1,870 additions
and
0 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
4 changes: 4 additions & 0 deletions
4
triennale/Anno 3/Basi di Dati/Esercitazione2/cinema/cinema.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
02 S. Angelo Via Lucida 6 Perugia | ||
01 Zenith Via Bonfigli 8 Perugia | ||
03 Multisala Clarici Corso Cavour 84 Foligno | ||
04 Multiplx Giometti Strava Centova Perugia |
11 changes: 11 additions & 0 deletions
11
triennale/Anno 3/Basi di Dati/Esercitazione2/cinema/film.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
01 15 Crash Drammatico 1996 | ||
02 15 False Sembianze Commedia 1988 | ||
03 14 Pulp Fiction Poliziesco 1994 | ||
04 13 Breaking the waves Drammatico 1996 | ||
05 13 Dogville Drammatico 2002 | ||
06 12 Alamo Western 1960 | ||
07 18 Pericolosamente in tre Spionaggio 1985 | ||
08 19 Cavallo bianco, cuore nero Drammatico 1989 | ||
09 19 Nel giardino del bene e del male Poliziesco \N | ||
10 21 American Beauty Drammatico 1999 | ||
11 \N Lo scambio \N 2008 |
16 changes: 16 additions & 0 deletions
16
triennale/Anno 3/Basi di Dati/Esercitazione2/cinema/partecipazione.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
01 05 Grace | ||
02 05 Tom Edison | ||
03 04 Bess | ||
04 04 Jan | ||
05 03 Vincent Vega | ||
06 03 Jules Winnfield | ||
07 03 Butch Coolidge | ||
08 02 Beverly & Elliot Mantle | ||
09 01 James Ballard | ||
10 01 Helen Remington | ||
11 01 Gabrielle | ||
04 05 Chuck | ||
16 07 May Day | ||
19 08 John Wilson | ||
20 09 Jim Williams | ||
20 10 Lester Burnham |
22 changes: 22 additions & 0 deletions
22
triennale/Anno 3/Basi di Dati/Esercitazione2/cinema/persona.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
01 Kidman Nicole | ||
02 Bettany Paul | ||
03 Watson Emily | ||
04 Skarsgard Stellan | ||
05 Travolta John | ||
06 L. Jackson Samuel | ||
07 Willis Bruce | ||
08 Irons Jeremy | ||
09 Spader James | ||
10 Hunter Holly | ||
11 Arquette Rosanna | ||
12 Wayne John | ||
13 von Trier Lars | ||
14 Tarantino Quentin | ||
15 Cronenberg David | ||
16 Mazursky Paul | ||
17 Jones Grace | ||
18 Glen John | ||
19 Eastwood Clint | ||
20 Spacey Kevin | ||
21 Mendes Sam | ||
22 Jolie Angelina |
25 changes: 25 additions & 0 deletions
25
triennale/Anno 3/Basi di Dati/Esercitazione2/cinema/proiezione.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
02 05 01/05/2002 | ||
02 05 02/05/2002 | ||
02 05 03/05/2002 | ||
02 04 02/12/1996 | ||
01 01 07/05/1996 | ||
02 07 09/05/1985 | ||
01 04 02/08/1996 | ||
04 03 08/04/1994 | ||
03 06 02/12/1990 | ||
02 02 08/12/1990 | ||
03 03 05/11/1994 | ||
04 03 06/11/1994 | ||
01 06 05/07/1980 | ||
02 04 02/09/1996 | ||
04 06 01/08/2002 | ||
03 06 09/11/1960 | ||
01 02 12/03/1988 | ||
02 08 01/02/1989 | ||
02 01 11/05/1997 | ||
02 03 05/07/1994 | ||
02 06 01/08/2002 | ||
01 03 02/03/1994 | ||
02 09 02/12/2008 | ||
02 10 03/10/2000 | ||
02 11 02/03/2004 |
40 changes: 40 additions & 0 deletions
40
triennale/Anno 3/Basi di Dati/Esercitazione2/esercitazione2.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
create schema cinema; | ||
|
||
-- Verifico la presenza dello schema nella mia base di dati | ||
\dn | ||
|
||
-- Imposto il PATH di lavoro su cinema così da non dover scrivere ogni volta cinema.<table> | ||
set search_path to cinema; | ||
|
||
CREATE TABLE persona(id_persona integer primary key, nome varchar not null, cognome varchar not null); | ||
|
||
CREATE TABLE film (id_film integer primary key, id_regista integer references persona on delete set null, titolo varchar, genere varchar, anno integer CHECK(anno > 0 OR anno is null)); | ||
|
||
CREATE TABLE cinema (id_cinema INTEGER PRIMARY KEY, nome VARCHAR NOT NULL, indirizzo VARCHAR); | ||
|
||
CREATE TABLE partecipazione (id_attore INTEGER REFERENCES persona ON DELETE CASCADE, id_film INTEGER REFERENCES film ON DELETE CASCADE, ruolo VARCHAR, PRIMARY KEY (id_attore, id_film)); | ||
|
||
CREATE TABLE proiezione (id_cinema INTEGER REFERENCES cinema ON DELETE CASCADE, id_film INTEGER REFERENCES film ON DELETE CASCADE, giorno DATE, PRIMARY KEY (id_cinema, id_film, giorno)); | ||
|
||
\d --> Verifico la presenza delle tabelle nel mio schema | ||
\d film --> Verifico la correttezza delle caratteristiche settate per la mia tabella | ||
\d persona --> Verifico la correttezza delle caratteristiche settate per la mia tabella | ||
|
||
INSERT INTO cinema VALUES (2, 'S. Angelo', 'Via Lucida 6 Perugia'), | ||
(1, 'Zenith', 'Via Bonfigli 8 Perugia'), | ||
(3, 'Multisala Clarici', 'Corso Cavour 84 Foligno'), | ||
(1, 'Multiplx Giometti', 'Strada Centova Perugia'); | ||
|
||
-- Per sbrigarmi posso usare dei file dove ho già tutti i valori: | ||
\copy persona FROM ~/persona.txt; --> inserisco dati (le persone) nella tabella "persona" tramite il file "persona.txt" | ||
\copy cinema FROM ~/cinema1/cinema.txt; | ||
\copy film FROM ~/cinema1/film.txt; | ||
\copy partecipazione FROM ~/cinema1/partecipazione.txt; | ||
\copy proiezione FROM ~/cinema1/proiezione.txt; | ||
|
||
|
||
-- Controllo i valori inseriti in persona | ||
SELECT * FROM persona; | ||
|
||
-- Si elimina l'attore John Travolta dalla base di dati | ||
delete FROM persona WHERE id_persona=5; |
40 changes: 40 additions & 0 deletions
40
triennale/Anno 3/Basi di Dati/Esercitazione2/esercitazione2_script.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
DROP SCHEMA IF EXISTS cinema CASCADE; | ||
CREATE SCHEMA CINEMA; | ||
SET search_path TO cinema; | ||
|
||
CREATE TABLE persona ( | ||
id_persona INTEGER PRIMARY KEY, | ||
cognome VARCHAR NOT NULL, | ||
nome VARCHAR NOT NULL); | ||
|
||
CREATE TABLE film ( | ||
id_film INTEGER PRIMARY KEY, | ||
id_regista INTEGER REFERENCES persona ON DELETE SET NULL, | ||
titolo VARCHAR NOT NULL, | ||
genere VARCHAR, | ||
anno INTEGER CHECK(anno > 0 OR anno IS NULL)); | ||
|
||
CREATE TABLE cinema ( | ||
id_cinema INTEGER PRIMARY KEY, | ||
nome VARCHAR NOT NULL, | ||
indirizzo VARCHAR); | ||
|
||
CREATE TABLE partecipazione ( | ||
id_attore INTEGER REFERENCES persona ON DELETE CASCADE, | ||
id_film INTEGER REFERENCES film ON DELETE CASCADE, | ||
ruolo VARCHAR, | ||
PRIMARY KEY (id_attore, id_film)); | ||
|
||
CREATE TABLE proiezione ( | ||
id_cinema INTEGER REFERENCES cinema ON DELETE CASCADE, | ||
id_film INTEGER REFERENCES film ON DELETE CASCADE, | ||
giorno DATE, | ||
PRIMARY KEY (id_cinema, id_film, giorno)); | ||
|
||
\copy persona FROM ~/cinema1/persona.txt; | ||
\copy cinema FROM ~/cinema1/cinema.txt; | ||
\copy film FROM ~/cinema1/film.txt; | ||
\copy partecipazione FROM ~/cinema1/partecipazione.txt; | ||
\copy proiezione FROM ~/cinema1/proiezione.txt; | ||
|
||
SET datestyle='DMY'; |
Binary file not shown.
81 changes: 81 additions & 0 deletions
81
triennale/Anno 3/Basi di Dati/Esercitazione3/esercitazione3.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
-- Stampo il contenuto della tabella persona | ||
SELECT * FROM persona; | ||
|
||
-- Selezionare i cognomi delle persone nella BD, senza eliminare i doppioni | ||
SELECT cognome FROM persona; | ||
|
||
-- Selezionare i cognomi delle persone ordinati in ordine alfabetico, senza eliminare i doppioni | ||
SELECT cognome FROM persona order by cognome ASC; | ||
|
||
-- Definire l'insieme dei cognomi delle persone rimaste nella BD | ||
SELECT distinct cognome FROM persona order by cognome; | ||
|
||
-- Selezionare le persone di nome John mantenute nella BD | ||
SELECT * FROM persona WHERE nome='John'; | ||
|
||
-- Selezionare i cognomi delle persone di nome John, rimaste nella BD | ||
SELECT cognome FROM persona WHERE nome='John'; | ||
|
||
-- Selezionare le persone mantenute nella BD che sono attori | ||
SELECT nome,cognome FROM persona,partecipazione WHERE id_persona=id_attore; | ||
|
||
/* Definire la lista di tutte le interpretazioni, precisando: | ||
- il nome dell'attore | ||
- il cognome dell'attore | ||
- il ruolo interpretato | ||
- il titolo del film | ||
*/ | ||
SELECT nome,cognome,ruolo,titolo FROM persona,partecipazione,film WHERE id_persona=id_attore and film.id_film=partecipazione.id_film; | ||
|
||
|
||
/* Definire la lista di tutte le interpretazioni, precisando: | ||
- il nome dell'attore | ||
- il cognome dell'attore | ||
- il ruolo interpretato | ||
- il titolo del film. | ||
Il risultato dovrà essere nella forma: | ||
- 'Nicole Kidman ha interpretato il ruolo di Grace nel film Dogville' | ||
- 'Paul Bettany ha interpretato il ruolo di Tom Edison nel film Dogville' | ||
*/ | ||
SELECT DISTINCT nome||' '||cognome||' ha interpretato il ruolo di '||ruolo||' nel film '||titolo FROM persona, partecipazione, film WHERE (partecipazione.id_attore = persona.id_persona AND partecipazione.id_film = film.id_film); | ||
|
||
|
||
-- Quali sono i titoli dei film di genere drammatico? | ||
SELECT titolo FROM film WHERE genere='Drammatico'; | ||
|
||
-- Quali film (titoli) sono stati proiettati nel 2002? | ||
SELECT titolo FROM film,proiezione WHERE (film.id_film=proiezione.id_film and (giorno >= '2002-01-01' AND giorno <= '2002-12-31')); | ||
|
||
-- Quali film (titoli) sono stati proiettati nel 2002? | ||
SELECT titolo FROM film,proiezione WHERE (film.id_film=proiezione.id_film and CAST(proiezione.giorno AS varchar) LIKE '2002%'); | ||
|
||
SELECT titolo FROM film,proiezione WHERE (film.id_film=proiezione.id_film and giorno::text LIKE '2002%'); | ||
|
||
SELECT titolo FROM film,proiezione WHERE (film.id_film=proiezione.id_film and extract(year FROM giorno)=2002); | ||
|
||
-- Elencare i titoli dei film diretti da Lars von Trier | ||
SELECT titolo FROM persona,film WHERE id_persona=id_regista and nome='Lars' and cognome='von Trier'; | ||
|
||
-- Elencare i film (titoli) proiettati al cinema S. Angelo | ||
SELECT titolo FROM film, proiezione, cinema WHERE proiezione.id_cinema=cinema.id_cinema and cinema.nome='S. Angelo' and film.id_film=proiezione.id_film; | ||
|
||
-- Elencare i nomi ed i cognomi dei registi | ||
SELECT nome, cognome FROM persona, film WHERE id_persona=id_regista; | ||
|
||
-- Selezionare i nomi ed i cognomi degli attori | ||
SELECT nome, cognome FROM persona, partecipazione WHERE id_persona=id_attore; | ||
|
||
-- Selezionare i nomi di cognomi degli attori che sono anche registi | ||
SELECT distinct nome, cognome FROM persona, partecipazione, film WHERE id_persona=id_attore and id_attore=id_regista; | ||
|
||
-- Quali attori hanno preso parte a film proiettati al cinema Zenith dopo l'anno 2000? | ||
SELECT distinct persona.nome, persona.cognome FROM persona, partecipazione, proiezione, cinema, film WHERE id_persona=id_attore and proiezione.id_cinema=cinema.id_cinema and cinema.nome='Zenith' and film.id_film=proiezione.id_film and proiezione.giorno >= '2000-01-01' ; | ||
|
||
|
||
/* Quali sono i titoli dei film interpretati da Nicole Kidman che non sono stati proiettati al cinema Zenith? | ||
Cioè vogliamo fare una all film MENO all film proiettati allo Zenith. | ||
Quindi anche se un film era stato proiettato sia allo Zenith che in un'altro cinema, va eliminato lo stesso dal risultato. | ||
*/ | ||
SELECT distinct film.titolo FROM (persona join partecipazione on id_persona = id_attore) join film using (id_film) WHERE nome = 'Nicole' and cognome = 'Kidman' EXCEPT SELECT titolo FROM (cinema natural join proiezione) natural join film WHERE cinema.nome = 'S.Angelo'; |
Binary file not shown.
Oops, something went wrong.