Principi di Progettazione del Software a.a Il linguaggio SQL. Il Linguaggio SQL

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Principi di Progettazione del Software a.a Il linguaggio SQL. Il Linguaggio SQL"

Transcript

1 Principi di Progettazione del Software a.a Ing. Università del Salento Il Linguaggio SQL Due componenti principali: Ø DDL (Data Definition Language) Contiene i costrutti necessari per la creazione/modifica dello schema della base di dati. Ø DML (Data Manipulation Language) Contiene i costrutti per le interrogazioni e di inserimento/eliminazione/modifica di dati. 1

2 Il Linguaggio SQL Due componenti principali: Ø DDL (Data Definition Language) Contiene i costrutti necessari per la creazione/modifica dello schema della base di dati. Ø DML (Data Manipulation Language) Contiene i costrutti per le interrogazioni e di inserimento/eliminazione/modifica di dati. Interrogazioni Esempio di interrogazione (query) à Recuperare nome e cognome dello studente con numero di matricola pari a 4678 STUDENTI Matricola Nome Cognome DataNascita 4566 Marco Rossi 3/5/ Michele Bianchi 2/5/ Antonio Rossi 14/3/1990 Nome Michele Cognome Bianchi 2

3 Il costrutto SELECT-FROM-WHERE Le operazioni di interrogazione vengono implementate dal costrutto di select. select Attributo 1, Attributo M from Tabella 1,,Tabella N where Condizione SEMANTICA: Effettua il prodotto cartesiano delle Tabella 1,.., Tabella N. Da queste, estrai le righe che rispettano la Condizione. Di quest ultime, preleva solo le colonne corrispondenti a: Attributo 1,,Attributo M. Il costrutto SELECT-FROM-WHERE (cont.) Nel caso di una sola tabella: select Attributo i, Attributo j, Attributo m from Tabella where Condizione TABELLA STEP1: Si selezionano le ennuple della tabella che soddisfano la condizione Attributo 1 Attributo i Attributo j. Attributo m e 1 e 2 e 3 e 4 3

4 Il costrutto SELECT-FROM-WHERE (cont.) Nel caso di una sola tabella: select Attributo i, Attributo j, Attributo m from Tabella where Condizione TABELLA STEP2: Si selezionano le colonne/attributi specificati dalla SELECT Attributo 1 Attributo i Attributo j. Attributo m e 1 e 2 e 3 e 4 Il costrutto SELECT-FROM-WHERE (cont.) Nel caso di una sola tabella: select Attributo i, Attributo j, Attributo m from Tabella where Condizione STEP3: Si costruisce la tabella risultato Numero di colonne definito dalla clausola SELECT { Numero di righe definito dalla clausola WHERE { Attributo 1 Attributo i Attributo m 4

5 Il costrutto SELECT-FROM-WHERE step-by-step SELECT TELEFONO AS TEL FROM IMPIEGATI, SEDI WHERE (UFFICIO=UFFNUM) AND (CODICE=145) COSA FA QUESTA QUERY?? IMPIEGATI Codice Nome Cognome Ufficio Stipendio 123 Marco Marchi A Marco Bianchi B Lucia Di Lucia A SEDI UffNum Telefono A B Giorgio Rossi B Il costrutto SELECT-FROM-WHERE step-by-step (cont.) SELECT TELEFONO AS TEL STEP1. Si effettua il prodotto FROM IMPIEGATI, SEDI cartesiano delle due tabelle WHERE (UFFICIO=UFFNUM) AND (CODICE=145) Codice Nome Cognome Ufficio Stipendio UffNum Telefono 123 Marco Marchi A A Marco Bianchi B A Lucia Di Lucia A A Giorgio Rossi B A Marco Marchi A B Marco Bianchi B B Lucia Di Lucia A B Giorgio Rossi B B

6 Il costrutto SELECT-FROM-WHERE step-by-step (cont.) SELECT TELEFONO AS TEL FROM IMPIEGATI, SEDI WHERE (UFFICIO=UFFNUM) AND (CODICE=145) STEP2. Si selezionano le righe con valori comuni nelle tue tabelle Codice Nome Cognome Ufficio Stipendio UffNum Telefono 123 Marco Marchi A A Marco Bianchi B A Lucia Di Lucia A A Giorgio Rossi B A Marco Marchi A B Marco Bianchi B B Lucia Di Lucia A B Giorgio Rossi B B Il costrutto SELECT-FROM-WHERE step-by-step (cont.) SELECT TELEFONO AS TEL STEP3. Si selezionano le righe FROM IMPIEGATI, SEDI relative all impiegato 145 WHERE (UFFICIO=UFFNUM) AND (CODICE=145) Codice Nome Cognome Ufficio Stipendio UffNum Telefono 123 Marco Marchi A A Marco Bianchi B A Lucia Di Lucia A A Giorgio Rossi B A Marco Marchi A B Marco Bianchi B B Lucia Di Lucia A B Giorgio Rossi B B

7 Il costrutto SELECT-FROM-WHERE step-by-step (cont.) SELECT TELEFONO AS TEL STEP4. Si seleziona la colonna FROM IMPIEGATI, SEDI dell attributo Telefono WHERE (UFFICIO=UFFNUM) AND (CODICE=145) Codice Nome Cognome Ufficio Stipendio UffNum Telefono 123 Marco Marchi A A Marco Bianchi B A Lucia Di Lucia A A Giorgio Rossi B A Marco Marchi A B Marco Bianchi B B Lucia Di Lucia A B Giorgio Rossi B B Il costrutto SELECT-FROM-WHERE: esempio 1 Esempio1. Selezionare i nomi degli impiegati che lavorano nell ufficio A. IMPIEGATI Codice Nome Cognome Ufficio Stipendio 123 Marco Marchi A Michele Monti B Antonio Verdi A Giorgio Rossi A Nome Marco Antonio Giorgio SELECT NOME FROM IMPIEGATI WHERE (UFFICIO= A ) 7

8 Il costrutto SELECT-FROM-WHERE: esempio 2 Esempio2. Selezionare i codici degli impiegati che guadagnano piu di euro annui. IMPIEGATI Codice Nome Cognome Ufficio Stipendio 123 Marco Marchi A Michele Monti B Antonio Verdi A Nome Antonio Giorgio 156 Giorgio Rossi A SELECT NOME FROM IMPIEGATI WHERE (STIPENDIO>20000) Il costrutto SELECT-FROM-WHERE: esempio 3 Esempio3. Selezionare nomi e cognomi degli impiegati che lavorano nell ufficio B e guadagnano piu di euro annui. IMPIEGATI Codice Nome Cognome Ufficio Stipendio 123 Marco Marchi A Michele Monti B Antonio Verdi A Giorgio Rossi A Nome Cognome SELECT NOME,COGNOME FROM IMPIEGATI WHERE ((STIPENDIO>20000) AND (UFFICIO= B )) 8

9 I costrutti SELECT, FROM, WEHERE: esempio (cont.) SELECT TELEFONO AS TEL FROM IMPIEGATI, SEDI WHERE (UFFICIO=UFFNUM) AND (CODICE=145) TEL STEP5. Si costruisce il risultato finale Il costrutto WHERE La clausola where specifica quali righe delle tabelle devono comparire nel risultato finale. La condizione della clausola puo contenere un espressione booleana, o una combinazione di espressioni mediante gli operatori and, or, not. SELECT CODICE FROM IMPIEGATI WHERE NOT((NOME= Marco ) AND (UFFICIO= A )) 9

10 Il costrutto WHERE: le Wildcard Nella clausola where, e possibile fare confronti tra stringhe usando l operatore like e l utilizzo di wildcard: _ à carattere arbitrario % à sequenza di caratteri arbitraria. In questo modo, e possibile trovare tutte le stringhe che rispettano un certo pattern. Es: selezionare il codice di tutti gli impiegati il cui nome inizi per M, abbia una r come terzo carattere, e termini per o. SELECT CODICE FROM IMPIEGATI WHERE (NOME LIKE M_R%O ) Il costrutto WHERE: l operatore IN Nella clausola where, l operatore in consente di verificare l appartenenza ad un certo insieme di valori. Es. Trovare i codici degli impiegati il cui stipendio sia compreso tra i ed i euro annui. IMPIEGATI Codice Nome Cognome Ufficio Stipendio 123 Marco Marchi A Michele Monti B Antonio Verdi A Giorgio Rossi A Nome Antonio Giorgio SELECT NOME FROM IMPIEGATI WHERE STIPENDIO IN (24000,34000) 10

11 Il costrutto WHERE: valori NULL Q. Cosa accade nella clausola where in caso di valori NULL Vengono inclusi nel risultato finale? NO! IMPIEGATI Codice Nome Cognome Ufficio Stipendio 123 Marco Marchi A Michele Monti B Antonio Verdi A NULL Nome Giorgio 156 Giorgio Rossi A SELECT NOME FROM IMPIEGATI WHERE (STIPENDIO > 20000) Il costrutto WHERE: gli operatori IS NULL e IS NOT NULL In generale, SQL utilizza una logica a tre valori: true (T), false (F), unknown (U). Esistono gli operatori IS NULL ed IS NOT NULL. IMPIEGATI Codice Nome Cognome Ufficio Stipendio 123 Marco Marchi A Michele Monti B Antonio Verdi A NULL 156 Giorgio Rossi A SELECT NOME FROM IMPIEGATI WHERE ((STIPENDIO > 20000) OR (STIPENDIO IS NULL)) Nome Antonio Giorgio 11

12 Il costrutto SELECT: il selettore * La clausola select specifica quali colonne delle righe selezionate devono comparire nel risultato finale. L asterisco (*) indica tutte le colonne della tabella. SELECT * FROM IMPIEGATI WHERE (NOME= Marco ) AND (UFFICIO= A ) IMPIEGATI Codice Nome Cognome Ufficio Stipendi o 123 Marco Marchi A Il costrutto SELECT: l operatore AS E possibile ridenominare le colonne del risultato di una query attraverso il costrutto as. SELECT NOME as Name, Cognome as LastName FROM IMPIEGATI WHERE (NOME= Marco ) IMPIEGATI Codice Nome Cognome Ufficio Stipendio 123 Marco Marchi A Marco Bianchi B Lucia Di Lucia C Name Marco Marco LastName Marchi Bianchi 12

13 Il costrutto SELECT: espressioni aritmetiche E possibile usare espressioni aritmetiche (semplici) sui valori degli attributi di una SELECT. SELECT NOME as Name, Stipendio/12 as SalaryM FROM IMPIEGATI WHERE (NOME= Marco ) IMPIEGATI Codice Nome Cognome Ufficio Stipendio 123 Marco Marchi A Marco Bianchi B Lucia Di Lucia C Name SalaryM Marco 1000 Marco 2000 Il costrutto FROM La clausola from specifica la lista delle tabelle cui si deve accedere (nel caso #tabelle>1, si effettua il prodotto cartesiano delle stesse). E possibile specificare degli alias per i nomi delle tabelle, mediante il costrutto as: SELECT CODICE FROM IMPIEGATI AS I WHERE (NOME= MARCO ) 13

14 Il costrutto DISTINCT ATTENZIONE: Il risultato di una query SQL potrebbe avere righe duplicate! SELECT NOME AS NAME FROM IMPIEGATI AS I WHERE (STIPENDIO <30000) IMPIEGATI Codice Nome Cognome Ufficio Stipendio 123 Marco Marchi A Marco Bianchi B Lucia Di Lucia C Name Marco Marco Il costrutto DISTINCT (cont.) Il costrutto distinct (nella select) consente di rimuovere i duplicati nel risultato. Il costrutto all (nella select) NON rimuove i duplicati (comportamento di default). SELECT DISTINCT NOME AS NAME FROM IMPIEGATI AS I WHERE (STIPENDIO >20000) Name Marco 14

15 La notazione tabella.attributo Q. Che accade se le tabelle della clausola from hanno attributi con nomi uguali? SELECT TELEFONO AS TEL???? ERRORE!!! FROM IMPIEGATI, SEDI WHERE (UFFICIO=UFFICIO) AND (CODICE=145) IMPIEGATI Codice Nome Cognome Ufficio Stipendio 123 Marco Marchi A Marco Bianchi B Lucia Di Lucia A SEDI Ufficio Telefono A B Giorgio Rossi B La notazione tabella.attributo (cont.) In questi casi, si puo utilizzare la notazione NomeTabella.NomeAttributo per far riferimento ad un attributo in maniera non ambigua. SELECT TELEFONO AS TEL FROM IMPIEGATI, SEDI WHERE (IMPIEGATI.UFFICIO=SEDI.UFFICIO) AND (CODICE=145) SELECT TELEFONO AS TEL FROM IMPIEGATI AS I, SEDI AS S WHERE (I.UFFICIO=S.UFFICIO) AND (CODICE=145) 15

16 Alias Nella clausola where possono comparire piu istanze della stessa tabella mediante gli alias Es. Selezionare i nomi dei nonni di Matteo Bianchi. GENITORI Nome Cognome NomeGen Cognome Gen Matteo Bianchi Michele Bianchi Michele Bianchi Gianni Bianchi Matteo Bianchi Lucia Rossi Lucia Rossi Sara Rossi Nicola Verdi Simone Verdi Alias (cont.)???? ERRORE!!! SELECT NOME, COGNOME FROM GENITORI, GENITORI WHERE (GENITORI.NOME=GENITORI.NOMEGEN) GENITORI Nome Cognome NomeGen CognomeGen Matteo Bianchi Michele Bianchi Michele Bianchi Gianni Bianchi Matteo Bianchi Lucia Rossi Lucia Rossi Sara Rossi Nicola Verdi Simone Verdi 16

17 Alias (cont.) SELECT G2.NOMEGEN, G2.COGNOMEGEN FROM GENITORI AS G1, GENITORI AS G2 WHERE (G1.NOMEGEN=G2.NOME) AND (G1.COGNOMEGEN=G2.COGNOME) AND (G1.NOME= MATTEO ) AND (G1.COGNOME= BIANCHI ) GENITORI Nome Cognome NomeGen CognomeGen Matteo Bianchi Michele Bianchi Michele Bianchi Gianni Bianchi Matteo Bianchi Lucia Rossi Lucia Rossi Sara Rossi Nicola Verdi Simone Verdi Il costrutto JOIN Anziché scrivere i predicati di join nella clausola WHERE, è possibile costruire una joined table direttamente nella clausola FROM SELECT * FROM studente AS s JOIN esame AS e ON s.matricola=e.matricola; 34 17

18 Il costrutto JOIN Con un inner join può succedere che alcune righe di una delle tabelle in gioco non vengano incluse nel risultato in quanto non esiste una riga corrispondente nell altra tabella che soddisfi la condizione specificata. Per ovviare a ciò si può utilizzare un outer join che rimpiazza l informazione mancante con dei valori NULL. Esistono quindi diversi tipi di JOIN: INNER: default, non include tuple che non soddisfino la condizione LEFT [OUTER] : estende le tuple del primo operando RIGHT [OUTER]: estende le tuple del secondo operando Il join completo le estende tutte FULL [OUTER]: le estende tutte le tuple 35 Il costrutto ORDER BY Il costrutto order by consente di ordinare le righe del risultato di un interrogazione in base al valore di un attributo specificato. order by Attributo 1 [asc desc],, Attributo N [asc desc] SELECT * FROM IMPIEGATI WHERE (UFFICIO= A ) ORDER BY STIPENDIO Deve comparire sempre dopo la clausola where! 18

19 Esempio Supponiamo di voler scrivere una query per contare il numero di Impiegati che lavorano nell ufficio A. Problema: La SELECT vista fin qui opera tuple, e non a livello di colonne... a livello di IMPIEGATI Codice Nome Cognome Ufficio Stipendio 123 Marco Marchi A Marco Bianchi B Lucia Di Lucia A Da questa colonna dovremmo estrarre un solo valore! 187 Giorgio Rossi B Gli operatori aggregati Gli operatori aggregati si applicano a gruppi di tuple (e non tupla per tupla), e producono come risultato un solo valore. Vengono in genere inseriti nella select, e valutati DOPO la clausola where e from. count (* [distinct all] Lista Attributi) * à si applica su tutti gli attributi, in pratica conta il numero di righe 19

20 Gli operatori aggregati (cont.) Gli operatori aggregati si applicano a gruppi di tuple (e non tupla per tupla), e producono come risultato un solo valore. Ø sum Lista Attributi Ø avg Lista Attributi Ø min Lista Attributi Ø max Lista Attributi Gli operatori aggregati Sintassi Generale: SELECT OP(Attributo) FROM ListaTabelle WHERE Condizione sum max min avg count count(*) STEP 0: Si considerano le tabelle indicate nella clausola FROM T 1 T N T 2 20

21 Gli operatori aggregati (cont.) Sintassi Generale: SELECT OP(Attributo) FROM ListaTabelle WHERE Condizione sum max min avg count count(*) STEP 1: Si effettua il prodotto cartesiano delle tabelle. Operazioni aggregate step-by-step Sintassi Generale: SELECT OP(Attributo) FROM ListaTabelle WHERE Condizione sum max min avg count count(*) STEP 2: Si selezionano le righe che soddisfano la condizione del WHERE. 21

22 Operazioni aggregate step-by-step (cont.) Sintassi Generale: SELECT OP(Attributo) FROM ListaTabelle WHERE Condizione sum max min avg count count(*) STEP 3: Si considera l Attributo della SELECT e si applica l operatore aggregato su tutti i valori della colonna. Operazioni aggregate step-by-step (cont.) Sintassi Generale: SELECT OP(Attributo) FROM ListaTabelle WHERE Condizione sum max min avg count count(*) STEP 4: Dalla colonna si calcola un solo valore come risultato della query Se non si usa l operatore AS, la colonna risultato non ha un nome 22

23 Gli operatori aggregati: esempio Es. Contare il numero di strutturati che lavorano nel Dipartimento di Fisica. STRUTTURATI Codice Nome Cognom e Tipo Dipartimento Stipendio 123 Marco Marchi Associato Chimica Michele Micheli Associato Fisica Lucia Di Lucia Ordinario Fisica Dario Rossi Ordinario Informatica Mario Rossi Ricercatore Informatica Michele Bianchi Associato Fisica Gli operatori aggregati: esempio (cont.) SELECT COUNT(*) AS CONTATORE FROM STRUTTURATI WHERE (DIPARTIMENTO= FISICA ) Contatore 2 23

24 Gli operatori aggregati: esempio (cont.) Es. Contare la somma complessiva degli stipendi degli strutturati del dipartimento di Fisica. STRUTTURATI Codice Nome Cognome Tipo Dipartimento Stipendio 123 Marco Marchi Associato Chimica Michele Micheli Associato Fisica Lucia Di Lucia Ordinario Fisica Dario Rossi Ordinario Informatica Mario Rossi Ricercatore Informatica Michele Bianchi Associato Fisica Gli operatori aggregati: esempio (cont.) SELECT SUM(STIPENDIO) AS TOTALE FROM STRUTTURATI WHERE (DIPARTIMENTO= FISICA ) Totale

25 Gli operatori aggregati su gruppi di righe Es. Estrarre codice e stipendio del professore associato che ha lo stipendio piu alto... SELECT CODICE, MAX(STIPENDIO) FROM STRUTTURATI WHERE (TIPO= ASSOCIATO) ERRORE! L operatore aggregato restituisce un solo valore, mentre la prima parte della select restituisce un valore per ogni tupla selezionata!!! COME FARE? Con interrogazioni annidate (vedi dopo ) Gli operatori aggregati su gruppi di righe (cont.) Operatori di query visti fin qui: Ø SELECT ATTRIBUTI FROM WHERE à Valuta i valori di ciascuna riga in isolamento. Ø SELECT OP(ATTRIBUTI) FROM WHERE à Valuta i valori delle righe corrispondenti alle colonne della SELECT in modo aggregato. Q. Possibilita di combinare i due approcci? 25

26 Gli operatori aggregati su gruppi di righe (cont.) Operatori di query visti fin qui: Ø SELECT ATTRIBUTI FROM WHERE à Valuta i valori di ciascuna riga in isolamento. Estrarre informazioni aggregate da Ø SELECT OP(ATTRIBUTI) gruppi di righe FROM WHERE à Valuta i valori delle righe corrispondenti alle colonne della SELECT in modo aggregato. Q. Possibilita di combinare i due approcci? Gli operatori aggregati su gruppi di righe (cont.) Es. Contare il numero di strutturati (ricercatori + professori) di ciascun dipartimento. STRUTTURATI Codice Nome Cognom e Tipo Dipartimento Stipendio 123 Marco Marchi Associato Chimica Michele Micheli Associato Fisica Lucia Di Lucia Ordinario Fisica Dario Rossi Ordinario Informatica Mario Rossi Ricercatore Informatica Michele Bianchi Associato Fisica

27 Gli operatori aggregati su gruppi di righe (cont.) Es. Contare il numero di strutturati (ricercatori + professori) di ciascun dipartimento. STRUTTURATI Codice Nome Cognom e Tipo Dipartimento Stipendio 123 Marco Marchi Associato Chimica RISULTATO 124 Michele Micheli Associato Fisica Dipartimento Numero 125 Lucia Di Lucia Ordinario Fisica Chimica Dario Rossi Ordinario Informatica Fisica Mario Rossi Ricercatore Informatica Informatica Michele Bianchi Associato 2 Fisica Gli operatori aggregati su gruppi di righe (cont.) Es. Contare il numero di strutturati (ricercatori + professori) di ciascun dipartimento. STRUTTURATI Codice Nome Cognom e Tipo Dipartimento Stipendio Soluzione 1: SELECT COUNT(*) AS NUMERO FROM STRUTTURATI NON FA QUANTO RICHIESTO!!! Numero 6 27

28 Gli operatori aggregati su gruppi di righe (cont.) Es. Contare il numero di strutturati (ricercatori + professori) di ciascun dipartimento. STRUTTURATI Codice Nome Cognom e Soluzione 2: Tipo Dipartimento Stipendio SELECT COUNT(*) AS NUMERO,DIPARTIMENTO FROM STRUTTURATI QUERY ERRATA!!! Gli operatori aggregati su gruppi di righe (cont.) Es. Contare il numero di strutturati (ricercatori + professori) di ciascun dipartimento. STRUTTURATI Codice Nome Cognom e Soluzione 3: Tipo Dipartimento Stipendio SELECT COUNT(*) AS NUMERO FROM STRUTTURATI WHERE (Dipartimento= Fisica ) Come faccio a generalizzare questa query? Numero 3 28

29 Gli operatori aggregati su gruppi di righe (cont.) L operatore di raggruppamento consente di dividere la tabella in gruppi, ognuno caratterizzata da un valore comune dell attributo specificato nell operatore. SELECT ListaAttributi1 FROM ListaTabelle WHERE Condizione GROUPBY ListaAttributi2 ListaAttributi1 deve essere un sottoinsieme di ListaAttributi2, puo contenere operatori aggregati! Ogni gruppo produce una sola riga nel risultato finale! Gli operatori aggregati su gruppi di righe (cont.) SELECT DIPARTIMENTO AS DIP, COUNT(*) AS NUMERO FROM STRUTTURATI GROUPBY DIPARTIMENTO DIP Numero Chimica 1 Fisica 3 Informatica 2 29

30 Gli operatori aggregati su gruppi di righe step-by-step SELECT DIPARTIMENTO AS DIP, COUNT(*) AS NUMERO FROM STRUTTURATI GROUPBY DIPARTIMENTO STRUTTURATI STEP1: Partizionamento della tabella Codice Nome Cognom e Tipo Dipartimento Stipendio 123 Marco Marchi Associato Chimica Michele Micheli Associato Fisica Lucia Di Lucia Ordinario Fisica Dario Rossi Ordinario Informatica Mario Rossi Ricercatore Informatica Michele Bianchi Associato Fisica Gli operatori aggregati su gruppi di righe step-by-step SELECT DIPARTIMENTO AS DIP, COUNT(*) AS NUMERO FROM STRUTTURATI GROUPBY DIPARTIMENTO STEP1: Partizionamento della tabella Codice Nome Cognome Tipo Dipartimento Stipendio 123 Marco Marchi Associato Chimica Codice Nome Cognome Tipo Dipartimento Stipendio 124 Michele Micheli Associato Fisica Lucia Di Lucia Ordinario Fisica Michele Bianchi Associato Fisica Codice Nome Cognome Tipo Dipartimento Stipendio 126 Dario Rossi Ordinario Informatica Mario Rossi Ricercatore Informatica

31 Gli operatori aggregati su gruppi di righe step-bystep SELECT DIPARTIMENTO AS DIP, COUNT(*) AS NUMERO FROM STRUTTURATI STEP2: Si applica la select su ciascun gruppo GROUPBY DIPARTIMENTO Codice Nome Cognom Dipartimento Tipo Numero Dipartimento Stipendio e Chimica Marco Marchi Associato Chimica Codice Nome Cognom Tipo Dipartimento Stipendio e 124 Michele Micheli Dipartimento AssociatoNumero Fisica Lucia Di Fisica Lucia Ordinario3 Fisica Michele Bianchi Associato Fisica Codice Nome Cognom Tipo Dipartimento Stipendio e Dipartimento Numero 126 Dario Rossi Ordinario Informatica 2 Informatica Mario Rossi Ricercatore Informatica Gli operatori aggregati su gruppi di righe step-by-step SELECT DIPARTIMENTO AS DIP, COUNT(*) AS NUMERO FROM STRUTTURATI GROUPBY DIPARTIMENTO STEP3: Si costruisce il risultato finale Dip Numero Chimica 1 Fisica 3 Informatica 2 31

32 Il costrutto HAVING Attenzione! Nella SELECT possono comparire solo un sottoinsieme degli attributi della clausola GROUPBY oppure operatori aggregati. STRUTTURATI Come faccio ad estrarre 1 sola riga?? Codice Nome Cognom e SELECT NOME, COUNT(*) AS NUMERO FROM STRUTTURATI GROUPBY DIPARTIMENTO Tipo Dipartimento Stipendio 123 Marco Marchi Associato Fisica Michele Micheli Associato Fisica ERRORE! Il costrutto HAVING (cont.) E possibile filtrare i gruppi in base a condizioni, attraverso il costrutto having. SELECT ListaAttributi1 GROUPBY ListaAttributi2 HAVING Condizione Ø clausola where à valutata riga per riga. Ø clausola having à valutata su ciascun gruppo, contiene operatori aggregati o condizioni su ListaAttributi2. 32

33 Il costrutto HAVING step-by-step Sintassi Generale: SELECT ListaAttributi1 FROM ListaTabelle WHERE Condizione GROUPBY ListaAttributi2 HAVING Condizione STEP0: Prodotto cartesiano delle tabelle + Estrazione delle righe che rispettano la condizione della clausola WHERE Il costrutto HAVING step-by-step Sintassi Generale: SELECT ListaAttributi1 FROM ListaTabelle WHERE Condizione GROUPBY ListaAttributi2 HAVING Condizione STEP1: Partizionamento della tabella 33

34 Il costrutto HAVING step-by-step Sintassi Generale: SELECT ListaAttributi1 FROM ListaTabelle WHERE Condizione GROUPBY ListaAttributi2 HAVING Condizione STEP2: Selezione dei gruppi Il costrutto HAVING step-by-step Sintassi Generale: SELECT ListaAttributi1 FROM ListaTabelle WHERE Condizione GROUPBY ListaAttributi2 HAVING Condizione STEP3: Selezione dei valori delle colonne o esecuzione degli operatori aggregati su ciascuno dei gruppi, e composizione della tabella finale. 34

35 Il costrutto HAVING: esempio Es. Estrarre il nome dei dipartimenti che hanno almeno due strutturati nel suo organico. STRUTTURATI Codice Nome Cognom e Tipo Dipartimento Stipendio 123 Marco Marchi Associato Chimica Michele Micheli Associato Fisica Lucia Di Lucia Ordinario Fisica Dario Rossi Ordinario Informatica Mario Rossi Ricercatore Informatica Michele Bianchi Associato Fisica Il costrutto HAVING: esempio SELECT DIPARTIMENTO AS DIP FROM STRUTTURATI GROUPBY DIPARTIMENTO HAVING COUNT(*) > 2 DIP Fisica Informatica 35

36 Uno statement SQL completo Costrutto select nella sua forma piu generale. SELECT ListaAttributi FROM ListaTabelle WHERE Condizione GROUPBY AttributiRaggruppamento HAVING CondizioniGruppi ORDERBY ListaAttributiOrdinamento Operazioni insiemistiche Es. Estrarre nome e cognome di tutto il personale universitario (strutturati + tecnici). STRUTTURATI Codic e Nome Cognom e Ruolo 123 Marco Marchi Associato 124 Michele Micheli Ordinario 125 Lucia Di Lucia Ricercator e 126 Dario Rossi Ordinario 127 Mario Rossi Ordinario 129 Michele Bianchi Associato TECNICI Codic e Nome Cognom e 445 Michele Marini Daniele Marini Giovann a Bianchi Lucia Di Lucia 4 Livello 36

37 Operazioni insiemistiche (cont.) In SQL, e possibile effettuare operazioni insiemistiche tra tabelle o in generale tra risultati di SELECT: Ø UNION [ALL] Ø INTERSECT [ALL] Ø EXCEPT [ALL] Gli attributi della SELECT devono avere tipi di dato compatibili e (possibilmente) gli stessi nomi. Operazioni insiemistiche (cont.) Es. Estrarre nome e cognome di tutto il personale universitario (strutturati + tecnici). SELECT NOME, COGNOME FROM STRUTTURATI UNION SELECT NOME, COGNOME FROM TECNICI Nome Marco Michele Lucia Dario Mario Michele Michele Cognom e Marchi Micheli Di Lucia Rossi Rossi Bianchi Marini 37

38 Operazioni insiemistiche (cont.) Es. Estrarre nome e cognome degli strutturati che hanno degli omonimi che lavorano come tecnici... SELECT NOME, COGNOME FROM STRUTTURATI INTERSECT SELECT NOME, COGNOME FROM TECNICI Nome Lucia Cognome Di Lucia Operazioni insiemistiche (cont.) Attenzione. Gli attributi delle SELECT nelle due tabelle devono avere tipi compatibili SELECT RUOLO FROM STRUTTURATI UNION SELECT LIVELLO FROM TECNICI ERRORE! STRUTTURATO.Ruolo e una stringa TECNICI.Livello e un intero. 38

39 Comandi di modifica istanze Oltre ad i comandi di interrogazione, la parte DML definisce anche le operazioni per la modifica dell istanza della base di dati. Ø insert à inserisce una o piu riga. Ø delete à cancella una o piu righe. Ø update à aggiorna un attributo o piu. Comandi di modifica istanze: INSERT E possibile inserire una riga esplicitando i valori degli attributi oppure estraendo le righe da altre tabelle del database. Ø insert into NomeTabella [ListaAttributi] values (ListaValori) INSERT INTO IMPIEGATI(Codice, Nome, Cognome, Ufficio) values ( 8, Vittorio, Rossi, A ) 39

40 Comandi di modifica istanze: INSERT E possibile inserire una riga esplicitando i valori degli attributi oppure estraendo le righe da altre tabelle del database. Ø insert into NomeTabella [ListaAttributi] values (ListaValori) INSERT INTO IMPIEGATI(Codice, Nome, Cognome) values( 8, Vittorio, Rossi ) Ufficio à non specificato, NULL Comandi di modifica istanze: INSERT E possibile inserire una riga esplicitando i valori degli attributi oppure estraendo le righe da altre tabelle del database. Ø insert into NomeTabella SQLSelect INSERT INTO IMPIEGATI (Codice,Nome,Cognome,Ufficio) ( SELECT * FROM IMPIEGATICOMUNE ) 40

41 Comandi di modifica istanze: DELETE E possibile cancellare tutte le righe che soddisfano una condizione (cancella tutto se non specificata). Ø delete from Tabella where Condizione DELETE FROM IMPIEGATI DELETE FROM IMPIEGATI WHERE (UFFICIO= A ) DELETE FROM TABELLA WHERE NOME IN ( SELECT NOME FROM IMPIEGATICOMUNE) Comandi di modifica istanze: UPDATE E possibile aggiornare il contenuto di uno o piu attributi di una tabella che rispettano una certa condizione. Ø update NomeTabella set attributo=expr SELECT null default [where Condizione] UPDATE IMPIEGATI SET NOME= Mario WHERE (CODICE=5) 41

42 Comandi di modifica istanze: UPDATE E possibile aggiornare il contenuto di uno o piu attributi di una tabella che rispettano una certa condizione. Ø UPDATE IMPIEGATI SET NOME= MARCO WHERE (CODICE=5) Ø UPDATE IMPIEGATI SET NOME=(SELECT NOME FROM IMPIEGATICOMUNE WHERE CODICE=5) WHERE (CODICE=5) 42

Corso di Basi di Dati

Corso di Basi di Dati Corso di Basi di Dati Il Linguaggio SQL Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/ Il Linguaggio SQL SQL (Structured Query Language) è il linguaggio di riferimento per le basi di dati

Dettagli

Structured Query Language

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

Dettagli

SQl come DML. Angelo Chianese,, Vincenzo Moscato, Antonio Picariello,, Lucio Sansone

SQl come DML. Angelo Chianese,, Vincenzo Moscato, Antonio Picariello,, Lucio Sansone SQl come DML Angelo Chianese,, Vincenzo Moscato, Antonio Picariello,, Lucio Sansone Basi di dati per la gestione dell'informazione 2/ed McGraw-Hill Capitolo 5 Appunti dalle lezioni SQL come DDL Sistemi

Dettagli

Database parte 2. Database azienda

Database parte 2. Database azienda Database parte 2 Esercizio azienda SQL Ing. Lucia Vaira lucia.vaira@unisalento.it Database azienda L azienda è organizzata in dipartimenti Ciascun dipartimento ha un codice, un nome e un impiegato che

Dettagli

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA 3. Panoramica su SQL Prof. Mauro Giacomini Sommario Introduzione Istruzione SELECT Tipi di Join Subquery Comandi DML Creazione delle tabelle Introduzione

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 4 Raffaella Gentilini 1 / 46 Sommario 1 Join di Tabelle Join Naturale Theta Join Join Esterno 2 3 Funzioni d aggregazione La Clausola GROUP BY La Clausola HAVING

Dettagli

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"

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 SQL SQL: "storia Sviluppato nella metà degli anni settanta (194) presso il laboratorio di ricerca IBM di S.Josè Dal 1983 ca. "standard di fatto" E il linguaggio di riferimento per l interrogazione di DBMS

Dettagli

QL (Query Language) Alice Pavarani

QL (Query Language) Alice Pavarani QL (Query Language) Alice Pavarani QL Query Language Linguaggio di interrogazione dei dati, permette di: Interrogare la base di dati per estrarre informazioni Elaborare i dati Il risultato di un interrogazione

Dettagli

SQL e algebra relazionale

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

Dettagli

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto SQL Università degli Studi di Salerno Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto A.A. 2005/2006 Select La forma di select cui siamo arrivati

Dettagli

Corso di Basi di Dati

Corso di Basi di Dati Corso di Basi di Dati Il Linguaggio SQL Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/ Il Linguaggio SQL SQL (Structured Query Language) è il linguaggio di riferimento per le basi di dati

Dettagli

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

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

Dettagli

IL LINGUAGGIO SQL LE BASI

IL LINGUAGGIO SQL LE BASI IL LINGUAGGIO SQL LE BASI DB DI RIFERIMENTO PER GLI ESEMPI 2 ESPRESSIONI NELLA CLAUSOLA SELECT La SELECT list può contenere non solo attributi, ma anche espressioni: Le espressioni possono comprendere

Dettagli

SQL - Structured Query Language

SQL - Structured Query Language SQL - Structured Query Language Luca Martini Università di Pisa 16 aprile 2010 Riepilogo sugli operatori aggregati Sintassi SELECT A t t r i b u t o 1, MAX( A t t r i b u t o 2 ),... FROM Tabella1, Tabella2,...

Dettagli

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

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

Dettagli

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 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 è

Dettagli

Queries su più tabelle

Queries su più tabelle 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

Dettagli

Linguaggio SQL seconda parte

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

Dettagli

Manuale Comandi SQL SQL. Sito per esercitarsi (on line) SQL

Manuale Comandi SQL SQL. Sito per esercitarsi (on line) SQL Manuale Comandi SQL Sito per esercitarsi (on line)... 1 SQL... 1 Convenzioni e simboli usati... 2 Query Language... 2 Comando Select... 2 Order By:... 3 Sintassi generale:... 3 Ordinamanto su PIU campi...

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 4 Raffaella Gentilini 1 / 48 Sommario 1 Join di Tabelle Join Naturale Theta Join Join Esterno 2 La Clausola HAVING 3 2 / 48 Join Naturale Theta Join Join Esterno

Dettagli

Basi di Dati: Corso di laboratorio

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

Dettagli

Interrogazioni in SQL SQL. Interrogazioni in SQL. Sintassi. Significato dell interrogazione. Notazione

Interrogazioni in SQL SQL. Interrogazioni in SQL. Sintassi. Significato dell interrogazione. Notazione SQL Anno accademico 2008/2009 Interrogazioni in SQL Originariamente Structured Query Language Non esiste un unico standard SQL standard Formulazione di interrogazioni (query) è parte del Data Manipulation

Dettagli

Operatori aggregati. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni con raggruppamento

Operatori aggregati. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni con raggruppamento Operatori aggregati In algebra relazionale le espressioni vengono valutate sulle singole tuple in successione. Talvolta però possono essere necessarie informazioni derivabili dall esame di tutte le tuple

Dettagli

Informatica Grafica. Basi di dati parte 2

Informatica Grafica. Basi di dati parte 2 Informatica Grafica Corso di Laurea in Ingegneria Edile Architettura Basi di dati parte 2 Michele Lombardi su materiale originario di Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica

Dettagli

SQL: le funzioni di aggregazione

SQL: le funzioni di aggregazione SQL: le funzioni di aggregazione funzioni predefinite che agiscono sui valori contenuti in insiemi di righe della tabella: Conteggi Somme Medie Massimi, minimi Funzione Count La funzione COUNT conta il

Dettagli

<Nome Tabella>.<attributo>

<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

Dettagli

Sistemi di Elaborazione delle Informazioni

Sistemi di Elaborazione delle Informazioni SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2017/2018 1 Sesta parte Interrogazione di una

Dettagli

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) 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

Dettagli

E possibile ordinare le righe del risultato di una interrogazione attraverso la clausola order by, a chiusura di una interrogazione.

E possibile ordinare le righe del risultato di una interrogazione attraverso la clausola order by, a chiusura di una interrogazione. Ordinamento E possibile ordinare le righe del risultato di una interrogazione attraverso la clausola order by, a chiusura di una interrogazione. order by AttrdiOrdinamento [asc desc] {, AttrdiOrdinamento

Dettagli

Interrogazioni in SQL SQL. Interrogazioni in SQL. Cenni sull implementazione

Interrogazioni in SQL SQL. Interrogazioni in SQL. Cenni sull implementazione Interrogazioni in SQL SQL Interrogazioni Non esiste un SQL standard (vari dialetti) Formulazione di interrogazioni (query) è parte del Data Manipulation Language, DML Anche usato come Data Declaration

Dettagli

Manuale SQL. Manuale SQL - 1 -

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,

Dettagli

Linguaggi per basi di dati e SQL

Linguaggi per basi di dati e SQL Linguaggi per basi di dati e SQL Linguaggi per basi di dati operazioni sullo schema DDL: data definition language operazioni sui dati DML: data manipulation language interrogazione ("query") aggiornamento

Dettagli

Linguaggi per basi di dati. Linguaggi per basi di dati e SQL. Linguaggi di interrogazione per basi di dati relazionali. Linguaggi di interrogazione

Linguaggi per basi di dati. Linguaggi per basi di dati e SQL. Linguaggi di interrogazione per basi di dati relazionali. Linguaggi di interrogazione Linguaggi per basi di dati e SQL Linguaggi per basi di dati operazioni sullo schema DDL: data definition language operazioni sui dati DML: data manipulation language interrogazione ("query") aggiornamento

Dettagli

Caratteristiche dei linguaggi per Database

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;

Dettagli

Laboratorio di. Docenti: Alberto Belussi e Carlo Combi

Laboratorio di. Docenti: Alberto Belussi e Carlo Combi Laboratorio di Basi di dati/basi i di dati per Bioinformatica Docenti: Alberto Belussi e Carlo Combi Lezione 3 Interrogazioni i SQL Le interrogazioni i i SQL hanno la seguente struttura: SELECT

Dettagli

Informatica II Basi di Dati (07/08) Parte 2. 4 Accesso ai dati di un DB. Accesso ai dati di un DB. Accesso ai dati di un DB

Informatica II Basi di Dati (07/08) Parte 2. 4 Accesso ai dati di un DB. Accesso ai dati di un DB. Accesso ai dati di un DB Informatica II Basi di Dati (07/08) Parte 2 Gianluca Torta Dipartimento di Informatica dell Università di Torino torta@di.unito.it, 0116706782 4 Accesso ai dati di un DB SQL Accesso ai dati di un DB Aggiornamento

Dettagli

Select From Where...

Select From Where... Select From Where... SELECT Le colonne che saranno mostrate e in che ordine. Calcoli su colonne FROM La tabella o le tabelle usate dall interrogazione WHERE Condizione che deve essere soddisfatta dalle

Dettagli

Il linguaggio SQL - Interrogazioni -

Il linguaggio SQL - Interrogazioni - Il linguaggio SQL - Interrogazioni - Dott. Nicola Dragoni nicola.dragoni@gmail.com (Il contenuto di queste slide è stato originariamente creato dal Dott. Matteo Magnani) 1 Il linguaggio SQL Il linguaggio

Dettagli

SELECT s.nome, e.data Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola

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

Dettagli

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, e.data FROM Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola SQL, e.data, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola As Nome, 2002 - s.annonascita As Eta, 0 As NumeroEsami WHERE NOT EXISTS (SELECT * WHERE e.matricola = s.matricola

Dettagli

Interrogazioni in SQL SQL1 1

Interrogazioni in SQL SQL1 1 Interrogazioni in SQL SQL1 1 Dichiaratività di SQL E un linguaggio di IV generazione: in SQL l'utente specifica QUALE informazione è di suo interesse ma non COME estrarla dai dati il sistema costruisce

Dettagli

Alessandra Raffaetà. Esercizio: Cinema

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

Dettagli

S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali. Alessandra Raffaetà

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

Dettagli

Basi di dati - Laboratorio

Basi di dati - Laboratorio Basi di dati - Laboratorio Corso di Laurea in Bioinformatica Docente: Barbara Oliboni Lezione 4 Contenuto della lezione Interrogazioni SQL Join interni ed esterni Uso di variabili tupla o ALIAS Interrogazioni

Dettagli

Il formato di base di un interrogazione in SQL è: SELECT R i1.c 1, R i2.c 2,..., R in.c n FROM R 1, R 2,..., R k WHERE F;

Il formato di base di un interrogazione in SQL è: SELECT R i1.c 1, R i2.c 2,..., R in.c n FROM R 1, R 2,..., R k WHERE F; 54 Il formato di base di un interrogazione in SQL è: SELECT R i1.c 1, R i2.c 2,..., R in.c n FROM R 1, R 2,..., R k WHERE F; dove R 1, R 2,..., R k è una lista di nomi distinti di relazioni R i1.c 1, R

Dettagli

Interrogazioni su più tabelle. Interrogazioni su più tabelle. Clausola where. Interrogazioni su più tabelle

Interrogazioni su più tabelle. Interrogazioni su più tabelle. Clausola where. Interrogazioni su più tabelle Interrogazioni su più tabelle Se si vogliono estrarre informazioni da più tabelle, queste devono apparire come argomento della clausola from. Se si deve formulare un join, è possibile farlo in modo esplicito

Dettagli

4.SQL QUERY. Fare una query significa fare delle ricerche sul nostro database.

4.SQL QUERY. Fare una query significa fare delle ricerche sul nostro database. 4.SQL QUERY >definizione A cura di: Celora Luca Fare una query significa fare delle ricerche sul nostro database. >strumenti da usare SELECT //sceglie le colonne da visualizzare FROM //indica da quali

Dettagli

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. SQL come Data Manipulation Language - (SELECT FROM WHERE ORDER BY)

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. SQL come Data Manipulation Language - (SELECT FROM WHERE ORDER BY) SQL SQL come Data Manipulation Language - (SELECT FROM WHERE ORDER BY) Esempio 1 Madre Maternita Figlio Nome Eta Andrea 27 Aldo 25 Maria 55 Anna 50 Filippo 26 50 60 Olga 30 Sergio 85 Luisa 75 Persone Reddito

Dettagli

Il linguaggio SQL: DML di base. Versione elettronica: 04.2.SQL.DMLbase.pdf

Il linguaggio SQL: DML di base. Versione elettronica: 04.2.SQL.DMLbase.pdf Il linguaggio SQL: DML di base Sistemi Informativi T Versione elettronica: 04.2.SQL.DMLbase.pdf Data Manipulation Language (DML) Le istruzioni del DML di SQL sono SELECT INSERT DELETE UPDATE esegue interrogazioni

Dettagli

Il linguaggio SQL: DML di base

Il linguaggio SQL: DML di base Il linguaggio SQL: DML di base Sistemi Informativi T Versione elettronica: 04.2.SQL.DMLbase.pdf Data Manipulation Language (DML) Le istruzioni del DML di SQL sono SELECT INSERT DELETE UPDATE esegue interrogazioni

Dettagli

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

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

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 4 Raffaella Gentilini 1 / 27 Sommario 1 Join di Tabelle 2 3 2 / 27 Lo Statement JOIN Join espliciti di tabelle nella clausola FROM In SQL e possibile scrivere

Dettagli

Linguaggio SQL: fondamenti D B M G

Linguaggio SQL: fondamenti D B M G Linguaggio SQL: fondamenti Istruzione SELECT: fondamenti Struttura di base Clausola WHERE Ordinamento del risultato Join Funzioni aggregate Operatore GROUP BY 2 Istruzione SELECT: esempio Trovare il codice

Dettagli

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/ Modelli di Base Dati 8 L aggregazione e il raggruppamento in SQL a.a. 2001/2002 8.1 SQL: le funzioni di aggregazione 8.2 funzioni predefinite che agiscono sui valori contenuti in insiemi di righe della

Dettagli

Interrogazioni complesse. SQL avanzato 1

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

Dettagli

SQL - Sottointerrogazioni

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)

Dettagli

Le implementazioni nei vari DBMS relazionali commerciali

Le implementazioni nei vari DBMS relazionali commerciali Andrea Gasparetto Le implementazioni nei vari DBMS relazionali commerciali includono funzionalità non previste dallo standard non includono funzionalità previste dallo standard implementano funzionalità

Dettagli

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

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

Dettagli

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno : SQL (3) Tabelle multiple, variabili, operatori di aggregazione QUERIES SU PIU TABELLE Queries su più tabelle 17 mar 010 Dia 3 17 mar 010 Dia 4 Per formulare un interrogazione su più tabelle, la clausola

Dettagli

SQL /10/2016 Basi di dati - SQL 1

SQL /10/2016 Basi di dati - SQL 1 SQL 24-27/10/2016 Basi di dati - SQL 1 Esercitazioni pratiche Per SQL è possibile (e fondamentale) svolgere esercitazioni pratiche Verranno anche richieste copme condizione per svolgere le prove parziali

Dettagli

Il linguaggio SQL: raggruppamenti

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

Dettagli

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

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative SQL SQL Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative l utente specifica quale informazione è di suo interesse, ma non come estrarla dai dati Le interrogazioni vengono

Dettagli

Archivi e basi di dati - ing. M. Cossentino. Settore. Traccia 1. Traccia 200. Settore non polarizzato

Archivi e basi di dati - ing. M. Cossentino. Settore. Traccia 1. Traccia 200. Settore non polarizzato Settore Traccia 1 Traccia 200 Settore non polarizzato '! " # $ % & ( ) * + + ' ' ' !"#"$%, & &'(("% '&)'' ''"* - -. / / / 0/!- "-, (0 #- / / / 0/ --- + 1 ' # $ + 2 13 ,, - 4 '. & 56 2 '/!!! "7&% 8, 9 /'"'0'1'&'

Dettagli

Interpretazione delle query nidificate

Interpretazione delle query nidificate Interpretazione delle query nidificate Per analizzare il risultato di una interrogazione nidificata si può supporre di valutare prima il risultato dell interrogazione nidificata (query interna) per poi

Dettagli

Appunti su SQL. Query Language. Comando Select

Appunti su SQL. Query Language. Comando Select Appunti su SQL Query Language... 1 Comando Select... 1 Select con campi ordinati: order By... 3 Sintassi generale:... 3 Ordinamanto su PIU campi... 3 DML (Data Manipulation Language per inserimento e modifica

Dettagli

D B M G. Linguaggio SQL: fondamenti. Istruzione SELECT: fondamenti. Elena Baralis 2007 Politecnico di Torino 1. Struttura di base

D B M G. Linguaggio SQL: fondamenti. Istruzione SELECT: fondamenti. Elena Baralis 2007 Politecnico di Torino 1. Struttura di base Linguaggio SQL: fondamenti Struttura di base Clausola WHERE Ordinamento del risultato Join Funzioni aggregate Operatore GROUP BY 2007 Politecnico di Torino 1 Istruzione SELECT: esempio Trovare il codice

Dettagli

Prof. Alberto Postiglione Dipartimento di Scienze della Comunicazione Università degli Studi di Salerno

Prof. Alberto Postiglione Dipartimento di Scienze della Comunicazione Università degli Studi di Salerno Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno : SQL (1) Interrogazioni semplici Prof. Alberto Postiglione

Dettagli

Tabelle esempio: Impiegato/Dipartimento

Tabelle esempio: Impiegato/Dipartimento Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno : SQL (3) Insiemistiche e Nidificate Prof. Alberto Postiglione

Dettagli

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. 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

Dettagli

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

Basi di Dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL Basi di Dati Il Linguaggio SQL Il Linguaggio SQL SQL (Structured Query Language) è di fatto lo standard tra i linguaggi per la gestione di basi di dati relazionali è un linguaggio dichiarativo (non-procedurale),

Dettagli

Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2007 Politecnico di Torino 1 Linguaggio SQL: fondamenti Struttura di base Clausola WHEE Ordinamento del risultato Join unzioni aggregate Operatore GOU BY Istruzione SELECT: esempio di BD forniture prodotti Istruzione SELECT: esempio

Dettagli

Fondamenti di Informatica A. A / 1 9

Fondamenti di Informatica A. A / 1 9 Fondamenti di Informatica Prof. Marco Lombardi A. A. 2 0 1 8 / 1 9 Concetti Introduttivi 1/2 SQL (Structured Query Language) permette di manipolare i dati, interrogare un database relazionale e modellarne

Dettagli

Corso di Basi di Dati

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

Dettagli

Parte III. L algebra relazionale

Parte III. L algebra relazionale Parte III L algebra relazionale asi di dati - prof. Silvio Salza - a.a. 2014-2015 III - 1 Linguaggi di interrogazione Dichiarativi: specificano le proprietà del risultato ("che cosa") Procedurali: specificano

Dettagli

SQL - Sottointerrogazioni correlate

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

Dettagli

Basi di Dati. Dettagli e Approfondimenti SQL-92 25/02/2004. Dettagli e Approfondimenti. DDL: Tabelle. DML: Aggiornamenti.

Basi di Dati. Dettagli e Approfondimenti SQL-92 25/02/2004. Dettagli e Approfondimenti. DDL: Tabelle. DML: Aggiornamenti. Basi di Dati SQL-92 Dettagli e Approfondimenti SQL-92 >> Sommario Dettagli e Approfondimenti DDL: Tabelle valori di default vincoli di riferimento modifiche allo schema DDL: Viste definizione e uso DDL:

Dettagli

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

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

Dettagli

Esercitazione 2 SQL.

Esercitazione 2 SQL. Esercitazione 2 SQL foglia@iet.unipi.it DB Riferimento Consideriamo i seguenti schemi di una base di dati relazionale: DIPARIMENTI(CodiceDipartimento, Nome, Indirizzo, Citta, NumeroDipendenti, CostiTotaliAnnui,

Dettagli

Basi di Dati SQL-92. Dettagli e Approfondimenti

Basi di Dati SQL-92. Dettagli e Approfondimenti Basi di Dati SQL-92 Dettagli e Approfondimenti SQL-92 >> Sommario Dettagli e Approfondimenti DDL: Tabelle valori di default vincoli di riferimento modifiche allo schema DDL: Viste definizione e uso DDL:

Dettagli

Sistemi di Elaborazione delle Informazioni

Sistemi di Elaborazione delle Informazioni SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2017/2018 1 Settima parte Interrogazione di una

Dettagli

Istruzioni. DDL: CREATE, DROP e ALTER TABLE. DML: INSERT, DELETE e UPDATE DQL: SELECT. DCL: GRANT e REVOKE

Istruzioni. DDL: CREATE, DROP e ALTER TABLE. DML: INSERT, DELETE e UPDATE DQL: SELECT. DCL: GRANT e REVOKE Istruzioni DDL: CREATE, DROP e ALTER TABLE DML: INSERT, DELETE e UPDATE DQL: SELECT DCL: GRANT e REVOKE INSERT INSERT INTO nome_tabella VALUES (V 1, V 2,, V N ); Inserisce la n-upla (v 1,, v n ) nella

Dettagli

Basi di Dati SQL-92. Dettagli e Approfondimenti

Basi di Dati SQL-92. Dettagli e Approfondimenti Basi di Dati SQL-92 Dettagli e Approfondimenti SQL-92 >> Sommario Dettagli e Approfondimenti DDL: Tabelle valori di default vincoli di riferimento modifiche allo schema DDL: Viste definizione e uso DDL:

Dettagli

SQL - Structured Query Language

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

Dettagli

Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a

Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a. 2012-2013 2013 Docente: Gigliola Vaglini Docenti laboratorio: Francesco Pistolesi, Antonio Virdis Lezione

Dettagli

Il linguaggio SQL: raggruppamenti

Il linguaggio SQL: raggruppamenti Il linguaggio SQL: raggruppamenti Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLb-gruppi.pdf Sistemi Informativi L-A Informazioni di sintesi

Dettagli

Appunti su SQL. Query Language. Comando Select

Appunti su SQL. Query Language. Comando Select Appunti su SQL Query Language... 1 Comando Select... 1 Select con campi calcolati e order By... 4 campi calcolati Sintassi generale:... 4 order By Sintassi generale:... 4 Select con Join (due tabelle)...

Dettagli

Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2007 Politecnico di Torino 1 Linguaggio SQL: fondamenti Struttura di base Clausola WHEE Ordinamento del risultato Join unzioni aggregate Operatore GOU BY Istruzione SELECT: esempio Trovare il codice e il numero di soci dei fornitori

Dettagli

SQL. SQL come Data Manipulation Language - Inserimento, cancellazione e aggiornamento di righe

SQL. SQL come Data Manipulation Language - Inserimento, cancellazione e aggiornamento di righe SQL SQL come Data Manipulation Language - Inserimento, cancellazione e aggiornamento di righe Operazioni di aggiornamento Abbiamo visto come creare tabelle e come interrogarle. Vedremo ora come popolarle

Dettagli

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione Università degli Studi di Salerno 2.3b: SQL (2) Interrogazioni semplici INFORMATICA GENERALE Prof. Alberto Postiglione Scienze

Dettagli

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

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) 1 SQL Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) a.a. 2015/2016 http://www.di.uniba.it/~lisi/courses/basi-dati/bd2015-16.htm dott.ssa Francesca A. Lisi francesca.lisi@uniba.it

Dettagli

Lezioni di Laboratorio sui Data Base

Lezioni di Laboratorio sui Data Base Lezioni di Laboratorio sui Data Base Informatica per l'impresa Docente Tutor: Dott. Gianluigi Roveda OBIETTIVO: Rivedere come attività di laboratorio le query di tipo select scritte in SQL ma con le variazioni

Dettagli

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. SQL come Data Manipulation Language - Funzioni Aggregate e GROUP BY

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. SQL come Data Manipulation Language - Funzioni Aggregate e GROUP BY SQL SQL come Data Manipulation Language - Funzioni Aggregate e GROUP BY Esempio DB 1 Madre Maternita Figlio Nome Eta Andrea 27 Aldo 25 Maria 55 Anna 50 Filippo 26 Luigi 50 Franco 60 Olga 30 Sergio 85 Luisa

Dettagli

Interrogazioni semplici

Interrogazioni semplici Interrogazioni semplici Lorenzo Sarti 2009 Basi di Dati 1 select Campi considerati Matricola Cognome Nome Data di nascita A80198760 Bianchi Anna 22/03/1967 A80293450 Rossi Andrea 13/04/1968 A80198330 Neri

Dettagli

Basi di Dati: Corso di laboratorio

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

Dettagli