09 SQL ESERCITAZIONE - CNR

11
1 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione SQl SQl SQl SQl come DML: Esercitazione come DML: Esercitazione come DML: Esercitazione come DML: Esercitazione Appunti dalle lezioni Appunti dalle lezioni Appunti dalle lezioni Appunti dalle lezioni 2 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione Passi preliminari Passi preliminari Passi preliminari Passi preliminari Creare lo schema Creare lo schema Creare lo schema Creare lo schema Creare le tabelle ed i vincoli Creare le tabelle ed i vincoli Creare le tabelle ed i vincoli Creare le tabelle ed i vincoli Popolare il DB Popolare il DB Popolare il DB Popolare il DB

Transcript of 09 SQL ESERCITAZIONE - CNR

1 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

SQlSQlSQlSQl come DML: Esercitazionecome DML: Esercitazionecome DML: Esercitazionecome DML: Esercitazione

Appunti dalle lezioniAppunti dalle lezioniAppunti dalle lezioniAppunti dalle lezioni

2 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

Passi preliminariPassi preliminariPassi preliminariPassi preliminari

� Creare lo schemaCreare lo schemaCreare lo schemaCreare lo schema

� Creare le tabelle ed i vincoliCreare le tabelle ed i vincoliCreare le tabelle ed i vincoliCreare le tabelle ed i vincoli

� Popolare il DBPopolare il DBPopolare il DBPopolare il DB

3 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

Il DBIl DBIl DBIl DB

4 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

Il DBIl DBIl DBIl DB

5 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

6 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

7 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

VolumiVolumiVolumiVolumi

� Disco Disco Disco Disco ���� 500500500500

� Brano Brano Brano Brano ���� 2000200020002000

� Artista Artista Artista Artista ���� 500500500500

� Composizione Composizione Composizione Composizione ���� 2000*3 = 60002000*3 = 60002000*3 = 60002000*3 = 6000– Un brano scritto in media da 3 personeUn brano scritto in media da 3 personeUn brano scritto in media da 3 personeUn brano scritto in media da 3 persone

� Registrazione Registrazione Registrazione Registrazione ���� 4000400040004000– 20% non ha mai cantato20% non ha mai cantato20% non ha mai cantato20% non ha mai cantato

– Ogni artista ha cantato in media 10 brani Ogni artista ha cantato in media 10 brani Ogni artista ha cantato in media 10 brani Ogni artista ha cantato in media 10 brani

� Contiene Contiene Contiene Contiene ���� 5000500050005000– Ogni disco contiene in media 10 registrazioniOgni disco contiene in media 10 registrazioniOgni disco contiene in media 10 registrazioniOgni disco contiene in media 10 registrazioni

8 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

Popolare il DBPopolare il DBPopolare il DBPopolare il DB

9 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

Popolare il DBPopolare il DBPopolare il DBPopolare il DB

� INSERT INTO INSERT INTO INSERT INTO INSERT INTO ARTISTA(IDARTISTA,COGNOME,NOME,ARTISTA(IDARTISTA,COGNOME,NOME,ARTISTA(IDARTISTA,COGNOME,NOME,ARTISTA(IDARTISTA,COGNOME,NOME,DATA_NDATA_NDATA_NDATA_N))))SELECT SELECT SELECT SELECT random_artist_code(10), COGNOMIESEMPIO, random_artist_code(10), COGNOMIESEMPIO, random_artist_code(10), COGNOMIESEMPIO, random_artist_code(10), COGNOMIESEMPIO,

NOMIESEMPIO, DATEESEMPIONOMIESEMPIO, DATEESEMPIONOMIESEMPIO, DATEESEMPIONOMIESEMPIO, DATEESEMPIOFROM COGNOMI, NOMI, DATEFROM COGNOMI, NOMI, DATEFROM COGNOMI, NOMI, DATEFROM COGNOMI, NOMI, DATEORDER BY ORDER BY ORDER BY ORDER BY randomrandomrandomrandom()()()()LIMIT 500;LIMIT 500;LIMIT 500;LIMIT 500;

10 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

Popolare il DBPopolare il DBPopolare il DBPopolare il DB

11 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

Popolare il DBPopolare il DBPopolare il DBPopolare il DB

� INSERT INTO COMPOSIZIONEINSERT INTO COMPOSIZIONEINSERT INTO COMPOSIZIONEINSERT INTO COMPOSIZIONE((((idbranoidbranoidbranoidbrano, , , , idartistaidartistaidartistaidartista, , , , annocomposizioneannocomposizioneannocomposizioneannocomposizione))))

selectselectselectselect B.IDBranoB.IDBranoB.IDBranoB.IDBrano, , , , A.idartistaA.idartistaA.idartistaA.idartista, , , , 1950+(1950+(1950+(1950+(randomrandomrandomrandom()*50)::()*50)::()*50)::()*50)::integerintegerintegerinteger

fromfromfromfrom BRANO B, ARTISTA ABRANO B, ARTISTA ABRANO B, ARTISTA ABRANO B, ARTISTA Aorderorderorderorder bybybyby randomrandomrandomrandom()()()()LIMIT 6000;LIMIT 6000;LIMIT 6000;LIMIT 6000;

� INSERT INTO REGISTRAZIONE(INSERT INTO REGISTRAZIONE(INSERT INTO REGISTRAZIONE(INSERT INTO REGISTRAZIONE(idbranoidbranoidbranoidbrano, , , , idartistaidartistaidartistaidartista, , , , annoregistrazioneannoregistrazioneannoregistrazioneannoregistrazione))))

SELECT SELECT SELECT SELECT idbranoidbranoidbranoidbrano,,,,idartistaidartistaidartistaidartista, 1950+(, 1950+(, 1950+(, 1950+(randomrandomrandomrandom()*50)::()*50)::()*50)::()*50)::integerintegerintegerintegerFROM BRANO, ARTISTAFROM BRANO, ARTISTAFROM BRANO, ARTISTAFROM BRANO, ARTISTAorderorderorderorder bybybyby randomrandomrandomrandom()()()()limitlimitlimitlimit 4000;4000;4000;4000;

12 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

Popolare il DBPopolare il DBPopolare il DBPopolare il DB

13 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

Popolare il DBPopolare il DBPopolare il DBPopolare il DB

� INSERT INTO CONTIENE(INSERT INTO CONTIENE(INSERT INTO CONTIENE(INSERT INTO CONTIENE(nseriedisconseriedisconseriedisconseriedisco, , , , idbranoidbranoidbranoidbrano, , , , idartistaidartistaidartistaidartista))))SELECT SELECT SELECT SELECT NSerieDiscoNSerieDiscoNSerieDiscoNSerieDisco, IDBRANO, IDARTISTA, IDBRANO, IDARTISTA, IDBRANO, IDARTISTA, IDBRANO, IDARTISTAFROM REGISTRAZIONE, DISCOFROM REGISTRAZIONE, DISCOFROM REGISTRAZIONE, DISCOFROM REGISTRAZIONE, DISCOorderorderorderorder BY BY BY BY randomrandomrandomrandom()()()()limitlimitlimitlimit 5000;5000;5000;5000;

� INSERT INTO disco(INSERT INTO disco(INSERT INTO disco(INSERT INTO disco(nseriedisconseriedisconseriedisconseriedisco, , , , titolodiscotitolodiscotitolodiscotitolodisco, , , , annodiscoannodiscoannodiscoannodisco))))VALUES ('dacdisco01', 'titolo 01', 1973);VALUES ('dacdisco01', 'titolo 01', 1973);VALUES ('dacdisco01', 'titolo 01', 1973);VALUES ('dacdisco01', 'titolo 01', 1973);

� UPDATE registrazione setUPDATE registrazione setUPDATE registrazione setUPDATE registrazione setannoregistrazioneannoregistrazioneannoregistrazioneannoregistrazione = = = = nullnullnullnullwherewherewherewhere ((((idbranoidbranoidbranoidbrano,,,,idartistaidartistaidartistaidartista) in () in () in () in (

selectselectselectselect idbranoidbranoidbranoidbrano, , , , idartistaidartistaidartistaidartistafromfromfromfrom REGISTRAZIONEREGISTRAZIONEREGISTRAZIONEREGISTRAZIONEorderorderorderorder bybybyby randomrandomrandomrandom()()()()limitlimitlimitlimit 50)50)50)50)

14 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

QueryQueryQueryQuery 1111

� Trovare il numero di Trovare il numero di Trovare il numero di Trovare il numero di brani contenuto in ogni brani contenuto in ogni brani contenuto in ogni brani contenuto in ogni disco e mostrarlo disco e mostrarlo disco e mostrarlo disco e mostrarlo insieme al codice del insieme al codice del insieme al codice del insieme al codice del disco.disco.disco.disco.

15 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

QueryQueryQueryQuery 1111

� Non si visualizzano i Non si visualizzano i Non si visualizzano i Non si visualizzano i dischi senza brani.dischi senza brani.dischi senza brani.dischi senza brani.

� Se ci interessa Se ci interessa Se ci interessa Se ci interessa visualizzarli visualizzarli visualizzarli visualizzarli …………........

16 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

QueryQueryQueryQuery 1111

� In alternativaIn alternativaIn alternativaIn alternativa

17 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

QueryQueryQueryQuery 2222

� Trovare i cantautori il cui nome inizia per Trovare i cantautori il cui nome inizia per Trovare i cantautori il cui nome inizia per Trovare i cantautori il cui nome inizia per ‘‘‘‘AAAA’’’’� CANTAUTORE: Chi ha scritto e cantato la stessa canzoneCANTAUTORE: Chi ha scritto e cantato la stessa canzoneCANTAUTORE: Chi ha scritto e cantato la stessa canzoneCANTAUTORE: Chi ha scritto e cantato la stessa canzone

18 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

QueryQueryQueryQuery 3333

� I codici ed i titoli I codici ed i titoli I codici ed i titoli I codici ed i titoli dei dischi che dei dischi che dei dischi che dei dischi che contengono contengono contengono contengono canzoni di cui non canzoni di cui non canzoni di cui non canzoni di cui non si conosce lsi conosce lsi conosce lsi conosce l’’’’anno di anno di anno di anno di registrazioneregistrazioneregistrazioneregistrazione

19 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

QueryQueryQueryQuery 4444

� Gli autori puriGli autori puriGli autori puriGli autori puri

20 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

QueryQueryQueryQuery 5555

� I pezzi del disco I pezzi del disco I pezzi del disco I pezzi del disco ‘‘‘‘D_A7R67JYOD_A7R67JYOD_A7R67JYOD_A7R67JYO’’’’ ordinati ordinati ordinati ordinati alfabeticamente per cantantealfabeticamente per cantantealfabeticamente per cantantealfabeticamente per cantante

21 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

QueryQueryQueryQuery 6666

� Gli autori puri ed i cantanti puriGli autori puri ed i cantanti puriGli autori puri ed i cantanti puriGli autori puri ed i cantanti puri

22 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, [email protected] SQL come DML: Esercitazione

QueryQueryQueryQuery 7777

� i dischi in cui tutte le canzoni sono cantate da un i dischi in cui tutte le canzoni sono cantate da un i dischi in cui tutte le canzoni sono cantate da un i dischi in cui tutte le canzoni sono cantate da un solo cantantesolo cantantesolo cantantesolo cantante