Informatica II – Basi di Dati (07/08) – Parte 2 Gianluca Torta Dipartimento di Informatica dell’Università di Torino

Slides:



Advertisements
Presentazioni simili
Interrogazioni Semplici Le operazioni di interrogazione vengono specificate per mezzo dellistruzione select select ListaAttributi from ListaTabelle [where.
Advertisements

Informatica II – Basi di Dati (08/09) – Parte 1
Corso di Laurea in Biotecnologie Informatica (Basi di Dati)
DB -Algebra Relazionale
Principale limitazione di AR e SQL-92: interrogazioni ricorsive
Calcolo Relazionale.
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
1 Pregnana Milanese Assessorato alle Risorse Economiche Bilancio Preventivo P R O P O S T A.
Algebra e calcolo relazionale (parte 2)
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Algebra relazionale Presentazione 12.1
Principale limitazione di AR e SQL-92: interrogazioni ricorsive IMPIEGATO NOMENOMECAPO RossiVerdi NeriVerdi DeSio TucciDeSio DeLucaDeSio Lazio selezionare.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Frontespizio Economia Monetaria Anno Accademico
SQL.
SQL Dati i seguenti schemi relazionali:
19/01/2014 Viste. 19/01/2014 Viste Le Viste Logiche o Viste o View possono essere definite come delle tabelle virtuali, i cui dati sono riaggregazioni.
Istruzione SELECT (versione base)
Corso di Informatica (Basi di Dati)
1 Corso di Laurea in Biotecnologie Informatica (Basi di Dati) SQL: Data Manipulation Language (DML) Anno Accademico 2009/2010 Da: Atzeni, Ceri, Paraboschi,
Corso di Informatica (Basi di Dati)
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
Laboratorio di Basi di Dati Introduzione ad Access 2ª Parte.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
Manipolazione dei dati I comandi SQL che permettono di modificare il contenuto di una base di dati sono insertdeleteupdate insert ha la seguente sintassi:
SELECT STATEMENT Clausola WHERE permette di limitare il numero di record da estrarre SELECT */ [DISTINCT] colonna/ espressione [alias],… FROM table [WHERE.
SQL basato su ANSI (American National Standards Institute) – standard SQL SQL – Structured Query Language è un linguaggio dichiarativo e permette di comunicare.
Basi di dati Claudia Raibulet
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
2 3 4 RISERVATEZZA INTEGRITA DISPONIBILITA 5 6.
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
TECNOLOGIE DELLINFORMAZIONE E DELLA COMUNICAZIONE PER LE AZIENDE Materiale di supporto alla didattica.
1 Guida per linsegnamento nei corsi per il conseguimento del CERTIFICATO DI IDONEITÀ ALLA GUIDA DEL CICLOMOTORE.
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
1 Questionario di soddisfazione ATA - a. sc. 2008/09 Il questionario è stato somministrato nel mese di aprile Sono stati restituiti 29 questionari.
Gerarchie Ricorsive Una gerarchia ricorsiva deriva dalla presenza di una ricorsione o ciclo (un anello nel caso più semplice) nello schema operazionale.
1 Il Linguaggio SQL Il Linguaggio SQL Prof. Lorenzo Vita, Ing. Luigi Testa.
SQL.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione.
Informatica II – Basi di Dati (07/08) – Parte 2 Gianluca Torta Dipartimento di Informatica dell’Università di Torino
SQL Interrogazioni. 2 Interrogazioni in SQL Non esiste un SQL standard (vari dialetti) Formulazione di interrogazioni (query) è parte del Data Manipulation.
Informatica Introduzione alle basi di dati Lezione 8 Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Informatica II – Basi di Dati (07/08) – Parte 2 Gianluca Torta Dipartimento di Informatica dell’Università di Torino
Esercitazione 7.
1 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Informatica per laurea triennale.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
Algebra relazionale (III). Esempi di Interrogazioni: 3 Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di Tutti gli impiegati?
Interrogazioni (parte 2)
Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere. L’interrogazione.
Query languages per Basi di Dati Relazionali  Algebra Relazionale:  basato sulla teoria degli insiemi  procedurale  usato per l’implementazione di.
Join Proprietà Il join di r 1 e r 2 contiene un numero di tuple compreso fra zero e il prodotto di |r 1 | e |r 2 | se il join di r 1 e r 2 è completo allora.
Vincoli Interrelazionali Per i vincoli visti l’inserimento di un valore che li viola viene semplicemente impedito. In caso di vincoli di integrità referenziale,
Vincoli interrelazionali
Raggruppamenti e target list scorretta select padre, avg(f.reddito), p.reddito from persone f join paternita on figlio = nome join persone p on padre =
Lezione 6 - SQL. Linguaggi per DB Per interagire con le basi di dati occorre un linguaggio Linguaggio SQL (Structured Query Language), linguaggio standardizzato.
Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere. L’interrogazione.
Funzionalità del DBMS relazionale l Funzioni per –definizione della base di dati –inserimento / rimozione /aggiornamento di informazioni deve soddisfare.
Approfondimenti SQL.
Operazioni Relazionali
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
SQL Linguaggio per l’interrogazione di una base dati.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Il linguaggio SQL (Structured Query Language) è il linguaggio standard per creare, manipolare e interrogare database relazionali. SQL non è case-sensitive:
Transcript della presentazione:

Informatica II – Basi di Dati (07/08) – Parte 2 Gianluca Torta Dipartimento di Informatica dell’Università di Torino

4 – Accesso ai dati di un DB SQL

3 Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema Modifica, aggiunta, rimozione tuple Interrogazione a DB: funzione che, dato un DB, produce una relazione su un dato schema (non necessariamente uno degli schemi definiti nel DB)

4 Accesso ai dati di un DB Aggiornamento e interrogazione vengono effettuati usando specifici linguaggi Esempio di linguaggio di interrogazione e aggiornamento: SQL Esempio di calcolo di interrogazione: algebra relazionale

5 Interrogazioni in SQL SQL ha uno standard (ultima versione 2008) implementato in modo più o meno completo e aggiornato nei vari DBMS DML (Data Manipulation Language) + DDL (Data Declaration Language) Formulazione di interrogazioni (query) è parte del DML Anche usato nel DDL (per esempio, per dichiarare vincoli di integrità)

6 Interrogazioni in SQL Paradigma dichiarativo: si specifica la descrizione dell’obiettivo e non il modo con cui ottenerlo A differenza dell’algebra relazionale, che è procedurale

7 Cenni sull’implementazione Interrogazione in SQL viene tradotta in linguaggio procedurale Sulla traduzione si fanno ottimizzazioni algebriche (ecco a cosa serve l’algebra…) … … e non (queste ultime dipendono dalle strutture sottostanti al DBMS in questione)

8 Sintassi Esistono, in generale, più modi per effettuare un’interrogazione: scelte basate sulla leggibilità (più che sull’efficienza…) Struttura essenziale (introdurremo le variazioni di volta in volta): select ListaAttributi (target list) from ListaTabelle (clausola “from”) [ where Condizione] (clausola “where”)

9 Significato dell’interrogazione Si considera il prodotto cartesiano fra le tabelle della clausola “from” Si selezionano quelle tuple che soddisfano la condizione della clausola “where” (opzionale) Si danno in ouput i valori di quegli attributi che sono elencati nella target list (la lista dopo la clausola “select”)

10 Tabella “Impiegato” NomeCognomeDipartUfficioStipendioCittà MarioRossiAmministr1015Milano CarloBianchiProd2012Torino GiuseppeVerdiAmministr2013Roma FrancoNeriDistrib1615Napoli CarloRossiDirezione1427Milano LorenzoLanziDirezione721Genova PaolaBurroniAmmistr7513Venezia MarcoFrancoProd2014Roma Impiegato

11 Interrogazione 1 select Stipendio as Salario from Impiegato where Cognome = ‘Rossi’ Salario alias

12 Interrogazione 2 select * from Impiegato where Cognome = ‘Rossi’ tutti NomeCognomeDipartUfficioStipendioCittà MarioRossiAmministr1015Milan o CarloRossiDirezione1427Milan o

13 Interrogazione 3 select Stipendio/12 as StipMens from Impiegato where Cognome = ‘Bianchi’ StipMens 1

14 Sulla clausola “where” Ammette come argomento un’espressione logica (condizione) Predicati semplici combinati con not, and, or ( not ha la precedenza, consigliato l’uso di parantesi (, ) ) Ciascun predicato usa operatori: =, <>,, = Confronto tra valori di attributi, costanti, espressioni

15 Tabella “Dipartimento’’ NomeIndirizzoCittà AmministrVia Tito Livio 27Milano ProdP.le Lavater 3Torino DistribVia Segre 9Roma DirezioneVia Tito Livio 27Milano RicercaVia Morone 6Milano Dipartimento

16 Interrogazione 4 (join) Restituire nome e cognome degli impiegati e delle città in cui lavorano select * from Impiegato,Dipartimento where Dipart = Dipartimento.Nome collega tra di loro tuple tramite i valori uguali degli attributi NOTA: usa.

17 NomeCognomeDipartUffici o StipendioCittàNomeIndirizz o Città MarioRossiAmministr1015MilanoAmminist r Via Tito Livio 27 Milano CarloBianchiProd2012TorinoProd P.le Lavater 3 Torino GiuseppeVerdiAmministr2013RomaAmminist r Via Tito Livio 27 Milano FrancoNeriDistrib1615NapoliDistrib Via Segre 9 Roma CarloRossiDirezione1427MilanoDirezione Via Tito Livio 27 Milano LorenzoLanziDirezione721GenovaDirezione Via Tito Livio 27 Milano PaolaBurroniAmmistr7513VeneziaAmminist r Via Tito Livio 27 Milano MarcoFrancoProd2014RomaProd P.le Lavater 3 Torino da Impiegato da Dipartimento Risultato interrogazione 4

18 Interrogazione 4’ Restituire nome e cognome degli impiegati e delle città in cui lavorano select Impiegato.Nome,Cognome, Dipartimento.Città from Impiegato,Dipartimento where Dipart = Dipartimento.Nome La notazione punto (.) serve per disambiguare Suggerimento: “from”, “where”, target list

19 Risultato interrogazione 4’ Impiegato.NomeCognomeDipartimento.Città MarioRossiMilano CarloBianchiTorino GiuseppeVerdiMilano FrancoNeriRoma CarloRossiMilano LorenzoLanziMilano PaolaBurroniMilano MarcoFrancoTorino

20 Interrogazione 5 (come 4’, ancora join…) select I.Nome, Cognome, D.Città from Impiegato [as] I, Dipartimento [as] D where Dipart = D.Nome L’aliasing per le tabelle serve a disambiguare, (oltre che ad altri scopi)

21 Interrogazione 6 select Nome,Cognome from Impiegato where Ufficio = 20 and Dipart =‘Amministr’ NomeCognome GiuseppeVerdi

22 Interrogazione 7 e 8 select Nome, Cognome from Impiegato where Dipart=‘Prod’ or Dipart=‘Amministr’ select Nome, Cognome from Impiegato where Cognome=‘Rossi’ and (Dipart=‘Prod’ or Dipart=‘Amministr’) Nome Mario 2 NomeCognome MarioRossi CarloBianchi PaolaBurroni MarcoFranco GiuseppeVerdi

23 Operatore like _ = carattere arbitrario % = stringa di lunghezza arbitraria (anche 0) di caratteri arbitrari Esempi: like ab%ba_ = tutte le stringhe che cominciano con “ab” e che hanno “ba” come coppia di caratteri prima dell’ultima posizione (es. abjjhhdhdbak,abbap)

24 Interrogazione 9 select * from Impiegato where Cognome like ‘_o%i’ or Cognome like ‘_u%i’ NomeCognomeDipartUfficioStipendioCittà MarioRossiAmministr1045Milano CarloRossiDirezioni1480Milano PaoloBurroniAmministr7540Venezia

25 Gestione dei valori nulli Attributo con valore nullo = non applicabile a una certa tupla, o valore sconosciuto, o non si sa nulla SQL offre il predicato “is null”: Attributo is [not] null

26 Gestione dei valori nulli Stipendio>13 : cosa succede se l’attributo Stipendio è nullo? Scelte: Logica a 2 valori e controllo esplicito. Per esempio: (Stipendio > 13) or (Stipendio <= 13) or (Stipendio is null) Usare un terzo valore di verità unknown: soluzione che crea problemi nei casi complessi (valutazione “globale” delle formule logiche)

27 Uso delle variabili di alias Non solo per disambiguare la notazione Ci sono casi in cui una stessa tabella serve più di una volta Caso speciale: quando si deve confrontare una tabella con se stessa (il calcolo relazionale è relation- oriented, non tuple-oriented )

28 Interrogazione 10 Estrarre nome e cognome degli impiegati che hanno lo stesso cognome (ma nome diverso) di impiegati che lavorano nel dipartimento Produzione

29 Interrogazione 10 Estrarre nome e cognome degli impiegati che hanno lo stesso cognome (ma nome diverso) di impiegati che lavorano nel dipartimento Produzione select I1.Cognome, I1.Nome from Impiegato I1, Impiegato I2 where I1.Cognome = I2.Cognome and I1.Nome <> I2.Nome and I2.Dipart = ‘Prod’

30 Interrogazione 10 Estrarre nome e cognome degli impiegati che hanno lo stesso cognome (ma nome diverso) di impiegati che lavorano nel dipartimento Produzione select I1.Cognome, I1.Nome from Impiegato I1, Impiegato I2 where I1.Cognome = I2.Cognome and I1.Nome <> I2.Nome and I2.Dipart = ‘Prod’ per evitare output di tupla con se stessa I2 usata per trovare tuple assoc. a ‘Prod’

31 Interrogazione 11 Estrarre il nome e lo stipendio dei capi degli impiegati che guadagnano più dei loro capi, date: Impiegati(Matricola, Nome, Età, Stipendio) Supervisione(Capo, Impiegato) dove Capo e Impiegato sono chiavi esterne di Impiegati (e.g., sono dei numeri di matricola)

32 Interrogazione 11 (sol.) select I1.Nome, I1.Stipendio from Impiegato I1, Impiegato I2, Supervisione where I1.Matricola = Capo and I2.Matricola = Impiegato and I2.Stipendio > I1.Stipendio I1 per i capi, I2 per gli impiegati

33 Join esplicito Abbiamo visto un modo di fare il join mettendo le condizioni di join nella clausola where Si può utilizzare esplicitamente un operatore di join

34 Interrogazione 26 (join esplicito) select Impiegato.Nome, Cognome, Dipartimento.Città from Impiegato,Dipartimento where Dipart = Dipartimento.Nome select Impiegato.Nome,Cognome, Dipartimento.Città from Impiegato join Dipartimento On (Dipart =Dipartimento.Nome)

35 Interrogazione 27 (join esplicito, riprende la 11) Estrarre il nome e lo stipendio dei capi degli impiegati che guadagnano piú dei loro capi select I1.Nome, I1.Stipendio from Impiegato I1, Impiegato I2, Supervisione where I1.Matricola = Capo and I2.Matricola = Impiegato and I2.Stipendio > I1.Stipendio select I1.Nome, I1.Stipendio from (Impiegato I1 join Supervisione on (I1.Matricola = Capo)) join Impiegato I2 on (I2.Matricola = Impiegato) where I2.Stipendio > I1.Stipendio

36 Outer join Fino ad adesso abbiamo visto inner join Parliamo adesso di outer join Serve quando il join non è completo … Completo: dato R1 join R2 on (…), per ciascuna tupla di R1 esiste almeno una tupla di R2 che si combina con essa, e viceversa per R2 … se si vuole mantenere l’informazione anche per quelle tuple che non partecipano al join

37 Tabelle “Guidatore” e “Automobile” NomeCognomeNumPatente Mario Carlo Marco Rossi Bianchi Neri VR Y PZ B AP R TargaMarcaModelloNumPatente AB 574 WW AA 652 FF BJ 747 XX BB 421 JJ Fiat Lancia Fiat Punto Brava Delta Uno VR Y PZ B MI U

38 Inner join (“normale”) select Nome,Cognome,Guidatore.NumPatente, Targa from Guidatore join Automobile on (Guidatore.NumPatente=Automobile.NumPatente) NomeCognomeNumPatenteTargaMarcaModello Mario Carlo Rossi Bianchi VR Y PZ B AB 574 WW AA 652 FF BJ 747 XX Fiat Lancia Punto Brava Delta Join non completo

39 Outer left join (interrogazione 28) select Nome,Cognome,Guidatore.NumPatente, Targa from Guidatore left join Automobile on (Guidatore.NumPatente=Automobile.NumPatente) NomeCognomeNumPatenteTargaMarcaModello Mario Carlo Marco Rossi Bianchi Neri VR Y PZ B AP R AB 574 WW AA 652 FF BJ 747 XX null Fiat Lancia null Punto Brava Delta null

40 Outer right join (interrogazione 29) select Nome,Cognome,Guidatore.NumPatente, Targa from Guidatore right join Automobile on (Guidatore.NumPatente=Automobile.NumPatente) NomeCognomeNumPatenteTargaMarcaModello Mario Carlo null Rossi Bianchi null VR Y PZ B null AB 574 WW AA 652 FF BJ 747 XX BB 421 JJ Fiat Lancia Fiat Punto Brava Delta Uno

41 Outer full join (interrogazione 30) select Nome,Cognome,Guidatore.NumPatente, Targa from Guidatore full join Automobile on (Guidatore.NumPatente=Automobile.NumPatente) NomeCognomeNumPatenteTargaMarcaModello Mario Carlo Marco null Rossi Bianchi Neri null VR Y PZ B AP R null AB 574 WW AA 652 FF BJ 747 XX null BB 421 JJ Fiat Lancia null Fiat Punto Brava Delta null Uno

42 Join naturale (interrogazione 31) select Nome,Cognome,Guidatore.NumPatente, Targa from Guidatore natural join Automobile NomeCognomeNumPatenteTargaMarcaModello Mario Carlo Rossi Bianchi VR Y PZ B AB 574 WW AA 652 FF BJ 747 XX Fiat Lancia Punto Brava Delta Attributo comune: NumPatente