1 / 78

Basi di Dati e Sistemi Informativi

Basi di Dati e Sistemi Informativi. Esercitazione : Il Linguaggio SQL (DDL+DML) Home page del corso : http:// www.cs.unibo.it /~ difelice / dbsi /. Esercizio 1. Scrivere il codice SQL dello schema . ARTICOLI. Autore deve essere sempre definito .

tyson
Télécharger la présentation

Basi di Dati e Sistemi Informativi

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Basi di Dati e SistemiInformativi Esercitazione: Il Linguaggio SQL (DDL+DML) Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/

  2. Esercizio1 • Scrivereilcodice SQL dello schema ARTICOLI • Autoredeveesseresempredefinito. • Conferenza e’ unastringa di lunghezza max 8. • Formato e’ unastringa di lunghezza 3. • Il numero di paginedeveesseresempremaggiore di 0, nelcaso di omissionesiassume pari ad 1.

  3. Esercizio 1 CREATE TABLE ARTICOLI ( CODICE SMALLINT PRIMARY KEY, AUTORE VARCHAR(20) NOT NULL, CONFERENZA CHAR(8), FORMATO CHAR(3), ANNO DATE, PAGINE SMALLINT DEFAULT 1 CHECK (PAGINE>0) );

  4. Esercizio1 • Scrivereilcodice SQL dello schema CONFERENZE • Vincolo di integrita’: ARTICOLO.{Conferenza, Data}  CONFERENZA.{Nome, Data} • Rimuovendounaconferenza da CONFERENZE, vengonorimossianchegliarticolicorrispondenti

  5. Esercizio 1 CREATE TABLE CONFERENZE ( NOME VARCHAR(8), DATA DATE, ORGANIZZATORE VARCHAR(20), NUMPARTECIPANTI INTEGER CHECK (NUMPARTECIPANTI>0), PRIMARY KEY(NOME,DATA) );

  6. Esercizio 1 CREATE TABLE ARTICOLI ( CODICE SMALLINT PRIMARY KEY, AUTORE VARCHAR(20) NOT NULL, CONFERENZA CHAR(8), FORMATO CHAR(3), DATA DATE, PAGINE SMALLINT DEFAULT 1 CHECK (PAGINE>1) FOREIGN KEY (CONFERENZA,DATA) REFERENCES CONFERENZE(NOME, DATA) ON DELETE CASCADE );

  7. Esercizio1 • Scrivereilcodice SQL dello schema PARTECIPANTE • Vincolo di integrita’: PARTECIPANTE.{NomeConf, DataConf}  CONFERENZA.{Nome, Data} • Ogni aggiornamento di {Nome, Data} nellarelazione CONFERENZA vienepropagatoancheallarelazione PARTECIPANTE.

  8. Esercizio 1 CREATE TABLE PARTECIPANTE ( NOMECONF CHAR(8), DATACONF DATE, NOME VARCHAR(20), COGNOME VARCHAR(30), RUOLO CHARACTER(3), PRIMARY KEY (NOMECONF,DATACONF, NOME, COGNOME) FOREIGN KEY (NOMECONF,DATACONF) REFERENCES CONFERENZE(NOME, DATA) ON UPDATE CASCADE );

  9. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQLchedetermina: 0.Nomi e cognomi di Atletidellasocieta’ Borgorosso.

  10. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQLchedetermina: SELECT NOME, COGNOME FROM ATLETA WHERE (SOCIETA’=‘Borgorosso’)

  11. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQLchedetermina: 1. Le righedellatabella ATLETA chesiriferiscono ad atletiil cui nomeinizia per “M” oppure non e’ specificato.

  12. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQLchedetermina: 1. Le righedellatabella ATLETA chesiriferiscono ad atletiil cui nomeinizia per “M” oppure non e’ specificato.

  13. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) SELECT * FROM ATLETA WHERE ((Nome LIKE ‘M%’) OR (Nome IS NULL))

  14. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQLchedetermina: 2. Tuttiicodicidellegare di Atletica cui partecipanoatletidellasocieta’ “Borgorosso”.

  15. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) SELECT CODICEGARA FROM PARTECIPAZIONE, ATLETA WHERE ((PARTECIPAZIONE.CODICEATLETA= ATLETA.CODICE) AND (SOCIETA’ = ‘BORGOROSSO’))

  16. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQLchedetermina: 3. Tuttiicodicidellegare di Atletica cui partecipanoatletidellasocieta’ “Borgorosso”, svolte in data 7/10/2013.

  17. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) SELECT CODICEGARA FROM PARTECIPAZIONE, ATLETA, GARA WHERE ((CODICEATLETA=CODICE) AND (GARA.CODICEGARA=PARTECIPAZIONE. CODICEGARA) AND (SOCIETA’ = ‘BORGOROSSO’) AND (DATA=07/10/2013))

  18. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQLchedetermina: 4. I nomidellesocieta’ i cui atletihannovintounagara di LancioDelDisco. Filtrareiduplicati.

  19. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) SELECT DISTINCT(SOCIETA’) FROM ATLETA, GARA WHERE ((CODICEVINCITORE=CODICE) AND (DISCIPLINA=‘LANCIODELDISCO’))

  20. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQLchedetermina: 5. Il numero di garesvolte in data 7/10/2013.

  21. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) SELECT COUNT(*) FROM GARA WHERE (DATA=‘7/10/2013’)

  22. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQLchedetermina: 6. Per ognisocieta’, ilnumero di atletiche ne fanno parte.

  23. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) SELECT SOCIETA’, COUNT(*) AS NUMERO FROM ATLETA GROUPBY SOCIETA’

  24. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQLchedetermina: 7. Le societa’ chehannoalmeno 3 atletitesserati.

  25. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) SELECT SOCIETA’ FROM ATLETA GROUPBY SOCIETA’ HAVING COUNT(*) >=3

  26. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQLchedetermina: 7. Gliatletichehannopartecipato ad almeno 5 gare.

  27. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) SELECT CODICE FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE) GROUPBY CODICE,CODICEATLETA HAVING (COUNT(*)>=5)

  28. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQLchedetermina: 8. Gliatletiche NON hannomaipartecipato ad unagara.

  29. Esercizio 2 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) SELECT CODICE FROM ATLETA EXCEPT SELECT DISTINCT(CODICEATLETA) FROM PARTECIPAZIONE

  30. Esercizio 3 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) 1. Determinare la cardinalita’ (#righe) della query seguente: SELECT CODICE FROM ATLETA

  31. Esercizio 3 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) 1.Determinare la cardinalita’ (#righe) della query seguente: SELECT CODICE FROM ATLETA Cardinalita’ del risultato: 50

  32. Esercizio 3 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) 2.Determinare la cardinalita’ (#righe) della query seguente: SELECT DISTINCT(NOME) FROM ATLETA

  33. Esercizio 3 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) 2.Determinare la cardinalita’ (#righe) della query seguente: SELECT DISTINCT(NOME) FROM ATLETA Cardinalita’ del risultato: 1<=x<=50

  34. Esercizio 3 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) 3.Determinare la cardinalita’ (#righe) della query seguente: SELECT DISTINCT(NOME) FROM ATLETA WHERE (SOCIETA’ =‘Borgorosso’)

  35. Esercizio 3 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) 3.Determinare la cardinalita’ (#righe) della query seguente: SELECT DISTINCT(NOME) FROM ATLETA WHERE (SOCIETA’ =‘Borgorosso’) Cardinalita’ del risultato: 1<=x<=50

  36. Esercizio 3 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100elementi 4.Determinare la cardinalita’ (#righe) della query seguente: SELECT CODICEGARA FROM PARTECIPAZIONE, ATLETA WHERE (CODICE=CODICEATLETA)

  37. Esercizio 3 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Societa’), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100elementi 4.Determinare la cardinalita’ (#righe) della query seguente: SELECT CODICEGARA FROM PARTECIPAZIONE, ATLETA WHERE (CODICE=CODICEATLETA) Cardinalita’ del risultato: 100

  38. Esercizio 3 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Specialita’), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100elementi 5.Determinare la cardinalita’ (#righe) della query seguente: SELECT * FROM GARA, ATLETA WHERE (DISCIPLINA=SPECIALITA’) Cardinalita’ del risultato: 0<=x<=50*20

  39. Esercizio4 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Specialita’), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100elementi 1.Determinare se la query seguente e’ corretta o meno. SELECT COUNT(*) FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE)

  40. Esercizio4 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Specialita’), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100elementi 1.Determinare se la query seguente e’ corretta o meno. SELECT COUNT(*) FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE) CORRETTA!

  41. Esercizio4 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Specialita’), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100elementi 2.Determinare se la query seguente e’ corretta o meno. SELECT CODICE, COUNT(*) FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE)

  42. Esercizio4 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Specialita’), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100elementi 2.Determinare se la query seguente e’ corretta o meno. SELECT CODICE, COUNT(*) FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE) ERRATA!

  43. Esercizio4 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Specialita’), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100elementi 3.Determinare se la query seguente e’ corretta o meno. SELECT CODICE, COUNT(*) FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE) GROUPBY CODICE

  44. Esercizio4 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Specialita’), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100elementi 3.Determinare se la query seguente e’ corretta o meno. SELECT CODICE, COUNT(*) FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE) GROUPBY CODICE CORRETTA!

  45. Esercizio4 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Specialita’), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100elementi 4.Determinare se la query seguente e’ corretta o meno. SELECT NOME, COUNT(*) FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE) GROUPBY CODICE

  46. Esercizio4 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Specialita’), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100elementi 4.Determinare se la query seguente e’ corretta o meno. SELECT NOME, COUNT(*) FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE) GROUPBY CODICE ERRATA!

  47. Esercizio4 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Specialita’), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100elementi 5.Determinare se la query seguente e’ corretta o meno. SELECT NOME FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE) GROUPBY CODICE HAVING (SPECIALITA’ ==‘ATLETICA’)

  48. Esercizio4 Datoilseguente schema: Atleta(Codice, Nome, Cognome, Specialita’), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100elementi 5.Determinare se la query seguente e’ corretta o meno. SELECT NOME FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE) GROUPBY CODICE HAVING (SPECIALITA’ ==‘ATLETICA’) ERRATA!

  49. Esercizio 5 Datoilseguente schema: Atleta(Codice, Nome, Cognome, DataNascita, Societa’) Allenatore(Codice, Nome, Cognome, Profilo, Societa’) Sportivi(Nome, Cognome, Societa’) Scrivere la query SQLche: 1. Inseriscenellatabellasportivil’utente “Michele Rossi”.

  50. Esercizio 5 Datoilseguente schema: Atleta(Codice, Nome, Cognome, DataNascita, Societa’) Allenatore(Codice, Nome, Cognome, Profilo, Societa’) Sportivi(Nome, Cognome, Societa’) INSERT INTO SPORTIVI(NOME,COGNOME) VALUES (‘Michele’, ‘Rossi’)

More Related