Basi di Dati: Corso di laboratorio
|
|
|
- Raffaella Mora
- 9 anni fa
- Visualizzazioni
Transcript
1 Basi di Dati: Corso di laboratorio Lezioni 6 7 Raffaella Gentilini 1 / 46
2 Sommario 1 Subquery (o Interrogazioni Nidificate) Interrogazioni Annidate con Predicati di Confronto Interrogazioni Annidate con Predicati ALL, ANY Interrogazioni Annidate con Predicato EXISTS Subquery Correlate Livelli Multipli di Annidamento Subquery e Divisione 2 / 46
3 Subquery Subquery e uno statement in un altro statement si puo trovare nei seguenti punti dei seguenti statement: 1 nelle clausole WHERE e HAVING dello statement SELECT; 2 nella clausola WHERE di un INSERT INTO, DELETE FROM, UPDATE; 3 nella clausola SET di un comando UPDATE. dalla possibilita di annidare query deriva l aggettivo structured di SQL (Structured Query Language) 3 / 46
4 Subquery Subquery La forma nidificata e piu procedurale della forma flat, e per questo talvolta piu leggibile Una subquery e sempre tra parentesi e puo restituire: un singolo valore che si puo usare come espressione scalare una colonna che si puo usare come elenco di costanti una tabella che si puo usare ovunque e possibile usare una tabella Le subquery non possono contenere operatori insiemistici 4 / 46
5 Subquery Si consideri lo schema relazionale visto nelle lezioni precedente: persona(id persona, codice fiscale, nome, cognome, data nascita) corso(id corso, id insegnante, sigla, crediti, descrizione) frequenza(id studente,id corso,voto): dove id studente ed id corso sono chiavi esterne su persona e corso SELECT persona.nome, persona.cognome FROM persona WHERE persona.id persona IN (SELECT corso.id insegnante FROM corso) 5 / 46
6 Subquery Si consideri lo schema relazionale visto nelle lezioni precedente: persona(id persona, codice fiscale, nome, cognome, data nascita) corso(id corso, id insegnante, sigla, crediti, descrizione) frequenza(id studente,id corso,voto): dove id studente ed id corso sono chiavi esterne su persona e corso SELECT persona.nome, persona.cognome FROM persona WHERE persona.id persona IN (SELECT corso.id insegnante FROM corso) Nome e cognome degli insegnanti che tengono almeno un corso 6 / 46
7 Subquery e operatore IN Il predicato IN Il predicato puo essere applicato a liste di attributi puo essere negato SELECT persona.nome, persona.cognome FROM persona WHERE persona.id persona NOT IN (SELECT corso.id insegnante FROM corso WHERE corso.id insegnante IS NOT NULL) 7 / 46
8 Subquery e operatore IN Il predicato IN Il predicato puo essere applicato a liste di attributi puo essere negato SELECT persona.nome, persona.cognome FROM persona WHERE persona.id persona NOT IN (SELECT corso.id insegnante FROM corso WHERE corso.id insegnante IS NOT NULL) Nome e cognome degli insegnanti che non tengono alcun corso 8 / 46
9 Subquery e Predicati di Confronto Gli operatori di confronto =, <>, <, >, <=, >= si possono usare solo se l interrogazione annidata al piu una riga (subquery scalare) se la subquery non restituisce alcuna riga, il confronto da come risultato NULL in PostgreSQL, solo <> ed = sono supportati se il confronto coinvolge piu colonne SELECT id corso FROM corso WHERE crediti = (SELECT MAX(crediti) FROM corso ) 9 / 46
10 Subquery e Predicati di Confronto Gli operatori di confronto =, <>, <, >, <=, >= si possono usare solo se l interrogazione annidata al piu una riga (subquery scalare) se la subquery non restituisce alcuna riga, il confronto da come risultato NULL in PostgreSQL, solo <> ed = sono supportati se il confronto coinvolge piu colonne SELECT id corso FROM corso WHERE crediti = (SELECT MAX(crediti) FROM corso ) Id dei corsi con il massimo numero di crediti 10 / 46
11 Subquery e Predicati di Confronto Gli operatori di confronto =, <>, <, >, <=, >= si possono usare solo se l interrogazione annidata al piu una riga (subquery scalare) se la subquery non restituisce alcuna riga, il confronto da come risultato NULL in PostgreSQL, solo <> ed = sono supportati se il confronto coinvolge piu colonne SELECT id corso FROM corso WHERE crediti = (SELECT MAX(crediti) FROM corso ) Id dei corsi con il massimo numero di crediti 11 / 46
12 Subquery e Predicato ANY Per usare predicati di confronto con selezioni che possono restituire piu di una riga, occorre usare le quantificazioni ALL oppure ANY Il predicato ANY da vero se il confronto e vero per almeno una riga, da falso se tutti i confronti di riga sono falsi, o la subquery restituisce una tabella vuota se non ci sono confronti veri ed almeno uno e NULL, allora il risultato e NULL Il predicato IN e equivalente a = ANY 12 / 46
13 Subquery e Predicato ANY SELECT persona.nome, persona.cognome FROM persona WHERE persona.id persona = ANY (SELECT corso.id insegnante FROM corso) 13 / 46
14 Subquery e Predicato ANY SELECT persona.nome, persona.cognome FROM persona WHERE persona.id persona = ANY (SELECT corso.id insegnante FROM corso) Nome e cognome degli insegnanti che tengono almeno un corso 14 / 46
15 Subquery e Predicato ALL Il predicato ALL da vero se tutti i confronti di riga sono veri o la subquery restituisce la tabella vuota, da falso se almeno un confronto e falso restituisce NULL se non ci sono confronti falsi, ma almeno uno e indefinito Il predicato NOT IN e equivalente a <> ALL 15 / 46
16 Subquery e Predicato ALL SELECT persona.nome, persona.cognome FROM persona WHERE persona.id persona <> ALL (SELECT corso.id insegnante FROM corso WHERE corso.id insegnante IS NOT NULL) 16 / 46
17 Subquery e Predicato ALL SELECT persona.nome, persona.cognome FROM persona WHERE persona.id persona <> ALL (SELECT corso.id insegnante FROM corso WHERE corso.id insegnante IS NOT NULL) Nome e cognome degli insegnanti che non tengono alcun corso 17 / 46
18 Subquery e Predicato ALL SELECT persona.nome, persona.cognome FROM persona WHERE persona.id persona <> ALL (SELECT corso.id insegnante FROM corso WHERE corso.id insegnante IS NOT NULL) Nome e cognome degli insegnanti che non tengono alcun corso I valori NULL nella colonna id insegnante devono essere soppressi per evitare che rendano il predicato <> ALL non vero! 18 / 46
19 Subquery e Predicato EXISTS Il predicato EXISTS e vero se la subquery restituisce almeno una riga altrimenti e falso Facendo uso di NOT EXISTS e possibile verificare se la subquery non restituisce alcuna tupla SELECT persona.nome, persona.cognome FROM persona WHERE EXISTS (SELECT FROM corso WHERE crediti > 3) 19 / 46
20 Subquery e Predicato EXISTS Il predicato EXISTS e vero se la subquery restituisce almeno una riga altrimenti e falso Facendo uso di NOT EXISTS e possibile verificare se la subquery non restituisce alcuna tupla SELECT persona.nome, persona.cognome FROM persona WHERE EXISTS (SELECT FROM corso WHERE crediti > 3) Si noti che la query sopra non e molto interessante, in quanto il risultato della subquery e sempre lo stesso, ovvero non dipende dalla specifica tupla del blocco esterno 20 / 46
21 Subquery Correlate Se la subquery fa riferimento al blocco esterno, allora si dice correlata SELECT persona.nome, persona.cognome FROM persona P WHERE EXISTS (SELECT FROM corso C WHERE crediti > 3 AND id insegnante = P.id persona ) Adesso il risultato della query innestata dipende dalla persona specificata, e la semantica diventa: Per ogni tupla del blocco esterno, considera il valore di P.id persona e risolvi la query innestata 21 / 46
22 Subquery Correlate Se la subquery fa riferimento al blocco esterno, allora si dice correlata SELECT persona.nome, persona.cognome FROM persona P WHERE EXISTS (SELECT FROM corso C WHERE crediti > 3 AND id insegnante = P.id persona ) Insegnanti che tengono almeno un corso con piu di 3 crediti Adesso il risultato della query innestata dipende dalla persona specificata, e la semantica diventa: Per ogni tupla del blocco esterno, considera il valore di P.id persona e risolvi la query innestata 22 / 46
23 Subquery Correlate SELECT persona.nome, persona.cognome FROM persona WHERE EXISTS ( SELECT frequenza.voto FROM frequenza WHERE persona.id persona=frequenza.id studente AND frequenza.voto IS NOT NULL) AND 10 <= ALL ( SELECT frequenza.voto FROM frequenza WHERE persona.id persona=frequenza.id studente AND frequenza.voto IS NOT NULL) 23 / 46
24 Subquery Correlate SELECT persona.nome, persona.cognome FROM persona WHERE EXISTS ( SELECT frequenza.voto FROM frequenza WHERE persona.id persona=frequenza.id studente AND frequenza.voto IS NOT NULL) AND 10 <= ALL ( SELECT frequenza.voto FROM frequenza WHERE persona.id persona=frequenza.id studente AND frequenza.voto IS NOT NULL) Studenti che hanno preso solo voti superiori a / 46
25 Livelli Multipli di Annidamento Una subquery puo fare uso a sua volta di altre subquery. Il risultato si puo ottenere risolvendo a partire dal blocco piu interno. persone(nome, eta, reddito) maternita (madre,figlio) paternita (padre,figlio) SELECT nome,reddito FROM persone WHERE nome IN. (SELECT padre FROM paternita. WHERE figlio =ANY. (SELECT nome FROM persone. WHERE reddito>40)) 25 / 46
26 Unnesting Unnesting E spesso possibile ricondursi ad una forma flat, ma la cosa non e sempre cosi ovvia. Ad esempio, la query precedente si puo anche scrivere come: SELECT DISTINCT p.nome,p.reddito FROM persone p, paternita, persone f WHERE p.nome=padre AND figlio=f.nome AND f.reddito>40 26 / 46
27 Subquery e Divisione Impiegati(CodiceImp, Nome, Sede, Ruolo, Stipendio) Sedi(Sede, Responsabile, Citta ) Le subquery permettono di eseguire la divisione relazionale. Sedi in cui sono presenti tutti i ruoli equivale a Quali sono le sedi che verificano: Per ogni ruolo, tale ruolo e presente nella sede? In SQL non esiste l operatore di quantificazione universale 27 / 46
28 Subquery e Divisione Impiegati(CodiceImp, Nome, Sede, Ruolo, Stipendio) Sedi(Sede, Responsabile, Citta ) Le subquery permettono di eseguire la divisione relazionale. Sedi in cui sono presenti tutti i ruoli equivale a Quali sono le sedi che verificano: Per ogni ruolo, tale ruolo e presente nella sede? Tuttavia xp(x) P(x). 28 / 46
29 Subquery e Divisione Impiegati(CodiceImp, Nome, Sede, Ruolo, Stipendio) Sedi(Sede, Responsabile, Citta ) Le subquery permettono di eseguire la divisione relazionale. Sedi in cui sono presenti tutti i ruoli equivale a Quali sono le sedi che verificano: Per ogni ruolo, tale ruolo e presente nella sede? Dunque possiamo scrivere in SQL una query equivalente a quelle sopra, riformulando il problema come: 29 / 46
30 Subquery e Divisione Impiegati(CodiceImp, Nome, Sede, Ruolo, Stipendio) Sedi(Sede, Responsabile, Citta ) Le subquery permettono di eseguire la divisione relazionale. Sedi in cui sono presenti tutti i ruoli equivale a Quali sono le sedi che verificano: Per ogni ruolo, tale ruolo e presente nella sede? Quali sono le sedi che verificano: Non esiste un ruolo non presente nella sede? 30 / 46
31 Subquery e Divisione Sedi in cui non esiste un ruolo sono non presente Mediante l uso di subquery, tale interrogazione si puo formulare in SQL come: SELECT Sede FROM Sedi AS S WHERE NOT EXISTS (SELECT FROM Impiegati I1 WHERE NOT EXISTS (SELECT FROM Impiegati I2 WHERE S.Sede=I2.Sede AND. I1.Ruolo=I2.Ruolo)) 31 / 46
32 Subquery e Divisione SELECT Sede FROM Sedi AS S WHERE NOT EXISTS (SELECT FROM Impiegati I1 WHERE NOT EXISTS (SELECT FROM Impiegati I2 WHERE S.Sede=I2.Sede AND. I1.Ruolo=I2.Ruolo)) Il blocco piu interno viene valutato per ogni combinazione di S ed I1 32 / 46
33 Subquery e Divisione SELECT Sede FROM Sedi AS S WHERE NOT EXISTS (SELECT FROM Impiegati I1 WHERE NOT EXISTS (SELECT FROM Impiegati I2 WHERE S.Sede=I2.Sede AND. I1.Ruolo=I2.Ruolo)) Il blocco intermedio funge da divisore (riguarda I1.Ruolo) 33 / 46
34 Subquery e Divisione SELECT Sede FROM Sedi AS S WHERE NOT EXISTS (SELECT FROM Impiegati I1 WHERE NOT EXISTS (SELECT FROM Impiegati I2 WHERE S.Sede=I2.Sede AND. I1.Ruolo=I2.Ruolo)) Data una sede S, se in S manca un ruolo: 34 / 46
35 Subquery e Divisione SELECT Sede FROM Sedi AS S WHERE NOT EXISTS (SELECT FROM Impiegati I1 WHERE NOT EXISTS (SELECT FROM Impiegati I2 WHERE S.Sede=I2.Sede AND. I1.Ruolo=I2.Ruolo)) Data una sede S, se in S manca un ruolo: la subquery piu interna non restituisce nulla 35 / 46
36 Subquery e Divisione SELECT Sede FROM Sedi AS S WHERE NOT EXISTS (SELECT FROM Impiegati I1 WHERE NOT EXISTS (SELECT FROM Impiegati I2 WHERE S.Sede=I2.Sede AND. I1.Ruolo=I2.Ruolo)) Data una sede S, se in S manca un ruolo: la subquery piu interna non restituisce nulla quindi la subquery intermedia restituisce almeno una tupla 36 / 46
37 Subquery e Divisione SELECT Sede FROM Sedi AS S WHERE NOT EXISTS (SELECT FROM Impiegati I1 WHERE NOT EXISTS (SELECT FROM Impiegati I2 WHERE S.Sede=I2.Sede AND. I1.Ruolo=I2.Ruolo)) Data una sede S, se in S manca un ruolo: la subquery piu interna non restituisce nulla quindi la subquery intermedia restituisce almeno una tupla... e la clausola WHERE non e soddisfatta per S 37 / 46
38 Subquery: come eseguire la divisione relazionale Vediamo un altro esempio: persona(id persona, codice fiscale, nome, cognome, data nascita) corso(id corso, id insegnante, sigla, crediti, descrizione) frequenza(id studente,id corso,voto) Chi sono gli studenti che seguono tutti i corsi di matematica? equivale a Chi sono gli studenti che verificano: Per ogni corso di matematica, lo studente segue tale corso?... e possiamo scrivere in SQL una query equivalente come: 38 / 46
39 Subquery: come eseguire la divisione relazionale Vediamo un altro esempio: persona(id persona, codice fiscale, nome, cognome, data nascita) corso(id corso, id insegnante, sigla, crediti, descrizione) frequenza(id studente,id corso,voto) Chi sono gli studenti che seguono tutti i corsi di matematica? equivale a Chi sono gli studenti che verificano: Per ogni corso di matematica, lo studente segue tale corso?... e possiamo scrivere in SQL una query equivalente come: Chi sono gli studenti che verificano: Non esiste un corso di matematica non seguito dallo studente 39 / 46
40 Subquery: come eseguire la divisione relazionale (II) Mediante l uso di subquery, tale interrogazione si puo formulare in SQL come: SELECT DISTINCT nome,cognome FROM persona AS p WHERE NOT EXISTS ( SELECT FROM ( SELECT FROM corso WHERE sigla LIKE mat% ) AS c WHERE NOT EXISTS ( SELECT FROM persona JOIN frequenza ON id persona=id studente WHERE id persona=p.id persona AND id corso=c.corso)) 40 / 46
41 SQL e Divisione Un altra possibilita di riformulare il problema per tradurlo in SQL e data da: Chi sono gli studenti che verificano: Il numero di corsi di matematica seguiti dallo studente equivale al numero totale dei corsi di matematica. 41 / 46
42 SQL e Divisione Chi sono gli studenti che verificano: Il numero di corsi di matematica seguiti dallo studente equivale al numero totale dei corsi di matematica. SELECT id persona, nome, cognome FROM persona JOIN frequenza ON id persona=id studente JOIN corso USING (id corso) WHERE corso.sigla LIKE mat% GROUP BY id persona,nome,cognome HAVING COUNT ( DISTINCT corso.id corso) = (SELECT COUNT( ) FROM corso WHERE sigla LIKE mat% ); 42 / 46
43 SQL e Divisione Chi sono gli studenti che verificano: Il numero di corsi di matematica seguiti dallo studente equivale al numero totale dei corsi di matematica.... oppure... SELECT id persona, nome, cognome FROM persona WHERE ( SELECT COUNT ( DISTINCT id corso) FROM frequenza NATURAL JOIN corso WHERE sigla LIKE mat% AND id studente=id persona) = (SELECT COUNT( ) FROM corso WHERE sigla LIKE mat% ); 43 / 46
44 Subquery: Aggiornamento dei Dati Le subquery si possono efficacemente usare per aggiornare i dati di una tabella sulla base di criteri che dipendono dal contenuto di altre tabelle DELETE FROM persona WHERE persona.id persona NOT IN (SELECT corso.id insegnante FROM corso WHERE corso.id insegnante IS NOT NULL) 44 / 46
45 Subquery: Aggiornamento dei Dati Le subquery si possono efficacemente usare per aggiornare i dati di una tabella sulla base di criteri che dipendono dal contenuto di altre tabelle DELETE FROM persona WHERE persona.id persona NOT IN (SELECT corso.id insegnante FROM corso WHERE corso.id insegnante IS NOT NULL) Elimina gli insegnanti che non tengono alcun corso 45 / 46
46 Subquerye CHECK Lo standard SQL prevede l utilizzo del delle interrogazioni annidate anche nella clausola CHECK Nota: Questa caratteristica non e supportata attualmente da PostgreSQL (per far fronte a cio si usano i trigger, cfr. Lezione 9).... nella creazione della tabella ImpiegatiPG, degli impiegati di Perugia CHECK ( NOT EXISTS (SELECT FROM ImpiegatiUD WHERE ImpiegatiUD.codiceImp=ImpiegatiUD.codicePG)) 46 / 46
Il linguaggio SQL: query innestate
Il linguaggio SQL: query innestate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLc-subquery.pdf Sistemi Informativi L-A DB di riferimento
Data Management Software. Il linguaggio SQL. Query Innestate. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management 10 Settembre 2003
DB2 Data Management Software Il linguaggio SQL Query Innestate Paolo Avallone Sr Consulting IT Specialist DB2, Data Management 10 Settembre 2003 LEGGERE LE SEGUENTI ATTENZIONI Le informazioni contenute
Il linguaggio SQL: query innestate
Il linguaggio SQL: query innestate Sistemi Informativi T Versione elettronica: 04.4.SQL.subquery.pdf DB di riferimento per gli esempi Imp CodImp Nome Sede Ruolo Stipendio E001 Rossi S01 Analista 2000 E002
Basi di Dati: Corso di laboratorio
Basi di Dati: Corso di laboratorio Lezione 5 Raffaella Gentilini 1 / 22 Sommario 1 Gruppi 2 / 22 Raggruppamenti Gruppi Quanto sinora visto permette di estrarre dal DB informazioni che si riferiscono a
Basi di Dati: Corso di laboratorio
Basi di Dati: Corso di laboratorio Lezione 3 Raffaella Gentilini 1 / 52 Sommario 1 Il DML di SQL: Interrogazione di una BD 2 / 52 Data Manipulation Language (DML) Istruzioni del DML Le istruzioni del DML
Il linguaggio SQL: query innestate
Il linguaggio SQL: query innestate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLc-subquery.pdf Sistemi Informativi L-A DB di riferimento
Alessandra Raffaetà. Esercizio: Cinema
Lezione 8 S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali Alessandra Raffaetà Dipartimento di Informatica Università Ca Foscari Venezia Esercizio: Cinema
S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali. Alessandra Raffaetà
Lezione 8 S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali Alessandra Raffaetà Dipartimento di Informatica Università Ca Foscari Venezia Esercizio: Cinema
Basi di Dati: Corso di laboratorio
Basi di Dati: Corso di laboratorio Lezione 9 Raffaella Gentilini 1 / 41 Sommario 1 DBMS Attivi e Triggers 2 2 / 41 DBMS Attivi DBMS Attivi I DBMS tradizionale sono passivi: Eseguono delle operazioni solo
Operatori aggregati: COUNT
Operatori aggregati: COUNT Il numero di figli di select count(*) as NumFigliDi where Padre = '' Paternità Padre Sergio Figlio Olga Filippo Andrea Aldo l operatore aggregato (count) viene applicato al risultato
SELECT s.nome, e.data Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola
SQL SELECT s.nome, e.data FROM Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola SELECT s.nome As Nome, 2002 - s.annonascita As Eta, 0 As NumeroEsami FROM Studenti
SQL - Sottointerrogazioni
una delle ragioni che rendono SQL un linguaggio potente è la possibilità di esprimere interrogazioni più complesse in termini di interrogazioni più semplici, tramite il meccanismo delle subqueries (sottointerrogazioni)
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1996-2002 : SQL Operatori aggregati Nelle espressioni della target list possiamo avere anche espressioni che calcolano valori a partire da insiemi
SQL - Sottointerrogazioni correlate
SQL - Sottointerrogazioni correlate negli esempi visti ogni subquery viene eseguita una volta per tutte ed il valore (o insieme di valori) è usato nella clausola WHERE della query esterna è possibile definire
SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)
SQL quick reference piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013) I tipi dei dati di SQL sono: delimitatori delle costanti: TEXT(n) stringa di caratteri
SQL - Structured Query Language
SQL - Structured Query Language Lab 05 Alessandro Lori Università di Pisa 27 Aprile 2012 Riepilogo esercitazione precedente Operatori insiemistici (UNION, INTERSECT, EXCEPT) Riepilogo esercitazione precedente
Interrogazioni nidificate
Interrogazioni nidificate Nella clausola where si possono utilizzare valori prodotti da altre istruzioni select utilizzando any (qualsiasi) o all (tutti) insieme agli operatori di confronto Trovare nome,
Interrogazioni nidificate
Interrogazioni nidificate Trovare nome, cognome e matricola degli studenti che non hanno fatto esami select Matricola,Nome,Cognome from studenti where matricola all (select studente group by studente)
Structured Query Language
IL LINGUAGGIO SQL Structured Query Language Contiene sia il DDL sia il DML, quindi consente di: Definire e creare il database Effettuare l inserimento, la cancellazione, l aggiornamento dei record di un
SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma
SQL: Structured Query Language 1 SQL:Componenti Principali Data Manipulation Language (DML): interrogazioni, inserimenti, cancellazioni, modifiche Data Definition Language (DDL): creazione, cancellazione
Linguaggio SQL seconda parte
Linguaggio SQL seconda parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright Istituto Italiano Edizioni Atlas Le condizioni di ricerca 2 Le condizioni di ricerca Usate nelle
Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati
Basi di Dati Matteo Longhi Structured Query Language Introduzione Standard creato nel 1976 da IBM Aggiornato (versione 2 nel 1992 (ANSI X3.135 e ISO 9075 Consente di: DDL: definire la struttura del DB
Database Lezione 2. Sommario. - Progettazione di un database - Join - Valore NULL - Operatori aggregati
Sommario - Progettazione di un database - Join - Valore NULL - Operatori aggregati Progettazione di un database - In un database c'è una marcata distinzione tra i valori in esso contenuti e le operazioni
Manuale SQL. Manuale SQL - 1 -
Manuale SQL - 1 - Istruzioni DDL Creazione di una tabella : CREATE TABLE Il comando CREATE TABLE consente di definire una tabella del database specificandone le colonne, con il tipo di dati ad esse associate,
Interrogazioni in SQL
Interrogazioni in SQL Corso di Basi di Dati 4 dicembre 2013 1 Interrogazioni sullo schema aziendale 1. Ottenere i nomi dei dipartimenti dislocati in piú sedi. 2. Ottenere il numero di supervisori. 3. Produrre
Linguaggio SQL. studenti matricola nome cognome citta anno 11 marco bini bologna 1985 13 laura sicuro rimini 1984 esami codice
Linguaggio SQL Il linguaggio SQL (Structured Query Language) è il linguaggio standard per la definizione, manipolazione e interrogazione delle basi di dati relazionali sostenuti codice matricola anno voto
Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor
Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor Contesto didattico Il seguente materiale didattico è
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1996-2002 : SQL Operazioni di aggiornamento operazioni di inserimento: insert eliminazione: delete modifica: update di una o più ennuple di una
Elena Baralis 2007 Politecnico di Torino 1
Introduzione Istruzione INSERT Istruzione DELETE Istruzione UPDATE Linguaggio SQL: fondamenti 2 (1/3) Inserimento di tuple Cancellazione di tuple Modifica di tuple 4 (2/3) INSERT inserimento di nuove tuple
SQL e algebra relazionale
SQL e algebra relazionale Il linguaggio SQL consente una maggiore espressività dell algebra relazionale grazie a costrutti che permettono: di definire join più sofisticati di ordinare le righe dei risultati
σ data 15/12/2013 data 20/12/2014
Dato lo schema: Basi di Dati Prof. Alfredo Pulvirenti A.A. 2014-2015 Prova in itinere 18 dicembre 2014 (A) EVENTO(id, titolo, data, categoria, costo_partecipazione, idcatering) ORGANIZZATORE(id,idevento)
Il linguaggio SQL: raggruppamenti
Il linguaggio SQL: raggruppamenti Sistemi Informativi T Versione elettronica: 04.3.SQL.gruppi.pdf Informazioni di sintesi Quanto sinora visto permette di estrarre dal DB informazioni che si riferiscono
Tipi di sottoquery SQL
Tipi di sottoquery SQL È possibile specificare subquery in numerose posizioni: Con le parole chiave IN e NOT IN. Con operatori di confronto. Con le parole chiave ANY, SOME e ALL. Con le parole chiave EXISTS
<Nome Tabella>.<attributo>
Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno : SQL (2) Tabelle mult., variabili, aggreg, group Prof. Alberto
Corso di Basi di Dati A.A. 2015/2016
Corso di Laurea in Ingegneria Gestionale Sapienza Università di Roma Corso di Basi di Dati A.A. 2015/2016 Tiziana Catarci, Andrea Marrella Ultimo aggiornamento : 22/02/2016 Interrogazioni nidificate In
SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni
SQL [2] Concetti avanzati di SQL 2 Esempi di interrogazioni 3 Esempi di interrogazioni 4 Esempi di interrogazioni 5 Confronti che coinvolgono NULL NULL può voler dire: valore sconosciuto (esiste ma non
ESERCIZI SQL. Esercizio 1
ESERCIZI SQL 2 Esercizio 1 3 Esercizio 1 4 Esercizio 1 Si specifichino le seguenti interrogazioni SQL sulla base di dati relazionale AZIENDA. Si mostri il risultato di ciascuna interrogazione. 1. Si restituisca
Le interrogazioni annidate
Le interrogazioni annidate Lezione 5 lezione 5 Le interrogazioni annidate In questa lezione impareremo... a codificare operazioni insiemistiche su tabelle e relazioni a eseguire interrogazioni scalari
Basi di Dati: Corso di laboratorio
Basi di Dati: Corso di laboratorio Lezione 2 Raffaella Gentilini 1 / 45 Sommario 1 Il DDL di SQL: Cancellazione ed Aggiornamento di una BD Cancellazione di Schemi, Tabelle, e Domini Aggiornamento di Tabelle
Esercitazione 3 SQL 2
Esercitazione 3 SQL 2 Basi di dati - prof. Silvio Salza - a.a. 2014-2015 E3-1 Schema della base di dati Persone (Nome, Sesso, Anno, Città) Discendenza (Genitore, Figlio) Stato (Città, Inizio, Fine, Stato)
Caratteristiche dei linguaggi per Database
IL LINGUAGGIO Caratteristiche dei linguaggi per Database I linguaggi per basi di dati relazionali possiedono i comandi per: definizione del data base; manipolazione dei dati; associazione tra tabelle diverse;
Esempio di database relazionale con l utilizzo del prodotto MySQL
Esempio di database relazionale con l utilizzo del prodotto MySQL Marco Liverani Aprile 2015 In queste pagine viene riportato in sintesi il progetto di un database relazionale esemplificativo con cui viene
Basi di Dati. Esercitazione 1: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL
Basi di Dati Esercitazione 1: Interrogazioni in SQL DB di riferimento per esempi Consideriamo i seguenti schemi di una base di dati relazionale: PremioProduzione, DataAssunzione) Viene data la seguente
PROGETTAZIONE DI DATABASE Linguaggio SQL
PROGETTAZIONE DI DATABASE Linguaggio SQL Modello Concettuale (Modellazione del mondo reale) Modello Logico (Definizione del tipo e del formato dei dati) Modello Fisico (Implementazione fisica su supporti
SQL Avanzato. Interrogazioni e il valore NULL. Interrogazioni complesse, trigger, viste e modifiche dello schema. Giorgio Giacinto 2015
SQL Avanzato Interrogazioni complesse, trigger, viste e modifiche dello schema 2 Interrogazioni e il valore NULL Il valore NULL Logica a tre valori 3 Significato del valore NULL Valore sconosciuto Valore
Il linguaggio SQL: raggruppamenti. Versione elettronica: SQLb-gruppi.pdf
Il linguaggio SQL: raggruppamenti Versione elettronica: SQLb-gruppi.pdf Informazioni di sintesi Quanto sinora visto permette di estrarre dal DB informazioni che si riferiscono a singole tuple (eventualmente
ESERCITAZIONI ACCESS
ESERCITAZIONI ACCESS MS Access 2000 Struttura di riferimento: Studente (Matricola, Cognome, Nome) Esame (Matricola, Materia, Voto, Data) CREARE LE TABELLE IN SQL: Create table STUDENTE ( matricola char(6)
BASI DATI: algebra relazionale
BASI DATI: algebra relazionale BIOINGEGNERIA ED INFORMATICA MEDICA 1 Algebra relazionale Definizione L'algebra relazionale è un insieme di operazioni (query) che servono per manipolare relazioni (tabelle).
Capitolo 4. SQL: il linguaggio di interrogazione. Originato da SEQUEL-XRM e System-R ( ) dell IBM
Capitolo 4 SQL: il linguaggio di interrogazione SQL Originato da SEQUEL-XRM e System-R (1974-1977) dell IBM Significato originario Structured Query Language Standard de facto Attuale standard ANSI/ISO
Basi di dati I 19 settembre 2016 Tempo a disposizione: un ora e 45 minuti.
Tempo a disposizione: un ora e 45 minuti. Cognome: Nome: Matricola: Domanda 1 (15%) Considerare la relazione Stipendi(Matricola,StipLordo,Tasse,Netto,OK) Spiegare (sinteticamente ma in modo chiaro) quali
Basi di Dati. Esercitazione SQL. Paolo Papotti. 19 maggio 2005
Basi di Dati Esercitazione SQL 19 maggio 2005 Paolo Papotti Considerando la seguente base di dati: Fornitori (CodiceFornitore, Nome, Indirizzo, Città) Prodotti (CodiceProdotto, Nome, Marca, Modello) Catalogo
Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi
Informatica della Facoltà di Lingue e Letterature dell Università degli Studi di Torino. Qualsiasi altro Query (Interrogazioni) SQL Materiale aggiuntivo per il corso di laurea in Lingue e Culture per il
Basi di dati I Prova di autovalutazione 30 ottobre 2014
Basi di dati I Prova di autovalutazione 3 ottobre 214 La prova verrà discussa in aula, prevedibilmente giovedì 6 novembre. Si consiglia di svolgerlo simulando l esame, sulla carta e senza ausilio di libri
SQL (STRUCTURED QUERY LANGUAGE)
SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan SQL DDL Data Definition Language DML Data Manipulation Language DCL Data Control Language DDL Obiettivo: Definire la struttura
Eprogram ITIS V anno Unità 4 - Il linguaggio SQL
Eprogram ITIS V anno Unità 4 - Il linguaggio SQL Compito in classe proposto Date le seguenti tabelle: scrivi in SQL le seguenti richieste (per facilitare query complesse utilizza le viste): 1. elencare
Il linguaggio SQL: viste e tabelle derivate. DB di riferimento per gli esempi
Il linguaggio SQL: viste e tabelle derivate Dario Maio http://bias.csr.unibo.it/maio/ [email protected] 1 DB di riferimento per gli esempi Imp Sedi CodImp Nome Sede Ruolo Stipendio Sede Responsabile
Basi di dati: appello 14/07/06
Basi di dati: appello 14/07/06 Si consideri il seguente schema di base di dati che vuole tenere traccia dell attività di un agenzia che affitta appartamenti per vacanze nella città di Varazze. CLIENTE
Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6
Data Base 1 Sommario I concetti fondamentali. Database Relazionale.. Query e SQL MySql, Creazione di un db in MySQL con PHPmyAdmin Creazione database e delle Tabelle Query Inserimento Ricerca Modifica
Microsoft Access (parte 5) Query. Query. Query. Query. Creare una query
Microsoft Access (parte 5) Anno accademico: 2008-2009 Per estrarre informazioni da un database si utilizzano delle query : procedure di interrogazione Si può creare più query per ogni tabella Occorre avere
Interrogare una base di dati: Algebra relazionale e SQL. Alessandro Bardine Alessandro Ciaramella Vincenzo Galella Rudy Manganelli
Interrogare una base di dati: Algebra relazionale e SQL Alessandro Bardine Alessandro Ciaramella Vincenzo Galella Rudy Manganelli Prerequisiti Conoscenze di: Progettazione Base di Dati Modellazione Relazionale
Esercitazione: Interrogazioni SQL
Laurea in Ingegneria Informatica SAPIENZA Università di Roma Insegnamento di Basi di Dati Esercitazione: Interrogazioni SQL Domenico Fabio Savo 1 Sommario 1. Creazione del database utilizzato per l esercitazione
VARIABILI, ASSEGNAZIONE, DECISIONI
LEZIONE-TSQL-03 PROGRAMMAZIONE (VER02) PAG. 1 / 6 LEZIONE-TSQL-03 PROGRAMMAZIONE (VER02) T-SQL PROGRAMMAZIONE PARTE TERZA VARIABILI, ASSEGNAZIONE, DECISIONI Tratto da Gregory A. Larsen, http://www.databasejournal.com/features/mssql/article.php/3087431/t-sql-programming-part-1---defining-variables-and-if-logic.htm
Business Intelligence
Business Intelligence Esercitazione di Laboratorio N. 1 L esercitazione ha come obiettivo l interrogazione di una base di dati relazionale mediante query SQL su un DBMS Oracle XE. Schema logico della basi
Interrogazioni complesse. SQL avanzato 1
Interrogazioni complesse SQL avanzato Classificazione delle interrogazioni complesse Query con ordinamento Query con aggregazione Query con raggruppamento Query binarie Query annidate SQL avanzato 2 Esempio
Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi.
Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi. Cognome: Nome: Matricola: Domanda 1 (15%) Considerare la base di dati relazionale contenente le seguenti relazioni:
Corso di Basi di Dati
Corso di Laurea in Ingegneria Gestionale Sapienza Università di Roma Corso di Basi di Dati A.A. 2016/2017 4 SQL : Structured Query Language Tiziana Catarci Ultimo aggiornamento : 22/02/2016 SQL : Structured
