Capitolo 4: SQL (Slides( da Atzeni,, Ceri, Paraboschi, Torlonee,, Basi di dati McGraw-Hill. Hill,, 2002)

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Capitolo 4: SQL (Slides( da Atzeni,, Ceri, Paraboschi, Torlonee,, Basi di dati McGraw-Hill. Hill,, 2002)"

Transcript

1 SQL, Definizione e interrogazione di basi di dati Capitolo 4: SQL (Slides( da Atzeni,, Ceri, Paraboschi, Torlonee,, Basi di dati McGraw-Hill Hill,, 2002) SQL Structured Query Language è un linguaggio con varie funzionalità: contiene sia il DDL che il DML ne esistono varie versioni vediamo gli aspetti essenziali, non i dettagli basi di dati 2 1

2 Breve storia dell SQL SQL: Structured Query Language SQL sviluppato alla IBM nel 1973 Dal 1983 standard de facto Primo standard nel 1986 rivisto nel 1989 (SQL-89) Secondo standard nel 1992 (SQL-2 o SQL-92) Terzo standard nel 1999 (SQL-3 o SQL-99) Quasi tutti i DBMS commerciali adottano lo standard SQL piu estensioni proprie (non-standard) Alcuni sistemi commerciali Oracle, Informix, Sybase, DB2, SQL-Server, etc. Alcuni sistemi open-source: MySQL, Postgres Esistono sistemi commerciali che utilizzano interfacce tipo QBE (Query by Example): ACCESS Tuttavia hanno sistemi per la traduzione automatica in SQL basi di dati 3 Definizione dei dati in SQL Istruzione CREATE TABLE: definisce uno schema di relazione e ne crea un istanza vuota specifica attributi, domini e vincoli basi di dati 4 2

3 CREATE TABLE, esempio CREATE TABLE Impiegato( Matricola CHAR(6) PRIMARY KEY, Nome CHAR(20) NOT NULL, Cognome CHAR(20) NOT NULL, Dipart CHAR(15), Stipendio NUMERIC(9) DEFAULT 0, FOREIGN KEY(Dipart) REFERENCES Dipartimento(NomeDip), UNIQUE (Cognome,Nome) ) basi di dati 5 Domini Domini elementari (predefiniti) Domini definiti dall'utente (semplici, ma riutilizzabili) basi di dati 6 3

4 Domini elementari Carattere: singoli caratteri o stringhe, anche di lunghezza variabile Bit: singoli booleani o stringhe Numerici, esatti e approssimati Data, ora Sistemi diversi estendono il set di base con domini non standard (vettori, periodi, ecc.) basi di dati 7 Definizione di domini Istruzione CREATE DOMAIN: definisce un dominio (semplice), utilizzabile in definizioni di relazioni, anche con vincoli e valori di default basi di dati 8 4

5 CREATE DOMAIN, esempio CREATE DOMAIN Voto AS SMALLINT DEFAULT NULL CHECK ( value >=18 AND value <= 30 ) basi di dati 9 Vincoli intrarelazionali NOT NULL UNIQUE definisce chiavi PRIMARY KEY: chiave primaria (una sola, implica NOT NULL) CHECK, vedremo più avanti basi di dati 10 5

6 UNIQUE e PRIMARY KEY due forme: nella definizione di un attributo, se forma da solo la chiave come elemento separato basi di dati 11 CREATE TABLE, esempio CREATE TABLE Impiegato( Matricola CHAR(6) PRIMARY KEY, Nome CHAR(20) NOT NULL, Cognome CHAR(20) NOT NULL, Dipart CHAR(15), Stipendio NUMERIC(9) DEFAULT 0, FOREIGN KEY(Dipart) REFERENCES Dipartimento(NomeDip), UNIQUE (Cognome,Nome) ) basi di dati 12 6

7 PRIMARY KEY, alternative Matricola CHAR(6) PRIMARY KEY Matricola CHAR(6),, PRIMARY KEY (Matricola) basi di dati 13 CREATE TABLE, esempio CREATE TABLE Impiegato( Matricola CHAR(6) PRIMARY KEY, Nome CHAR(20) NOT NULL, Cognome CHAR(20) NOT NULL, Dipart CHAR(15), Stipendio NUMERIC(9) DEFAULT 0, FOREIGN KEY(Dipart) REFERENCES Dipartimento(NomeDip), UNIQUE (Cognome,Nome) ) basi di dati 14 7

8 Chiavi su più attributi, attenzione Nome CHAR(20) NOT NULL, Cognome CHAR(20) NOT NULL, UNIQUE (Cognome,Nome), Nome CHAR(20) NOT NULL UNIQUE, Cognome CHAR(20) NOT NULL UNIQUE, Non è la stessa cosa! basi di dati 15 Vincoli interrelazionali CHECK, vedremo più avanti REFERENCES e FOREIGN KEY permettono di definire vincoli di integrità referenziale di nuovo due sintassi per singoli attributi su più attributi E' possibile definire politiche di reazione alla violazione basi di dati 16 8

9 Infrazioni Codice Data 1/2/95 4/3/95 5/4/96 5/2/98 Vigile Prov MI TO PR PR Numero 39548K E Vigili Matricola Cognome Rossi Neri Neri Mori Nome Luca Piero Mario Gino basi di dati 17 Infrazioni Codice Data 1/2/95 4/3/95 5/4/96 5/2/98 Vigile Prov MI TO PR PR Numero 39548K E Auto Prov Numero MI TO PR 39548K E Cognome Rossi Rossi Neri Nome Mario Mario Luca basi di dati 18 9

10 CREATE TABLE, esempio CREATE TABLE Infrazioni( Codice CHAR(6) NOT NULL PRIMARY KEY, Data DATE NOT NULL, Vigile INTEGER NOT NULL REFERENCES Vigili(Matricola), Provincia CHAR(2), Numero CHAR(6), FOREIGN KEY(Provincia, Numero) REFERENCES Auto(Provincia, Numero) ) basi di dati 19 Modifiche degli schemi ALTER DOMAIN ALTER TABLE DROP DOMAIN DROP TABLE... basi di dati 20 10

11 Definizione degli indici è rilevante dal punto di vista delle prestazioni ma è a livello fisico e non logico in passato era importante perché in alcuni sistemi era l'unico mezzo per definire chiavi CREATE INDEX basi di dati 21 SQL, operazioni sui dati interrogazione: SELECT modifica: INSERT, DELETE, UPDATE basi di dati 22 11

12 Istruzione SELECT per l interrogazione SELECT ListaAttributi FROM ListaTabelle [ WHERE Condizione ] "target list" clausola FROM clausola WHERE basi di dati 23 Capacità del comando SELECT Selezione Proiezione Tabella 1 Join Tabella 1 Tabella 1 Tabella 2 basi di dati 24 12

13 SELECT SELECT ListaAttributi FROM ListaTabelle [ WHERE Condizione ] La query 1. considera il prodotto cartesiano tra le tabelle in ListaTabelle 2. fra queste seleziona solo le righe che soddisfano la Condizione 3. e infine valuta le espressioni specificate nella target list ListaAttributi La SELECT implementa gli operatori Ridenominazione Proiezione, Selezione e Join dell algebra relazionale Piu altro che vedremo piu avanti basi di dati 25 Convenzione scrittura comandi SQL I comandi SQL non sono case sensitive Possono essere distribuiti in una o più righe terminate da un separatore Clausole diverse sono usualmente inserite in linee separate Per convenzione si usa scrivere i costrutti SQL in maiuscolo SELECT Professore, Corsi.Corso FROM Corsi, Esami, Studenti WHERE Corsi.Corso = Esami.Corso AND Esami.Matricola = Studenti.Matricola AND Nome= Teo Verdi AND Voto > 24 basi di dati 26 13

14 Database di esempio Maternità Paternità Madre Luisa Luisa Anna Anna Maria Maria Padre Sergio Luigi Luigi Franco Franco Figlio Maria Luigi Olga Filippo Andrea Aldo Figlio Franco Olga Filippo Andrea Aldo Persone Nome Età Andrea 27 Aldo 25 Maria 55 Anna 50 Filippo 26 Luigi 50 Franco 60 Olga 30 Sergio 85 Luisa 75 Reddito basi di dati 27 Esempio query Nome e reddito delle persone con meno di trenta anni π Nome, Reddito (σ Eta<30 (Persone)) SELECT nome, reddito FROM persone WHERE eta < 30 Nome Andrea Aldo Filippo Reddito basi di dati 28 14

15 Espressioni aritmetiche nella target list Creare espressioni attraverso l uso dei soliti operatori aritmetici: +, -, *, / Le priorita sono quelle standard Possono essere alterate con l uso delle parentesi basi di dati 29 Uso degli operatori Aritmetici SQL> SELECT ename, sal, sal FROM emp; ENAME SAL exp KING BLAKE CLARK JONES MARTIN ALLEN rows selected. basi di dati 30 15

16 Precedenza operatori aritmetici SQL> SELECT ename, sal, 12*sal FROM emp; ENAME SAL exp KING BLAKE CLARK JONES MARTIN ALLEN rows selected. basi di dati 31 Uso delle parentesi SQL> SELECT ename, sal, 12*(sal+100) 2 FROM emp; ENAME SAL exp KING BLAKE CLARK JONES MARTIN rows selected. basi di dati 32 16

17 Alias delle colonne Ridenominare il nome di una colonna Implementa l operatore (Ridenominazione) dell algebra relazionale L alias deve seguire immediatamente il nome di una colonna (SENZA VIRGOLA) può essere usata opzionalmente la parola chiave AS tra il nome della colonna e l alias Richiede doppio apice se l alias ha degli spazi basi di dati 33 Uso dell Alias SQL> SELECT ename AS name, sal salary 2 FROM emp; NAME SALARY SQL> SELECT ename "Name", 2 sal*12 "Annual Salary" 3 FROM emp; Name Annual Salary basi di dati 34 17

18 Proiezione, senza selezione Nome e reddito di tutte le persone π Nome, Reddito (Persone) SELECT nome, reddito FROM persone basi di dati 35 Selezione, senza proiezione Uso dello `*` nella target list Nome, età e reddito delle persone con meno di trenta anni σ Eta<30 (Persone) SELECT * FROM persone WHERE eta < 30 basi di dati 36 18

19 Limitare le righe selezionate tramite WHERE Corrisponde all operatore (Restrizione) dell algebra relazionale SELECT [DISTINCT] {* colonna [alias],...} FROM tabella [WHERE condizione(i)]; La clausola WHERE segue la clausola FROM E opzionale basi di dati 37 Uso della clausola WHERE SQL> SELECT ename, job, deptno 2 FROM emp 3 WHERE job='clerk'; ENAME JOB DEPTNO JAMES CLERK 30 SMITH CLERK 20 ADAMS CLERK 20 MILLER CLERK 10 basi di dati 38 19

20 Stringhe di caratteri e Date Stringhe di caratteri e date vanno incluse tra apici. I caratteri sono case sensitive e le date sono format sensitive SQL> SELECT ename, job, deptno 2 FROM emp 3 WHERE ename = 'JAMES'; basi di dati 39 Condizione di WHERE Condizione : := Predicato ( Condizione ) NOT Condizione Condizione (AND OR) Condizione Predicato Espr op (Espr ( Sottoselect ) ) op {=, <>, >, >=, <, <=} SottoSelect deve dare come risultato una tabella con un solo elemento o vuota (vedremo alcuni esempi) basi di dati 40 20

21 Uso degli Operatori di Confronto SQL> SELECT ename, sal, comm 2 FROM emp 3 WHERE sal<=comm; ENAME SAL COMM MARTIN basi di dati 41 Altri Operatori di Confronto Operatore BETWEEN...AND... IN(list) LIKE IS NULL Significato compreso tra due valori Corrisp. ad uno dei valori nella lista Operatore di pattern matching Valore nullo basi di dati 42 21

22 Uso dell operatore BETWEEN BETWEEN consente la selezione di righe con attributi in un particolare range SQL> SELECT ename, sal 2 FROM emp 3 WHERE sal BETWEEN 1000 AND 1500; ENAME SAL MARTIN 1250 TURNER 1500 WARD 1250 ADAMS 1100 MILLER 1300 Limite inferiore Limite superiore basi di dati 43 Predicato BETWEEN Espr1 [NOT] BETWEEN Espr2 AND Espr3 Equivale a [NOT] Espr2 Espr1 AND Espr1 Espr3 basi di dati 44 22

23 Uso dell operatore IN E usato per selezionare righe che hanno un attributo che assume valori contenuti in una lista. SQL> SELECT empno, ename, sal, mgr 2 FROM emp 3 WHERE mgr IN (7902, 7566, 7788); EMPNO ENAME SAL MGR FORD SMITH SCOTT ADAMS basi di dati 45 Uso dell operatore LIKE LIKE è usato per effettuare ricerche wildcard di una stringa di valori. Le condizioni di ricerca possono contenere sia letterali, caratteri o numeri. % denota zero o più caratteri. _ denota un carattere. SQL> SELECT ename 2 FROM emp 3 WHERE ename LIKE 'S%'; basi di dati 46 23

24 Uso dell operatore LIKE Il pattern-matching di caratteri può essere combinato SQL> SELECT ename 2 FROM emp 3 WHERE ename LIKE '_A%'; ENAME MARTIN JAMES WARD I identificatore ESCAPE (\) deve essere usato per cercare "%" o "_". basi di dati 47 Gestione dei valori nulli Impiegati Matricola Cognome Filiale Età Rossi Neri Milano Roma Bruni Neri Milano NULL Bruni Milano NULL σ Età > 40 OR Età IS NULL (Impiegati) basi di dati 48 24

25 Gli impiegati la cui età è o potrebbe essere maggiore di 40 σ Età > 40 OR Età IS NULL (Impiegati) SELECT * FROM impiegati WHERE eta > 40 OR eta is null basi di dati 49 SQL e algebra relazionale R1(A1,A2) R2(A3,A4) SELECT R1.A1, R2.A4 FROM R1, R2 WHERE R1.A2 = R2.A3 prodotto cartesiano (FROM) selezione (WHERE) proiezione (SELECT) basi di dati 50 25

26 SQL e algebra relazionale R1(A1,A2) R2(A3,A4) SELECT R1.A1, R2.A4 FROM R1, R2 WHERE R1.A2 = R2.A3 π A1,A4 (σ A2=A3 (R1 JOIN R2)) basi di dati 51 possono essere necessarie ridenominazioni nel prodotto cartesiano nella target list SELECT X.A1 AS B1,... FROM R1 X, R2 Y, R1 Z WHERE X.A2 = Y.A3 AND... basi di dati 52 26

27 Self JOIN su R1 SELECT X.A1 AS B1, Y.A4 AS B2 FROM R1 X, R2 Y, R1 Z WHERE X.A2 = Y.A3 AND Y.A4 = Z.A1 δ B1,B2 A1,A4 ( π A1,A4 (σ A2 = A3 AND A4 = C1 ( R1 JOIN R2 JOIN δ C1,C2 A1,A2 (R1)))) basi di dati 53 cognome e filiale di tutti gli impiegati Matricola Cognome Filiale Stipendio Neri Napoli 55 Neri Milano 64 Rossi Roma 44 Rossi Roma 64 π Cognome, Filiale (Impiegati) basi di dati 54 27

28 SELECT cognome, filiale FROM impiegati SELECT distinct cognome, filiale FROM impiegati Cognome Neri Neri Rossi Rossi Filiale Napoli Milano Roma Roma Cognome Neri Neri Rossi Filiale Napoli Milano Roma basi di dati 55 Maternità Paternità Madre Figlio Luisa Maria Luisa Luigi Anna Olga Anna Filippo Maria Andrea Maria Aldo Padre Figlio Sergio Franco Luigi Olga Luigi Filippo Franco Andrea Franco Aldo Persone Nome Età Andrea 27 Aldo 25 Maria 55 Anna 50 Filippo 26 Luigi 50 Franco 60 Olga 30 Sergio 85 Luisa 75 Reddito basi di dati 56 28

29 Selezione, proiezione e join I padri di persone che guadagnano più di 20 π Padre (paternita JOIN Figlio=Nome (σ Reddito>20 (persone))) SELECT distinct padre FROM persone, paternita WHERE figlio = nome AND reddito > 20 basi di dati 57 Join naturale Padre e madre di ogni persona paternita JOIN maternita SELECT paternita.figlio,padre, madre FROM maternita, paternita WHERE paternita.figlio = maternita.figlio basi di dati 58 29

30 Necessita di ridenominazione Le persone che guadagnano più dei rispettivi padri; mostrare nome, reddito e reddito del padre π Nome, Reddito, RP (σ Reddito>RP (δ NP,EP,RP Nome,Eta,Reddito (persone) JOIN NP=Padre (paternita JOIN Figlio =Nome persone))) SELECT f.nome, f.reddito, p.reddito FROM persone p, paternita, persone f WHERE p.nome = padre AND figlio = f.nome AND f.reddito > p.reddito basi di dati 59 SELECT, con ridenominazione del risultato SELECT figlio, f.reddito AS reddito, p.reddito AS redditopadre FROM persone p, paternita, persone f WHERE p.nome = padre AND figlio = f.nome AND f.reddito > p.reddito O meglio SELECT x.figlio, f.reddito AS reddito, p.reddito AS redditopadre FROM persone p, paternita x, persone f WHERE p.nome = x.padre AND x.figlio = f.nome AND f.reddito > p.reddito basi di dati 60 30

31 Join esplicito (JOIN-ON) Sintassi: SELECT FROM Tabella { JOIN Tabella ON CondDiJoin }, [ WHERE AltraCondizione ] Esempio: padre e madre di ogni persona (le due versioni): SELECT paternita.figlio,padre, madre FROM maternita, paternita WHERE paternita.figlio = maternita.figlio SELECT madre, paternita.figlio, padre FROM maternita JOIN paternita ON paternita.figlio = maternita.figlio basi di dati 61 Le persone che guadagnano più dei rispettivi padri; mostrare nome, reddito e reddito del padre SELECT f.nome, f.reddito, p.reddito FROM persone p, paternita, persone f WHERE p.nome = padre AND figlio = f.nome AND f.reddito > p.reddito SELECT f.nome, f.reddito, p.reddito FROM persone p JOIN paternita ON p.nome = padre JOIN persone f ON figlio = f.nome WHERE f.reddito > p.reddito basi di dati 62 31

32 Ulteriore estensione: join naturale (meno diffuso) π Figlio,Padre,Madre ( paternita JOIN Figlio = Nome δ Nome=Figlio (maternita)) paternita JOIN maternita SELECT madre, paternita.figlio, padre FROM maternita JOIN paternita ON paternita.figlio = maternita.figlio SELECT madre, paternita.figlio, padre FROM maternita natural JOIN paternita basi di dati 63 Join esterno: "outer join" Padre e, se nota, madre di ogni persona SELECT paternita.figlio, padre, madre FROM paternita LEFT JOIN maternita ON paternita.figlio = maternita.figlio SELECT paternita.figlio, padre, madre FROM paternita LEFT OUTER JOIN maternita ON paternita.figlio = maternita.figlio `outer` e' opzionale basi di dati 64 32

33 Outer join SELECT paternita.figlio, padre, madre FROM maternita JOIN paternita ON maternita.figlio = paternita.figlio SELECT paternita.figlio, padre, madre FROM maternita LEFT OUTER JOIN paternita ON maternita.figlio = paternita.figlio SELECT paternita.figlio, padre, madre FROM maternita FULL OUTER JOIN paternita ON maternita.figlio = paternita.figlio basi di dati 65 Ordinamento del risultato Nome e reddito delle persone con meno di trenta anni in ordine alfabetico SELECT nome, reddito FROM persone WHERE eta < 30 ORDER BY nome basi di dati 66 33

34 SELECT nome, reddito FROM persone WHERE eta < 30 SELECT nome, reddito FROM persone WHERE eta < 30 ORDER BY nome Persone Nome Reddito Andrea 21 Aldo 15 Filippo 30 Persone Nome Reddito Aldo 15 Andrea 21 Filippo 30 basi di dati 67 Operatori aggregati Nelle espressioni della target list possiamo avere anche espressioni che calcolano valori a partire da insiemi di ennuple SQL-2 prevede 5 possibili operatori di aggregamento: conteggio, minimo, massimo, media, somma Gli operatori di aggregamento NON sono rappresentabili in Algebra Relazionale basi di dati 68 34

35 Operatori aggregati: COUNT COUNT restituisce il numero di righe o il numero di valori distinti di un particolare attributo Esempio: Il numero di figli di Franco: SELECT count(*) as NumFigliDiFranco FROM Paternita WHERE Padre = 'Franco' l operatore aggregato (count) viene applicato al risultato dell interrogazione: SELECT * FROM Paternita WHERE Padre = 'Franco' basi di dati 69 Paternità Padre Sergio Luigi Luigi Franco Franco Figlio Franco Olga Filippo Andrea Aldo NumFigliDiFranco 2 basi di dati 70 35

36 COUNT e valori nulli Numero di tuple SELECT count(*) FROM persone Numero di volte il campo reddito non e NULL SELECT count(reddito) FROM persone Numero di valori distinti del campo reddito (senza i NULL) SELECT count(distinct reddito) FROM persone Persone Nome Età Andrea 27 Aldo 25 Maria 55 Anna 50 Reddito 21 NULL basi di dati 71 Altri operatori aggregati SUM, AVG, MAX, MIN Media dei redditi di coloro che hanno meno di 30 anni: SELECT avg(reddito) FROM persone WHERE eta < 30 Uso del JOIN: media dei redditi dei figli di Franco: SELECT avg(reddito) FROM persone JOIN paternita ON nome=figlio WHERE padre='franco Uso di piu operatori di aggregamento nella target list: SELECT avg(reddito), min(reddito), max(reddito) FROM persone WHERE eta < 30 basi di dati 72 36

37 Operatori aggregati e valori nulli SELECT avg(reddito) AS redditomedio FROM persone Persone Nome Età Andrea 27 Aldo 25 Maria 55 Anna 50 Reddito 30 NULL basi di dati 73 Operatori aggregati e target list un interrogazione scorretta: SELECT nome, max(reddito) FROM persone di chi sarebbe il nome? La target list deve essere omogenea SELECT min(eta), avg(reddito) FROM persone basi di dati 74 37

38 Operatori aggregati e raggruppamenti Le funzioni possono essere applicate a partizioni delle relazioni Clausola GROUP BY Syntax: GROUP BY listaattributi Il numero di figli di ciascun padre SELECT padre, count(*) AS NumFigli FROM paternita GROUP BY Padre paternita Padre Sergio Luigi Luigi Franco Franco Figlio Franco Olga Filippo Andrea Aldo Padre NumFigli Sergio Luigi 1 2 Franco 2 basi di dati 75 Esempio GROUP BY Per ogni dipartimento, restituire la somma degli stipendi di tutti gli impiegati (di quel dipartimento) Relazione: Employee(Name,Dept,Office,Salary,City) basi di dati 76 38

39 Semantica degli operatori di raggruppamento (1) La query e innanzitutto eseguita senza operatori aggregati e senza GROUP BY: basi di dati 77 Semantica degli operatori di raggruppamento (2) Quindi il risultato e diviso in sottoinsiemi aventi gli stessi valori per gli attributi indicati nel GROUP BY (Dept nel nostro caso) Quindi l operatore di aggregamento e calcolato su ogni sottoinsieme: basi di dati 78 39

40 Raggruppamenti e target list scorretta SELECT padre, avg(f.reddito), p.reddito FROM persone f JOIN paternita ON figlio = nome JOIN persone p ON padre =p.nome GROUP BY padre corretta SELECT padre, avg(f.reddito) FROM persone f JOIN paternita ON figlio = nome JOIN persone p ON padre =p.nome GROUP BY padre basi di dati 79 Condizioni sui gruppi, clausola HAVING Si possono applicare condizioni sul valore aggregato per ogni gruppo Esempio: I dipartimenti la cui somma dei salari e maggiore di 100 basi di dati 80 40

41 WHERE o HAVING? I padri i cui figli sotto i 30 anni hanno un reddito medio maggiore di 25: SELECT padre, avg(f.reddito) FROM persone f JOIN paternita ON figlio = nome WHERE eta < 30 GROUP BY padre HAVING avg(f.reddito) > 25 basi di dati 81 Sintassi, riassumiamo SelectSQL ::= select ListaAttributiOEspressioni from ListaTabelle [ where CondizioniSemplici ] [ group by ListaAttributiDiRaggruppamento ] [ having CondizioniAggregate ] [ order by ListaAttributiDiOrdinamento ] basi di dati 82 41

42 Unione, intersezione e differenza La SELECT da sola non permette di fare unioni; serve un costrutto esplicito: SELECT UNION [all] SELECT... i duplicati vengono eliminati (a meno che si usi all) anche dalle proiezioni! basi di dati 83 Notazione posizionale! SELECT padre FROM paternita UNION SELECT madre FROM maternita quali nomi per gli attributi del risultato? nessuno quelli del primo operando basi di dati 84 42

43 Sergio Luigi Luigi Franco Franco Luisa Luisa Anna Anna Maria Maria Figlio Franco Olga Filippo Andrea Aldo Maria Luigi Olga Filippo Andrea Aldo Padre Sergio Luigi Luigi Franco Franco Luisa Luisa Anna Anna Maria Maria Figlio Franco Olga Filippo Andrea Aldo Maria Luigi Olga Filippo Andrea Aldo basi di dati 85 Notazione posizionale, 2 SELECT padre, figlio FROM paternita UNION SELECT figlio, madre FROM maternita SELECT padre, figlio FROM paternita UNION SELECT madre, figlio FROM maternita basi di dati 86 43

44 Notazione posizionale, 3 Anche con le ridenominazioni non cambia niente: SELECT padre as genitore, figlio FROM paternita UNION SELECT figlio, madre as genitore FROM maternita Corretta: SELECT padre as genitore, figlio FROM paternita UNION SELECT madre as genitore, figlio FROM maternita basi di dati 87 Differenza SELECT Nome FROM Impiegato EXCEPT SELECT Cognome as Nome FROM Impiegato vedremo che si può esprimere con SELECT nidificate basi di dati 88 44

45 Intersezione SELECT Nome FROM Impiegato INTERSECT SELECT Cognome as Nome FROM Impiegato equivale a SELECT I.Nome FROM Impiegato I, Impiegato J WHERE I.Nome = J.Cognome basi di dati 89 Interrogazioni nidificate le condizioni in SQL permettono anche il confronto fra un attributo e il risultato di una sottoquery Syntax: Scalare Operatore (ANY ALL) SelectQuery ANY: il predicato e vero se almeno uno dei valori restituiti da Query soddisfano la condizione ALL: il predicato e vero se tutti i valori restituiti dalla Query soddisfano la condizione quantificatore esistenziale EXISTS SelectQuery Il predicato e vero se la SelectQuery restituisce almeno una tupla basi di dati 90 45

46 Esempio di SELECT nidificate nome e reddito del padre di Franco SELECT Nome, Reddito FROM Persone, Paternita WHERE Nome = Padre AND Figlio = 'Franco' SELECT Nome, Reddito FROM Persone WHERE Nome = ( SELECT Padre FROM Paternita WHERE Figlio = 'Franco') La query nella clausola WHERE e la query nidificata basi di dati 91 Interrogazioni nidificate, commenti La forma nidificata è meno dichiarativa, ma talvolta più leggibile (richiede meno variabili) La forma piana e quella nidificata possono essere combinate Le sottointerrogazioni non possono contenere operatori insiemistici ( l unione si fa solo al livello esterno ); la limitazione non è significativa basi di dati 92 46

47 Nome e reddito dei padri di persone che guadagnano più di 20 milioni SELECT distinct P.Nome, P.Reddito FROM Persone P, Paternita, Persone F WHERE P.Nome = Padre AND Figlio = F.Nome AND F.Reddito > 20 SELECT Nome, Reddito FROM Persone WHERE Nome in (SELECT Padre FROM Paternita WHERE Figlio = any (SELECT Nome FROM Persone WHERE Reddito > 20)) basi di dati 93 Nome e reddito dei padri di persone che guadagnano più di 20 milioni SELECT distinct P.Nome, P.Reddito FROM Persone P, Paternita, Persone F WHERE P.Nome = Padre AND Figlio = F.Nome AND F.Reddito > 20 SELECT Nome, Reddito FROM Persone WHERE Nome in (SELECT Padre FROM Paternita, Persone WHERE Figlio = Nome AND Reddito > 20) basi di dati 94 47

48 Negazione con le query nidificate Trovare quei dipartimenti dove non c e nessuno che si chiama Brown : Oppure: basi di dati 95 Operatori IN e NOT IN IN e sinonimo di: =ANY NOT IN e sinonimo di: <>ALL basi di dati 96 48

49 MAX e MIN con le query nidificate Esempio: Il dipartimento(i) dove lavora colui con lo stipendio piu alto di tutta l azienda: Oppure: basi di dati 97 Interrogazioni nidificate, commenti, 2 La prima versione di SQL prevedeva solo la forma nidificata (o strutturata), con una sola relazione in ogni clausola FROM. Il che è insoddisfacente: la dichiaratività è limitata non si possono includere nella target list attributi di relazioni nei blocchi interni basi di dati 98 49

50 Nome e reddito dei padri di persone che guadagnano più di 20 milioni, con indicazione del reddito del figlio SELECT distinct P.Nome, P.Reddito, F.Reddito FROM Persone P, Paternita, Persone F WHERE P.Nome = Padre AND Figlio = F.Nome AND F.Reddito > 20 SELECT Nome, Reddito,???? FROM Persone WHERE Nome in (SELECT Padre FROM Paternita WHERE Figlio = any (SELECT Nome FROM Persone WHERE Reddito > 20)) basi di dati 99 Interrogazioni nidificate, commenti, 3 regole di visibilità: non è possibile fare riferimenti a variabili definite in blocchi più interni se un nome di variabile è omesso, si assume riferimento alla variabile più vicina in un blocco si può fare riferimento a variabili definite in blocchi più esterni basi di dati

51 Quantificazione esistenziale Ulteriore tipo di condizione EXISTS ( Sottoespressione ) Le persone che hanno almeno un figlio SELECT * FROM Persone WHERE EXISTS ( SELECT * FROM Paternita WHERE Padre = Nome) OR EXISTS ( SELECT * FROM Maternita WHERE Madre = Nome) basi di dati 101 Quantificazione esistenziale, 2 I padri i cui figli guadagnano tutti più di venti milioni SELECT distinct Padre FROM Paternita Z WHERE NOT EXISTS ( SELECT * FROM Paternita W, Persone WHERE W.Padre = Z.Padre AND W.Figlio = Nome AND Reddito <= 20) basi di dati

52 Semantica delle espressioni correlate La query piu interna puo usare variabili della query esterna L interrogazione interna viene eseguita una volta per ciascuna ennupla dell interrogazione esterna Esempio, trovare tutti gli studenti che hanno un omonimo: SELECT * FROM Student S WHERE EXISTS (SELECT * FROM Student S2 WHERE S2.Nome = S.Nome AND S2.Cognome = S.Cognome AND S2.Matricola <> S.Matricola) basi di dati 103 Semantica delle espressioni correlate, 2 Esempio, trovare tutti gli studenti che NON hanno un omonimo: SELECT * FROM Student S WHERE NOT EXISTS (SELECT * FROM Student S2 WHERE S2.Nome = S.Nome AND S2.Cognome = S.Cognome AND S2.Matricola <> S.Matricola) basi di dati

53 Confronto su piu attributi Il confronto con il risultato di una query nidificata puo essere basato su piu attributi Stessa query di prima, trovare tutti gli studenti che hanno un omonimo: SELECT * FROM Student S WHERE (Nome, Cognome) IN (SELECT Nome, Cognome FROM Student S2 WHERE S2.Matricola <> S.Matricola) basi di dati 105 Visibilità scorretta: SELECT * FROM Impiegato WHERE Dipart in (SELECT Nome FROM Dipartimento D1 WHERE Nome = 'Produzione') OR Dipart in (SELECT Nome FROM Dipartimento D2 WHERE D2.Citta = D1.Citta) D1 non e visibile nella seconda query nidificata in quanto le due sottoquery sono allo stesso livello basi di dati

54 Commenti finali sulle query nidificate Query nidificate possono essere meno dichiarative in un certo senso ma spesso sono piu facilmente interpretabili Suddivisibili in blocchi piu semplici da interpretare L utilizzo di variabili deve rispettare le regole di visibilita Cioe, una variabile puo essere usata solo all interno dello stesso blocco e in un blocco piu interno Comunque, query nidificate complesse possono essere di difficile comprensione Soprattutto quando si usano molte variabili comuni tra blocchi diversi basi di dati

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: storia SQL SQL: concetti base originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene sia il DDL sia il DML ne esistono varie versioni vediamo gli aspetti essenziali,

Dettagli

Basi di Dati. Programmazione e gestione di sistemi telematici

Basi di Dati. Programmazione e gestione di sistemi telematici Basi di Dati. Programmazione e gestione di sistemi telematici Coordinatore: Prof. Paolo Nesi Docenti: Prof. Paolo Nesi Dr.sa Michela Paolucci Dr. Emanuele Bellini SQL SQL = Structured Query Language Linguaggio

Dettagli

Interrogazioni nidificate, commenti

Interrogazioni nidificate, commenti Interrogazioni nidificate, commenti La forma nidificata è meno dichiarativa, ma talvolta più leggibile (richiede meno variabili) La forma piana e quella nidificata possono essere combinate Le sottointerrogazioni

Dettagli

Basi di dati. SQL: concetti base

Basi di dati. SQL: concetti base Basi di dati SQL: concetti base SQL originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene sia il DDL sia il DML ne esistono varie versioni vediamo

Dettagli

SQL. Definizione dei da6 in SQL. SQL: "storia" CREATE TABLE: esempio. CREATE TABLE: esempio

SQL. Definizione dei da6 in SQL. SQL: storia CREATE TABLE: esempio. CREATE TABLE: esempio SQL Atzeni, Ceri, Paraboschi, Torlone Basi di da6 Originariamente Structured Query Language, ora "nome proprio" Linguaggio con varie funzionalità: DDL Data Defini6on Language (insieme di comandi per la

Dettagli

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

SQL Laboratorio di Basi di Dati a.a. 2002/2003 1 SQL Laboratorio di Basi di Dati a.a. 2002/2003 dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì ore 10-12 2 Cos'è SQL? Linguaggio di riferimento per le basi di dati relazionali

Dettagli

Definizione di domini

Definizione di domini Definizione di domini Come nei linguaggi ad alto livello (es. C) è possibile definire nuovi domini (tipi di dati) a partire da quelli predefiniti, anche se il costruttore è più limitato. create domain

Dettagli

Basi di dati. SQL :Structured Query Language: SELECT (II) Prof.ssa Rosalba Giugno. SQL (Slide tratte in parte da. McGraw-Hill.

Basi di dati. SQL :Structured Query Language: SELECT (II) Prof.ssa Rosalba Giugno. SQL (Slide tratte in parte da. McGraw-Hill. Basi di dati SQL :Structured Query Language: SELECT (II) Prof.ssa Rosalba Giugno SQL (Slide tratte in parte da da Atzeni,, Ceri, Paraboschi, Torlonee,, Basi di dati McGraw-Hill Hill,, 2002) Sintassi, riassumiamo

Dettagli

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

Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a. 2011-2012 Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a. 2011-2012 2012 Docente: Gigliola Vaglini Docente laboratorio: Alessandro Lori 1 Lezione 3 Structured Query Language

Dettagli

SQL: "storia" 31/05/2006 2

SQL: storia 31/05/2006 2 SQL originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene sia il DDL sia il DML ne esistono varie versioni vediamo gli aspetti essenziali, non i dettagli

Dettagli

Basi di Dati. 3. Il Linguaggio SQL. Basi di Dati - A.A. 2003/2004 - Diego Calvanese 3. SQL - 1. Diego Calvanese SQL SQL-92

Basi di Dati. 3. Il Linguaggio SQL. Basi di Dati - A.A. 2003/2004 - Diego Calvanese 3. SQL - 1. Diego Calvanese SQL SQL-92 Università di Roma La Sapienza Laurea in Ingegneria Informatica Basi di Dati Anno Accademico 2003/2004 Canale M-Z Diego Calvanese Dipartimento di Informatica e Sistemistica Antonio Ruberti Università di

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. 2014/2015 http://www.di.uniba.it/~lisi/courses/basi-dati/bd2014-15.htm dott.ssa Francesca A. Lisi francesca.lisi@uniba.it

Dettagli

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

SQL. SQL: una visione panoramica. SQL: storia Definizione dei dati SQL SQL: una visione panoramica I lucidi presentati sono liberamente ispirati al contenuto del Capitolo 4 del libro Atzeni, Ceri, Paraboschi, Torlone Basi di dati - McGraw-Hill, 1999 Structured Query Language

Dettagli

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

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a Join in SQL (primo modo) Informatica Lezione 7 Laurea magistrale in Psicologia Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 09- Per formulare interrogazioni che coinvolgono

Dettagli

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. (Structured Query Language) : Il linguaggio è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. prima versione IBM alla fine degli anni '70 per un prototipo di ricerca (System

Dettagli

Join esplicito. SELECT con join esplicito, sintassi. Ulteriore estensione: join naturale (meno diffuso) Outer join. Join esterno: "outer join"

Join esplicito. SELECT con join esplicito, sintassi. Ulteriore estensione: join naturale (meno diffuso) Outer join. Join esterno: outer join Join esplicito Padre e madre di ogni persona select paternita.figlio,padre, madre, paternita where paternita.figlio = maternita.figlio SELECT con join esplicito, sintassi SELECT FROM Tabella { JOIN Tabella

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 Data Definition Language (DDL) Data Definition Language: insieme di istruzioni utilizzate per modificare la struttura della base di dati Ne fanno parte le istruzioni di inserimento,

Dettagli

Corso di Laboratorio di Basi di Dati

Corso di Laboratorio di Basi di Dati Corso di Laboratorio di Basi di Dati F1I072 - INF/01 a.a 2009/2010 Pierluigi Pierini Technolabs S.p.a. Pierluigi.Pierini@technolabs.it Università degli Studi di L Aquila Dipartimento di Informatica Technolabs

Dettagli

Il linguaggio SQL: query innestate

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

Dettagli

Corso di Informatica (Basi di Dati)

Corso di Informatica (Basi di Dati) Corso di Informatica (Basi di Dati) Lezione 6 (15 gennaio 2009) Linguaggio SQL: Data Definition Language (DDL) Da: Atzeni, Ceri, Paraboschi, Torlone - Basi di Dati Lucidi del Corso di Basi di Dati 1, Prof.

Dettagli

Corso sul linguaggio SQL

Corso sul linguaggio SQL Corso sul linguaggio SQL Modulo L2B (SQL) 2.2 Comandi sulle tabelle 1 Prerequisiti Introduzione ai DB Tabelle, relazioni e attributi Chiave primaria Chiave esterna Vincoli di integrità 2 1 Introduzione

Dettagli

1.3 Il linguaggio SQL

1.3 Il linguaggio SQL Fondamenti di Informatica Sistemi di Elaborazione delle Informazioni Informatica Applicata 1.3 Il linguaggio SQL Anno Accademico 2012-2013 DIPARTIMENTO DI SCIENZE DOCUMENTARIE LINGUISTICO FILOLOGICHE E

Dettagli

SQL (STRUCTURED QUERY LANGUAGE)

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

Dettagli

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari: SQL SQL (pronunciato anche come l inglese sequel: acronimo di Structured Query Language (linguaggio di interrogazione strutturato Linguaggio completo che presenta anche proprietà di: DDL (Data Definition

Dettagli

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

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

Dettagli

SQL IL LINGUAGGIO DI INTERROGAZIONE

SQL IL LINGUAGGIO DI INTERROGAZIONE 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 è SQL:1999

Dettagli

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a. 2010-2011

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a. 2010-2011 Corso di Laurea in Informatica Basi di Dati a.a. 2010-2011 Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio PROGETTAZIONE FISICA SQL-DDL OBIETTIVO: Rappresentare i dati della realtà di interesse

Dettagli

SQL Sintassi Dei Comandi

SQL Sintassi Dei Comandi SQL Sintassi Dei Comandi Di Roberto Aloi http://prof3ta.homeunix.org prof3ta@email.it Questo fascicolo è stato realizzato esclusivamente a fini divulgativi e per la libera consultazione. E' concessa la

Dettagli

Basi di Dati: Corso di laboratorio

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

Dettagli

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

Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL Informatica Basi di dati parte 4 SQL Lezione 13 Laurea magistrale in Scienze della mente Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 2012 2013 1 Interrogazioni in

Dettagli

Operazioni sui database

Operazioni sui database Operazioni sui database Le operazioni nel modello relazionale sono essenzialmente di due tipi: Operazioni di modifica della base di dati (update) Interrogazioni della base di dati per il recupero delle

Dettagli

Istruzioni DML di SQL

Istruzioni DML di SQL Istruzioni DML di SQL Pag. 99 par.4 1 Sintassi: Costrutto: INSERT INTO (Inserimento di dati in tabelle) INSERT INTO [(, ,, )] VALUES (, ,

Dettagli

DBMS (Data Base Management System)

DBMS (Data Base Management System) Cos'è un Database I database o banche dati o base dati sono collezioni di dati, tra loro correlati, utilizzati per rappresentare una porzione del mondo reale. Sono strutturati in modo tale da consentire

Dettagli

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

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26 Uso delle variabili di alias SQL slide aggiuntive Laurea magistrale in Scienze della mente Laurea magistrale in Psicologia dello sviluppo e dell'educazione educazione Non solo per disambiguare la notazione

Dettagli

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R: Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R: Si consiglia di creare il data base, inserire i dati nelle tabelle, provare

Dettagli

Linguaggi per basi di dati

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

Dettagli

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

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1996-2002 : SQL SQL originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene sia il DDL sia

Dettagli

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

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia: Corso di Basi di Dati Spaziali Linguaggi: SQL Angelo Montanari Donatella Gubiani Storia Storia: 1974: prima proposta SEQUEL 1981: prime implementazioni 1983: standard di fatto 1986, 1989, 1992 e 1999:

Dettagli

DDL DML. Tipi di linguaggi per basi di dati. Si distinguono due categorie:

DDL DML. Tipi di linguaggi per basi di dati. Si distinguono due categorie: Tipi di linguaggi per basi di dati Si distinguono due categorie: DDL DML Linguaggi di definizione dei dati o data definition languages: utilizzati per definire gli schemi logici, esterni e fisici e le

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

Basi di dati Maurizio Lenzerini Dipartimento di Informatica e Sistemistica Antonio Ruberti Università di Roma La Sapienza

Basi di dati Maurizio Lenzerini Dipartimento di Informatica e Sistemistica Antonio Ruberti Università di Roma La Sapienza Basi di dati Maurizio Lenzerini Dipartimento di Informatica e Sistemistica Antonio Ruberti Università di Roma La Sapienza Anno Accademico 2011/2012 http://www.dis.uniroma1.it/ lenzerini/?q=node/44 3. Il

Dettagli

Corso sul linguaggio SQL

Corso sul linguaggio SQL Corso sul linguaggio SQL Modulo L2B (SQL) 2.1 Comandi sui database 1 Prerequisiti Introduzione ai DB Linguaggi per database Tipi fondamentali di dati 2 1 Introduzione In questa Unità introduciamo il linguaggio

Dettagli

Il linguaggio SQL: le basi

Il linguaggio SQL: le basi Il linguaggio SQL: le basi Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLa-basi.pdf Sistemi Informativi L-A SQL: caratteristiche generali

Dettagli

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

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7 ESEMPI DI QUERY SQL Dati di esempio... 2 Query su una sola tabella... 2 Esempio 1 (Ordinamento)... 2 Esempio 2 (Scelta di alcune colonne)... 3 Esempio 3 (Condizioni sui dati)... 3 Esempio 4 (Condizioni

Dettagli

SQL-DDL. Basi di Dati. Prof. Alfredo Cuzzocrea Università degli Studi di Trieste

SQL-DDL. Basi di Dati. Prof. Alfredo Cuzzocrea Università degli Studi di Trieste Basi di Dati Prof. Alfredo Cuzzocrea Università degli Studi di Trieste SQL-DDL Credits to: Prof. P. Atzeni UniRoma3 Prof. S. Ceri PoliMI Prof. S. Paraboschi UniBG Prof. R. Torlone UniRoma3 SQL originariamente

Dettagli

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

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi Query (Interrogazioni) Ultima modifica: 5/4/2012 SQL Materiale aggiuntivo per il corso di laurea in Lingue e Culture per il Turismo classe L-15! È necessario un modo per interrogare le basi di dati, cioè

Dettagli

MAX, SUM, AVG, COUNT)

MAX, SUM, AVG, COUNT) INTRODUZIONE A SQL Definizione di tabelle e domini Alcuni vincoli di integrità Struttura base SELECT FROM WHERE Funzioni di aggregazione (MIN, MAX, SUM, AVG, COUNT) Query da più tabelle (FROM R1, Rk) Join

Dettagli

Basi di Dati Relazionali

Basi di Dati Relazionali Corso di Laurea in Informatica Basi di Dati Relazionali a.a. 2009-2010 Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio Coadiutore: Dott.ssa D. Nicotera PROGETTAZIONE FISICA SQL-DDL OBIETTIVO: Rappresentare

Dettagli

Operatori aggregati: COUNT

Operatori aggregati: COUNT Operatori aggregati: COUNT Il numero di figli di Franco select count(*) as NumFigliDiFranco from Paternita where Padre = 'Franco' l operatore aggregato (count) viene applicato al risultato dell interrogazione:

Dettagli

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

Documentazione SQL. Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema} Documentazione SQL Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema} Definizione tabella Definizione dominio Specifica di valori

Dettagli

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati Basi di dati Il Modello Relazionale dei Dati Proposto da E. Codd nel 1970 per favorire l indipendenza dei dati Disponibile come modello logico in DBMS reali nel 1981 (non è facile realizzare l indipendenza

Dettagli

OR true null false true true true true null true null null false true null false NOT

OR true null false true true true true null true null null false true null false NOT Il linguaggio SQL è un linguaggio standard per la definizione, manipolazione e interrogazione delle basi di dati relazionali ed ha le seguenti caratteristiche: è dichiarativo; opera su multiset di tuple,

Dettagli

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

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione SQL DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE SQL è più di un semplice linguaggio di interrogazione! Linguaggio di definizione dati (Data-definition language, DDL):! Crea/distrugge/modifica relazioni

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

Operatori aggregati: COUNT

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

Dettagli

4 SQL : Interrogazioni nidificate

4 SQL : Interrogazioni nidificate Corso di Laurea in Ingegneria Gestionale SAPIENZA Università di Roma Esercitazioni del corso di Basi di Dati Prof.ssa Catarci e Prof.ssa Scannapieco Anno Accademico 2010/2011 Andrea Marrella Ultimo aggiornamento

Dettagli

Linguaggio SQL. Structured Query Language

Linguaggio SQL. Structured Query Language Linguaggio SQL Structured Query Language Creato negli anni 70 presso IBM Inizialmente solo linguaggio di interrogazione Ora linguaggio di riferimento per DB relazionali Standardizzato grazie al lavoro

Dettagli

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

Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004 DB2 Data Management Software Il linguaggio SQL Raggruppamenti Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004 LEGGERE LE SEGUENTI ATTENZIONI Le informazioni contenute in questa

Dettagli

SQL Esempi. 24/10-7/11/2016 Basi di dati - SQL 1

SQL Esempi. 24/10-7/11/2016 Basi di dati - SQL 1 SQL Esempi 24/10-7/11/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

Dettagli

SQL Esempi /10/2017 Basi di dati - SQL 1

SQL Esempi /10/2017 Basi di dati - SQL 1 SQL Esempi 23-26/10/2017 Basi di dati - SQL 1 Esercitazioni pratiche Per SQL è possibile (e fondamentale) svolgere esercitazioni pratiche Verranno anche richieste copme condizione per svolgere le prove

Dettagli

SQL - Funzioni di gruppo

SQL - Funzioni di gruppo una funzione di gruppo permette di estrarre informazioni da gruppi di tuple di una relazione le funzioni di gruppo si basano su due concetti: partizionamento delle tuple di una relazione in base al valore

Dettagli

CAPITOLO 4 ESERCIZI SU SQL

CAPITOLO 4 ESERCIZI SU SQL CAPITOLO 4 ESERCIZI SU SQL (le soluzioni sono riportate da pag. 5 in poi (Nota: gli esercizi non sono sempre in ordine di difficoltà Esercizio 1 Si prendano tutti gli schemi relazionali considerati negli

Dettagli

Gestione delle tabelle

Gestione delle tabelle Linguaggio SQL: fondamenti Creazione di una tabella Modifica della struttura di una tabella Cancellazione di una tabella Dizionario dei dati Integrità dei dati 2 Creazione di una tabella (1/3) Si utilizza

Dettagli

Laboratorio di Basi di Dati e Web

Laboratorio di Basi di Dati e Web Laboratorio di Basi di Dati e Web Docente: Alberto Belussi Lezione 1 SQL Structured Query Language SQL è stato definito nel 1973 ed è oggi il linguaggio più diffuso per i DBMS relazionali Il linguaggio

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

PROGRAMMA DI CLASSE 5AI

PROGRAMMA DI CLASSE 5AI Istituto di Istruzione Superiore Euganeo Istituto tecnico del settore tecnologico Istituto professionale del settore servizi socio-sanitari Istituto professionale del settore industria e artigianato PROGRAMMA

Dettagli

Il linguaggio SQL: le basi. Versione elettronica: SQLa-basi.pdf

Il linguaggio SQL: le basi. Versione elettronica: SQLa-basi.pdf Il linguaggio SQL: le basi Versione elettronica: SQLa-basi.pdf SQL: caratteristiche generali SQL (Structured Query Language) è il linguaggio standard de facto per DBMS relazionali, che riunisce in sé funzionalità

Dettagli

Algebra Relazionale e Calcolo Relazionale. L. Vigliano

Algebra Relazionale e Calcolo Relazionale. L. Vigliano Algebra Relazionale e Calcolo Relazionale Operazioni associate al modello relazionale Notazione algebrica Algebra relazionale Linguaggio procedurale interrogazioni espresse applicando operatori alle relazioni

Dettagli

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

Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf Il linguaggio SQL: viste e tabelle derivate Versione elettronica: SQLd-viste.pdf DB di riferimento per gli esempi Imp Sedi CodImp Nome Sede Ruolo Stipendio Sede Responsabile Citta E001 Rossi S01 Analista

Dettagli

SQL (STRUCTURED QUERY LANGUAGE)

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

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

SQL. Alcune note sulla definizione dei dati

SQL. Alcune note sulla definizione dei dati SQL Alcune note sulla definizione dei dati Domini Domini elementari (predefiniti) Domini definiti dall'utente (riutilizzabili, possono servire per specificare vincoli di dominio propri di una certa applicazione)

Dettagli

SQL: Concetti Base -Prima Parte-

SQL: Concetti Base -Prima Parte- SQL: Concetti Base -Prima Parte- Atzeni, Ceri, Paraboschi, Torlone Basi Di Dati: Modelli e Linguaggi di Interrogazione, McGraw-Hill Italia Capitolo 4 SQL Structured Query Language Contiene: DDL (Data Definition

Dettagli

Vincoli di integrità

Vincoli di integrità Vincoli di integrità Non tutte le istanze di basi di dati sintatticamente corrette rappresentano informazioni plausibili per l applicazione di interesse Studenti Matricola Nome Nascita 276545 Rossi 23-04-72?

Dettagli

Structured Query Language parte 1

Structured Query Language parte 1 Consorzio per la formazione e la ricerca in Ingegneria dell'informazione Structured Query Language parte 1 Come interrogare una base di dati relazionale ed avere la risposta esatta Docente: Gennaro Pepe

Dettagli

Il linguaggio SQL: viste e tabelle derivate

Il linguaggio SQL: viste e tabelle derivate Il linguaggio SQL: viste e tabelle derivate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLd-viste.pdf Sistemi Informativi L-A DB di riferimento

Dettagli

Corso Sistemi Informativi Avanzati. Programma 30 set 2015. Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

Corso Sistemi Informativi Avanzati. Programma 30 set 2015. Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende. Programma 30 set 205 Installazione Macchina Virtuale Introduzione alla BI nelle Aziende Introduzione SQL Macchina Virtuale È un emulazione di un computer su un altro computer Stesso punto di partenza per

Dettagli

Lezione V. Aula Multimediale - sabato 29/03/2008

Lezione V. Aula Multimediale - sabato 29/03/2008 Lezione V Aula Multimediale - sabato 29/03/2008 LAB utilizzo di MS Access Definire gli archivi utilizzando le regole di derivazione e descrivere le caratteristiche di ciascun archivio ASSOCIAZIONE (1:1)

Dettagli

----------------------------------------------------------------------------

---------------------------------------------------------------------------- APPUNTI DI SQL Gli appunti qui forniti vogliono essere un riferimento scritto di alcuni degli argomenti trattati a lezione per gli studenti a cui vengono messi a disposizione. Non viene fornita alcuna

Dettagli

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici Il linguaggio SQL Il linguaggio SQL il linguaggio SQL è un linguaggio per la definizione e la manipolazione dei dati, sviluppato originariamente presso il laboratorio IBM a San Jose (California) è diventato

Dettagli

SQL - Tipi di dato Il linguaggio SQL

SQL - Tipi di dato Il linguaggio SQL SQL - Tipi di dato Il linguaggio SQL I tipi di dato in SQL:1999 si suddividono in tipi predefiniti tipi strutturati tipi user-defined ci concentreremo sui tipi predefiniti i tipi predefiniti sono suddivisi

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 : (1) Interrogazioni semplici INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione

Dettagli

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di Dati Corso di Laura in Informatica Umanistica Basi di Dati Corso di Laura in Informatica Umanistica Appello del 10/09/2010 Parte 1: Algebra Relazionale e linguaggio SQL Docente: Giuseppe Amato Sia dato il seguente schema di base di dati per la gestione

Dettagli

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

SQL come linguaggio di interrogazione. Basi di dati. Interrogazioni SQL. Interpretazione algebrica delle query SQL SQL come linguaggio di interrogazione Basi di dati Linguaggi di Interrogazione: SQL Prof.Angela Bonifati Le interrogazioni SQL sono dichiarative l utente specifica quale informazione è di suo interesse,

Dettagli

Basi di dati SQL. Standardizzazione di SQL. Linguaggi di Interrogazione: SQL. Prof.Angela Bonifati

Basi di dati SQL. Standardizzazione di SQL. Linguaggi di Interrogazione: SQL. Prof.Angela Bonifati Basi di dati Linguaggi di Interrogazione: SQL Prof.Angela Bonifati 1 SQL Il nome stava per Structured Query Language Più che un semplice linguaggio di query: si compone di una parte DDL e di una DML DDL:

Dettagli

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7 Il trattamento dei dati database: il linguaggio SQL seconda parte Prof. Valle D.ssa Folgieri Lez9 15.11.06 Trattamento dati. Database: il

Dettagli

Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle

Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle Linguaggio SQL: fondamenti Creazione di una tabella Modifica della struttura di una tabella Cancellazione di una tabella Dizionario dei dati Integrità dei dati 2 2007 Politecnico di Torino 1 Creazione

Dettagli

Basi di dati. L Algebra Relazionale. K. Donno - L Algebra Relazionale

Basi di dati. L Algebra Relazionale. K. Donno - L Algebra Relazionale Basi di dati L Algebra Relazionale Introduzione all Algebra Relazionale Una volta definito lo schema logico di un database, partendo da un Diagramma E-R, e dopo aver inserito le tabelle nel database, eventualmente

Dettagli

SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12

SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12 SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I Anno accademico 2011/12 DEFINIZIONE Il concetto di vista 2 È una relazione derivata. Si specifica l espressione che genera il suo contenuto.

Dettagli

BASE DI DATI: sicurezza. Informatica febbraio 2015 5ASA

BASE DI DATI: sicurezza. Informatica febbraio 2015 5ASA BASE DI DATI: sicurezza Informatica febbraio 2015 5ASA Argomenti Privatezza o riservatezza Vincoli di integrità logica della base di dati intrarelazionali interrelazionali Principio generale sulla sicurezza

Dettagli

Structured Query Language. Informatica Generale - SQL Versione 1.0, aa 2005-2006 p.1/172

Structured Query Language. Informatica Generale - SQL Versione 1.0, aa 2005-2006 p.1/172 Structured Query Language Informatica Generale - SQL Versione 1.0, aa 2005-2006 p.1/172 Linguaggio SQL (1) Il linguaggio SQL, acronimo di Structured Query Language è un linguaggio per la definizione e

Dettagli

Operazioni su insiemi: unione, intersezione e differenza

Operazioni su insiemi: unione, intersezione e differenza Operazioni su insiemi: unione, intersezione e differenza Unione La select da sola non permette di fare unioni; serve un costrutto esplicito: select union [all] select... i duplicati vengono eliminati (a

Dettagli

Introduzione all Algebra Relazionale

Introduzione all Algebra Relazionale Basi di dati L Algebra Relazionale Introduzione all Algebra Relazionale Una volta definito lo schema logico di un database, partendo da un Diagramma E-R, e dopo aver inserito le tabelle nel database, eventualmente

Dettagli

Volumi di riferimento

Volumi di riferimento Simulazione seconda prova Esame di Stato Gestione di un centro agroalimentare all ingrosso Parte prima) Un nuovo centro agroalimentare all'ingrosso intende realizzare una base di dati per l'attività di

Dettagli

SQL. Linguaggio di interrogazione per basi di dati relazionali. Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL:

SQL. Linguaggio di interrogazione per basi di dati relazionali. Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL: SQL Linguaggio di interrogazione per basi di dati relazionali Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL: Creazione delle tabelle Interrogazione della base di dati

Dettagli

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi Vogliamo creare una struttura per permettere di memorizzari i voti della classe in tutte le materie Per fare questo untilizziamo tre tabelle Alunni,materie,voti Alunni Materie Voti Creo un record per ogni

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. 2013-2014 Docente: Gigliola Vaglini Docente laboratorio: Francesco Pistolesi Lezione 3 Structured Query Language

Dettagli

Domini Numerici Esatti (1) I domini numerici esatti permettono di definire attributi che contenegono valori esatti interi o con parte frazionaria.

Domini Numerici Esatti (1) I domini numerici esatti permettono di definire attributi che contenegono valori esatti interi o con parte frazionaria. Linguaggio SQL (1) Il linguaggio SQL, acronimo di Structured Query Language è un linguaggio per la definizione e la manipolazione dei dati, sviluppato originariamente presso il laboratorio IBM a San Jose

Dettagli

Il linguaggio SQL: DDL di base

Il linguaggio SQL: DDL di base Il linguaggio SQL: DDL di base Sistemi Informativi T Versione elettronica: 04.1.SQL.DDLbase.pdf SQL: caratteristiche generali SQL (Structured Query Language) èil linguaggio standard de facto per DBMS relazionali,

Dettagli