Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.

Slides:



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

Ricorsione in SQL-99.
Structured Query Language
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
SQL92 e XQuery1.0 a confronto1 SQL92 E XQUERY1.0 A CONFRONTO Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria - Sede di Modena Corso.
Biglietti e Ritardi: schema E/R
1 Misura Derivata: esempio dei biglietti CostoMedioBiglietto (CMB) calcolato come INCASSO/NUM_BIG. SUM AVG Implementazione in Analysis Services 1. Si definisce.
DML – Data Manipulation Language
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Basi di Dati prof. A. Longheu
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)
1 Corso di Laurea in Biotecnologie Informatica (Basi di Dati) SQL: Data Manipulation Language (DML) Anno Accademico 2009/2010 Da: Atzeni, Ceri, Paraboschi,
Laboratorio di Basi di Dati Introduzione ad Access 2ª Parte.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
SQL Esercitazione per il corso “Basi di Dati” Gabriel Kuper
SQL: Lezione 7 Nataliya Rassadko
SQL: Lezione 10 Nataliya Rassadko
Esercitazione.
Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.
Proiezione Dati una relazione r(X) e un sottoinsieme Y di X, la proiezione di r su Y si indica con Y ( r ) o PROJ Y ( r ) ed è linsieme di tuple su Y ottenute.
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.
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, Capitolo 4:SQL 16/10/2002.
Basi di dati Claudia Raibulet
SQL: Structured Query Language
E. Giunchiglia Basi di dati 1 (trasparenze basate su Atzeni, Ceri, Paraboschi, Torlone: Basi di dati, Capitolo 4) SQL 05/10/2004.
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL OPERATORI INSIEMISTICI IN SQL Siano due tabelle: GiochiSolitari(CodiceGioco, NomeGioco, PrezzoGioco)
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
MODELLO LOGICO DEI DATI
SQL.
Basi di dati - Modelli e linguaggi di interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo Torlone Copyright © The 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.
Microsoft Access (parte 5) Introduzione alle basi di dati 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
1 Data warehousing con SQL Server SQL Server è un RDBMS (Relational DataBase Management System) Analysis Services è un componente di SQL Server che offre.
SEFOC – SETTORE FORMAZIONE CONTINUA DEL PERSONALE CORSO MYSQL AVANZATO ROBERTO PENNOLINO – CARMELO MASSIMO PRIOLO PALERMO – 07 | 06 | 2011.
Basi di dati I Prof.ssa Rosalba Giugno Prof. Alfredo Pulvirenti SQL :Structured Query Language: SELECT (IV) SQL (Slide tratte in parte da da Atzeni, Ceri,
Le query in SQL Unità didattica sviluppata per l’ITIS “A. Volta” – Classe 5 sez. I Ing Domenico Liguori - Università degli studi di Napoli “Federico.
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?
Raggruppamento in SQL Esempio di raggruppamento
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.
Basi di dati I Prof.ssa Rosalba Giugno Prof. Alfredo Pulvirenti SQL :Structured Query Language: SELECT (III) SQL (Slide tratte in parte da da Atzeni, Ceri,
Query languages per Basi di Dati Relazionali  Algebra Relazionale:  basato sulla teoria degli insiemi  procedurale  usato per l’implementazione di.
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 =
Prof. Lorenzo Vita, Ing. Luigi Testa
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.
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.
E. Tinelli SQL come linguaggio di manipolazione dei dati 1 DML – Data Manipulation Language.
Il linguaggio SQL (Structured Query Language) è il linguaggio standard per creare, manipolare e interrogare database relazionali. SQL non è case-sensitive:
Esercizi SQL Group by. CREATE TABLE dipendente (codDip CHAR(8) NOT NULL UNIQUE PRIMARY KEY, cognome CHAR(60) NOT NULL, nome CHAR(60) NOT NULL, stipendio.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere.
Transcript della presentazione:

Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in cui una città può comparire più volte. Per evitare i duplicati SQL prevede la parola chiave distinct da inserire subito dopo select. select distinct Città from Persona where Cognome= Rossi

Join In SQL-2 è stata introdotta la seguente sintassi per esprimere il join ed estenderlo ai join esterni select AttrEspr [[as] Alias ]{, AttrEspr [[as] Alias ]} from Tabella [[as] Alias ] {[ TipoJoin ] join Tabella [[as] Alias ]on CondizioneJoin } [ where AltraCondizione ] TipoJoin può assumere i valori inner, right [outer], left [outer], full [outer] inner è il default. Cè anche lestensione natural che implica la condizione di uguaglianza sugli attributi con lo stesso nome.

Join implicito ed esplicito Padre e madre di ogni persona select paternita.figlio, padre, madre from maternita, paternita where paternita.figlio = maternita.figlio select paternita.figlio, padre, madre from maternita join paternita on paternita.figlio = maternita.figlio

Alias e variabili Luso degli alias consente di: compattare il codice fare riferimento a più esemplari della stessa tabella creare interrogazioni nidificate Se una tabella compare una sola volta non cè differenza fra variabile ed alias. Se compare più volte si parla più propriamente di variabile. Es. (impiegati il cui nome è anche il cognome di un altro impiegato) select I1.Cognome, I1.Nome from Impiegato I1, Impiegato I2 where I1.Nome = I2.Cognome and I1.Nome <> I2.Nome and I2.Dipart = Produzione

Ordinamento E possibile anche ordinare le righe del risultato di una interrogazione attraverso la clausola order by, a chiusura di una interrogazione. order by AttrdiOrdinamento [asc | desc] {, AttrdiOrdinamento [ a sc | de sc]} asc (default) indica ordinamento ascendente, desc discendente. Il primo attributo ha priorità, a parità di valore si usa il secondo ecc. select * from Persona order by Cognome, Nome

Operatori aggregati In algebra relazionale le espressioni vengono valutate sulle singole tuple in successione. Talvolta però possono essere necessarie informazioni derivabili dallesame di tutte le tuple o di più tuple contemporaneamente. SQL prevede una serie di operatori aggregati: count, sum, max, min, avg con sintassi count ( ) ([distinct | all] AttrEspr ) Es. Determinare il numero degli impiegati che si chiamano Rossi select count(*) from Impiegato where nome= Rossi

Interrogazioni con raggruppamento Gli operatori aggregati vengono applicati a tutte le righe che vengono prodotte come risultato delloperazione. Può essere necessario applicare loperatore solo ad un sottoinsieme delle righe. SQL non ammette che nella stessa target list compaiano funzioni aggregate ed espressioni a livello di riga, come il nome di un attributo. Loperatore group by specifica come suddividere le tabelle in sottoinsiemi. Es. select Dipart, sum(Stipendio) from Impiegato group by Dipart

Uninterrogazione scorretta: select nome, max(reddito) from persone Di chi sarebbe il nome? La target list deve essere omogenea select min(eta), avg(reddito) from persone

Il numero di figli di ciascun padre select padre, count(*) AS NumFigli from paternita group by Padre Operatori aggregati e raggruppamenti Padre paternita Figlio Luigi Sergio Olga Filippo Franco Andrea Aldo Franco PadreNumFigli Luigi Sergio 2 Franco2 1

Interrogazioni con raggruppamento In ogni interrogazione che usa group by, argomento della select (escludendo loperatore aggregato) può essere solo un sottoinsieme degli attributi usati nella clausola group by Es. di interrogazione scorretta select Ufficio from Impiegato group by Dipart Poiché deve venire prodotta una sola riga per ogni valore di Dipart, e, a parità di tale valore, possono aversi diversi valori di Ufficio, il risultato dellinterrogazione è indeterminato. In alcuni casi (es. se lattributo non compreso nella clausola group by è chiave) la query potrebbe fornire un risultato corretto, ma per semplicità SQL lo vieta comunque.

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 =p.nome group by padre corretta select padre, avg(f.reddito), p.reddito from persone f join paternita on figlio = nome join persone p on padre =p.nome group by padre, p.reddito

Condizioni sui gruppi Può essere anche necessario restringere i gruppi attraverso lapplicazione di condizioni. Se le condizioni sono verificabili a livello delle singole righe, basta utilizzare la clausola where, altrimenti si aggiunge una condizione alla group by attraverso lestensione having select Dipart, sum(Stipendio) as SommaStipendi from Impiegati group by Dipart having sum(Stipendio) > 100 Se non si specifica group by e si usa having da solo la condizione è applicata a tutte le righe. Il problema è che se la condizione non è verificata, il risultato sarà vuoto.

Condizioni sui gruppi I padri i cui figli hanno un reddito medio maggiore di 25 select padre, avg(f.reddito) from persone f join paternita on figlio = nome group by padre having avg(f.reddito) > 25

WHERE o HAVING? I padri i cui figli sotto i 30 anni hanno un reddito medio maggiore di 20 select padre, avg(f.reddito) from persone f join paternita on figlio = nome where eta < 30 group by padre having avg(f.reddito) > 25

Select La forma di select cui siamo arrivati dopo le estensioni viste è quindi: SelectSQL ::= select ListaAttributiOEspressioni from ListaTabelle [ where CondizioniSemplici ] [group by ListaAttributiDiRaggruppamento ] [ having CondizioniAggregate ] [ order by ListaAttributiDiOrdinamento ]

Interrogazioni di tipo insiemistico SQL fornisce anche gli operatori di tipo insiemistico union, intersect, except (minus) con la seguente sintassi: SelectSQL { [all]} SelectSQL NB intersect e except potrebbero anche essere derivati attraverso opportune query gli operatori insiemistici eseguono per default una eliminazione dei duplicati; all specifica di non farla gli schemi su cui si opera non devono essere identici ma avere uguale numero di attributi, con domini compatibili. La corrispondenza è per posizione.

Interrogazioni di tipo insiemistico Es. Estrarre nomi e cognomi degli impiegati select Nome from Impiegato union select Cognome from Impiegato Estrarre i cognomi degli impiegati che sono anche nomi select Nome from Impiegato intersect select Cognome from Impiegato

Interrogazioni nidificate E possibile anche realizzare clausole where in cui il confronto non avviene fra predicati semplici o fra valori, ma fra valori e risultati di interrogazioni. Tipicamente, il risultato dellinterrogazione è un attributo. Sorge il problema di confrontare un valore con un insieme di valori (il risultato della interrogazione). SQL offre 2 possibilità per estendere i normali operatori di confronto: all specifica che il confronto è vero se è vero per tutte le righe del risultato dellinterrogazione. any specifica che il confronto è vero se è vero per una qualunque delle righe del risultato dellinterrogazione.

Interrogazioni Nidificate Es. select * from Impiegato where Dipart = any (select Nome from Dipartimento where Città=Firenze) Il risultato è una tabella che comprende tutte le righe di IMPIEGATO per cui il valore Dipart è uguale ad almeno uno dei valori di Nome in DIPARTIMENTO, limitatamente alle tuple per cui Citta=Firenze. Lo stesso risultato si poteva ottenere con un join, ma così, specialmente per interrogazioni complesse, è più leggibile.

Nome e reddito del padre di Franco select Nome, Reddito from Persone, Paternita where Nome = Padre and Figlio = 'Franco' select Nome, Reddito from Persone where Nome = (select Padre from Paternita where Figlio = 'Franco')