SQL Laboratorio di Basi di Dati a.a. 2002/2003

Documenti analoghi
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

Basi di dati. SQL: Caratteristiche evolute

Il linguaggio SQL: le viste

Basi di dati I 19 settembre 2016 Tempo a disposizione: un ora e 45 minuti.

Interrogazioni nidificate

Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a

Interrogazioni con ANY e ALL. Operatori ANY e ALL. Interrogazioni con ANY e ALL. Interrogazioni con ANY e ALL. Interrogazioni con ANY e ALL

Interrogazioni nidificate

Basi di Dati. S Q L Lezione 4

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni

SQL - Funzioni di gruppo

Basi di dati I 27 gennaio 2016 Esame Compito A Tempo a disposizione: un ora e quarantacinque minuti. Libri chiusi.

Linguaggio SQL seconda parte

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

SQL e algebra relazionale

Esprimere in algebra (ottimizzata), calcolo relazionale la seguente query:

Basi di dati: appello 08/03/06

a.a. 2012/13 12 Novembre 2012 Preparazione al Test in itinere, Compito A 1. Modellare tramite uno schema entità- relazione la seguente base di dati:

SQL. SQL: una visione panoramica. SQL: "storia" Definizione dei dati

Linguaggio SQL. studenti matricola nome cognome citta anno 11 marco bini bologna laura sicuro rimini 1984 esami codice

SELECT FROM ORDER BY SELECT FROM ORDER BY DESC DESC SELECT FROM ORDER BY DESC DESC SELECT FROM WHERE SELECT FROM WHERE AND SELECT FROM WHERE AND

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia:

B a s i d i D a t i ( M o d u l o T e o r i a ) P r o v a s c r i t t a

Concettuale. Giuseppe Amato

SQL Laboratorio di Basi di Dati a.a. 2002/2003

SQL Avanzato. Interrogazioni e il valore NULL. Interrogazioni complesse, trigger, viste e modifiche dello schema. Giorgio Giacinto 2015

Basi di dati I Prova di autovalutazione 30 ottobre 2014

Basi di Dati. Esercitazione SQL. Paolo Papotti. 19 maggio 2005

SQL. SQL: "storia. Sviluppato nella metà degli anni settanta (1974) presso il laboratorio di ricerca IBM di S.Josè. Dal 1983 ca. "standard di fatto"

ESERCIZI SQL. Esercizio 1

ESERCITAZIONE 4 Giovedì 13 novembre 2014 (3 ore) SQL

Esercitazione su SQL

<Nome Tabella>.<attributo>

Basi di Dati Corso di Laura in Informatica Umanistica

Il linguaggio SQL: viste e tabelle derivate

UTENTE (Codice, Nome, Cognome, Indirizzo, Telefono) PRESTITO (Collocazione, CodUtente, DataPrestito, DataRest)

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf

Capitolo 4. Soluzione: Soluzione: Create domain STRING as character varying (256) default sconosciuto not null

SQL Laboratorio di Basi di Dati a.a. 2002/2003

Esempi SQL con Access. Orazio Battaglia

SQL terza parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2010/11

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

Basi di Dati. Esercitazione 2: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL

Documentazione SQL. Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema}

Basi di dati: appello 28/02/06

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

SQL Sintassi Dei Comandi

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

Eprogram ITIS V anno Unità 4 - Il linguaggio SQL

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

SQL: DDL, VI, Aggiornamenti e Viste

SQL. Structured Query Language 1974: SEQUEL by IBM 1981: SQL by IBM : SQL ISO 9075:1992 SQL:1999 SQL:2003

Prova Scritta di Basi di Dati

Il linguaggio SQL: viste e tabelle derivate. DB di riferimento per gli esempi

SQL: definizione schema

ACCESS Esercitazione (query complesse) Ing. Cosimo Orlacchio

Squadra Giocatore Partita Goal Ingresso Ingresso SELECT FROM WHERE AND AND SELECT FROM WHERE AND AND AND AND SELECT FROM WHERE AND AND

Esercizio con attributo cross-dimensionale - transazionale

Esercitazione: Interrogazioni SQL

Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 9 SETTEMBRE 2015 Tempo: 2h30m

Basi di Dati. Esercitazione 3: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL

Esame di Basi di Dati, SOLUZIONE APPELLO 09/06/2009

CREATE TABLE Nome ( Attributo Tipo [Vincolo {, Vincolo }] {, Attributo Tipo [Vincolo {, Vincolo }]} [, VincoloDiTabella {, VincoloDiTabella}] )

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

Basi di dati attive. Paolo Atzeni Stefano Ceri. Basi di dati attive

Basi di Dati DBDMG - Politecnico di Torino Esercizi di SQL

Basi di dati: appello 21/09/12

Esprimere in algebra (ottimizzata), calcolo relazionale la seguente query:

Basi di Dati: Corso di laboratorio

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 21 LUGLIO 2015 Tempo: 2h30m

Data management a.a Il linguaggio SQL

Il linguaggio SQL: raggruppamenti. Versione elettronica: SQLb-gruppi.pdf

Corrado Aaron Visaggio 1. Esercizio

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

Laboratorio di Basi di Dati

OBIETTIVI DELL'ESERCITAZIONE

Basi di Dati Prof. L. Tanca e F. A. Schreiber APPELLO DEL 12 FEBBRAIO 2015 PARTE 1

Caratteristiche dei linguaggi per Database

Prova Scritta di Basi di Dati

Le Basi di Dati Attive

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

Corso di Basi di Dati

a) Si progetti uno schema concettuale Entità-Relazioni per lo scenario più sotto descritto.

SQL (STRUCTURED QUERY LANGUAGE)

Persona(CodiceFiscale, Cognome, Nome, DataDiNascita, LuogoDiNascita, Indirizzo)

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro) ESERCIZIO 3

SQL PER LA DEFINIZIONE DI BASI DI DATI

Prova del 14/09/09. Considerare la seguente descrizione di un campeggio:

SQL come linguaggio di interrogazione. Basi di dati. Interrogazioni SQL. Interpretazione algebrica delle query SQL

SQL non è solo un linguaggio di interrogazione (Query Language), ma. Un linguaggio per la definizione di basi di dati (Data-definition language (DDL))

Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004

PROVA SCRITTA DI TECNOLOGIA DATABASE 02/12/2004 Corso di Laurea Specialistica in Ingegneria Informatica - NOD PROF.


DATABASE PER IL WEB. Programmazione Web 1

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

Linguaggi Formali. Π nome (Π nome,c.f. (correttore c.f=c.f._correttore σ n_capitolo=5 bozza

Basi di dati Appello del Compito A

Transcript:

1 SQL Laboratorio di Basi di Dati a.a. 2002/2003 dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì ore 10-12

2 Sommario (V parte) Aspetti avanzati della definizione dei dati in SQL Vincoli di integrità generici Asserzioni Viste Esempi riepilogativi Riferimenti cap. 4, in particolare 4.4 e 4.8 di Atzeni et al. cap. 5 di Pratt

Vincoli di integrità generici 3 La clausola CHECK specifica vincoli di integrità a livello di ennupla (e anche vincoli più complessi) CREATE TABLE Impiegato( Matricola CHARACTER(6), Cognome CHARACTER(20), Nome CHARACTER(20), Sesso CHARACTER NOT NULL CHECK (sesso IN ( M, F )) Stipendio INTEGER, Superiore CHARACTER(6), CHECK (Stipendio <= ( SELECT Stipendio FROM Impiegato J WHERE Superiore = J.Matricola) )

Asserzioni 4 Le asserzioni specificano vincoli a livello di schema CREATE ASSERTION AlmenoUnImpiegato CHECK (1 <= ( SELECT COUNT(*) FROM Impiegato) )

5 Viste CREATE VIEW NomeVista [(ListaAttributi)] AS SelectSQL [WITH [LOCAL CASCADED] CHECK OPTION] CREATE VIEW ImpiegatiAmmin (Matricola, Nome, Cognome, Stipendio) AS SELECT Matricola, Nome, Cognome, Stipendio FROM Impiegato WHERE Dipart = 'Amministrazione' AND Stipendio > 10

6 Viste (II) Gli aggiornamenti sono ammessi (di solito) solo su viste definite su una sola relazione Alcune verifiche possono essere imposte CREATE VIEW ImpiegatiAmminPoveri AS SELECT * FROM ImpiegatiAmmin WHERE Stipendio < 50 WITH CHECK OPTION CHECK OPTION permette modifiche, ma solo a condizione che la ennupla continui ad appartenere alla vista (non posso modificare lo stipendio portandolo a 60)

Viste per la scrittura di interrogazioni 7 Es. Estrarre il dipartimento caratterizzato dal massimo della somma degli stipendi SELECT Dipart FROM Impiegato GROUP BY Dipart HAVING SUM(Stipendio) >= ALL ( SELECT SUM(Stipendio) FROM Impiegato GROUP BY Dipart )

Viste per la scrittura di interrogazioni 8 CREATE VIEW BudgetStipendi(Dip,TotaleStipendi) AS SELECT Dipart, SUM(Stipendio) FROM Impiegato GROUP BY Dipart SELECT Dip FROM BudgetStipendi WHERE TotaleStipendi =( SELECT MAX(TotaleStipendi) FROM BudgetStipendi)

Viste per la scrittura di interrogazioni 9 Es. Estrarre il numero medio di uffici per dipartimento SELECT AVG(COUNT(DISTINCT Ufficio)) FROM Impiegato GROUP BY Dipart CREATE VIEW DipartUffici(NomeDip,NroUffici) AS SELECT Dipart, COUNT(DISTINCT Ufficio) from Impiegato GROUP BY Dipart; SELECT AVG(NroUffici) FROM DipartUffici

Esempio riepilogativo n.1 10 Sia dato il seguente schema relazionale che descrive il calendario di una manifestazione sportiva a squadre nazionali STADIO(Nome, Citta, Capienza) INCONTRO(NomeStadio, Data, Ora, Squadra1, Squadra2) NAZIONALE(Paese, Continente, Categoria) (a) Estrarre i nomi degli stadi in cui non gioca nessuna nazionale europea.

Esempio riepilogativo n.1 (a) 11 SELECT Nome FROM Stadio WHERE Nome NOT IN ( SELECT NomeStadio FROM Incontro WHERE (Squadra1 IN ( SELECT Paese FROM Nazionale WHERE Continente= Europa )) OR (Squadra2 IN ( SELECT Paese FROM Nazionale WHERE Continente= Europa )))

Esempio riepilogativo n.1 (b) 12 (b) Estrarre la capienza complessiva degli stadi in cui si giocano le partite che hanno come prima squadra una nazione sudamericana (ai fini della valutazione della capienza complessiva, si sommino le capienza associate a ciascuna gara, anche se più gare si svolgono nello stesso stadio). SELECT SUM(Capienza) FROM Stadio JOIN Incontro ON Nome=NomeStadio WHERE Squadra1 IN SELECT Paese FROM Nazionale WHERE Continente= Sudamerica

Esempio riepilogativo n.1 (c) 13 (c) Estrarre le città in cui si trova lo stadio in cui la squadra italiana gioca più partite. Soluzione specifica CREATE VIEW StadiItalia(NomeStadio,NroPartite) AS SELECT NomeStadio, COUNT(*) FROM Incontro WHERE Squadra1= Italia OR Squadra2= Italia GROUP BY NomeStadio;

Esempio riepilogativo n.1 (c) 14... cont. Soluzione specifica per (c) SELECT Citta FROM Stadio WHERE NomeStadio IN ( SELECT NomeStadio FROM StadiItalia WHERE NroPartite = ( SELECT MAX(NroPartite) FROM StadiItalia))

Esempio riepilogativo n.1 (c) 15 Soluzione più generale CREATE VIEW Stadi(NomeStadio,Squadra,NroPartite) AS SELECT NomeStadio, Paese, COUNT(DISTINCT Data, Ora) FROM Incontro, Nazionale WHERE (Squadra1=Paese OR Squadra2=Paese) GROUP BY NomeStadio, Paese;

Esempio riepilogativo n.1 (c) 16... cont. Soluzione più generale per (c) SELECT Citta FROM Stadio WHERE NomeStadio IN ( SELECT NomeStadio FROM Stadi WHERE Squadra= Italia AND NroPartite = ( SELECT MAX(NroPartite) FROM Stadi WHERE Squadra= Italia ))

Esempio riepilogativo n.2 17 Sia dato il seguente schema relazionale che descrive il parco moto di alcune persone MOTO(Targa, Cilindrata, Marca, Nazione,Tasse) PROPRIETARIO(Nome, Targa) (a) Estrarre i nomi dei proprietari di solo moto giapponesi di almeno due marche diverse.

Esempio riepilogativo n.2 (a) 18 Prima soluzione: SELECT Nome FROM Proprietario JOIN Moto ON Proprietario.Targa= Moto.Targa WHERE Nome NOT IN ( SELECT Nome FROM Proprietario JOIN Moto ON Proprietario.Targa= Moto.Targa WHERE Nazione<> Giappone ) GROUP BY Nome HAVING COUNT(DISTINCT Marca) >= 2

Esempio riepilogativo n.2 (a) 19 Seconda soluzione: SELECT P1.Nome FROM Proprietario P1, Moto M1, Proprietario P2, Moto M2 WHERE P1.Nome NOT IN ( SELECT Nome FROM Proprietario JOIN Moto ON Proprietario.Targa= Moto.Targa WHERE Nazione<> Giappone ) AND P1.Targa= M1.Targa AND P2.Targa= M2.Targa AND P1.Nome= P2.Nome AND M1.Marca<>M2.Marca

Esempio riepilogativo n.2 (b) (b) Estrarre per ogni cliente le tasse che devono essere pagate per tutte le moto possedute, ipotizzando che vi sono più proprietari per una moto, l ammontare delle tasse viene equamente diviso tra i proprietari. 20 CREATE VIEW TasseInd(Targa,Tassa) AS SELECT Targa, Tasse/COUNT(*) FROM Moto JOIN Proprietario ON Moto.Targa= Proprietario.Targa GROUP BY Targa; SELECT Nome, SUM(Tassa) FROM Proprietario JOIN TasseInd ON Proprietario.Targa= TasseInd.Targa GROUP BY Nome

21 Esercizi Esercizi 1-3 e 9 sul database Prodotti Premiere da cap. 6, pagg. 140-142, di Pratt; Esercizio 4.9-4.12 da Atzeni et al., pag. 161-2 IMPORTANTE Chi è ammesso alle esercitazioni guidate in laboratorio DEVE cimentarsi già a casa nello svolgimento degli esercizi assegnati sul database Prodotti Premiere