Parte IV Il linguaggio SQL

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Parte IV Il linguaggio SQL"

Transcript

1 Parte IV Il linguaggio SQL Basi di dati - prof. Silvio Salza - a.a IV - 1

2 SQL Acronimo di Structured Query Language Copre tutti gli aspetti: sia il DDL sia il DML Evoluzione dell SQL: Prima proposta: SEQUEL (IBM Research, 1974) Prime implementazioni SQL/DS (IBM) e Oracle (1981); Dal 1983 circa è uno standard de facto Standardizzazione 1986, poi 1989, poi 1992 (ISO 90 75) Successive revisioni fino a ISO/IEC 9075:2016 Lo standard del 1992 è ragionevolmente implementato in tutti i DBMS commerciali Basi di dati - prof. Silvio Salza - a.a IV - 2

3 SQL 92 È un linguaggio ricco e complesso Ancora nessun sistema mette a disposizione tutte le funzionalità del linguaggio 3 livelli di aderenza allo standard: Entry SQL: abbastanza simile a SQL-89 Intermediate SQL: caratteristiche più importanti per le esigenze del mercato; supportato dai DBMS commerciali Full SQL: funzioni avanzate, in via di inclusione nei sistemi Molti sistemi offrono anche funzionalità non standard Basi di dati - prof. Silvio Salza - a.a IV - 3

4 Definizione dei dati create schema: definisce uno schema di DB create table : definisce uno schema di relazione: Specifica attributi e vincoli Crea un istanza vuota dello schema Sintassi: create table NomeTabella ( NomeAttributo Dominio [ Vincoli ]... NomeAttributo Dominio [ Vincoli ] [ AltriVincoli ] ) Basi di dati - prof. Silvio Salza - a.a IV - 4

5 Create table: esempio create table Impiegato ( Matricola character(6) primary key, Nome character(20) not null, Cognome character(20) not null, Dipart character(15), Stipendio numeric(9) default 0, Citta character(15), foreign key(dipart) references Dipartimento(NomeDip), unique (Cognome,Nome) ) Basi di dati - prof. Silvio Salza - a.a IV - 5

6 SQL e modello relazionale Una tabella in SQL è definita come un multiinsieme di n-uple Se una tabella non ha una primary key o un insieme di attributi definiti come unique, allora potranno comparire due n-uple uguali nella tabella Una tabella SQL non è in generale una relazione. Se invece una tabella ha una primary key o un insieme di attributi definiti come unique, allora non potranno mai comparire nella tabella due ennuple uguali Per questo, è consigliabile (anche se non obbligatorio) definire almeno una primary key per ogni tabella. Basi di dati - prof. Silvio Salza - a.a IV - 6

7 Domini Domini elementari (predefiniti) Carattere: singoli caratteri o stringhe, anche di lunghezza variabile Bit: singoli booleani o stringhe Numerici: esatti e approssimati Data, ora, intervalli di tempo Altri domini ntrodotti nelle versioni successive Boolean BLOB, CLOB (binary/character large object): per grandi immagini e testi Domini definiti dall'utente (semplici, ma riutilizzabili) Basi di dati - prof. Silvio Salza - a.a IV - 7

8 Domini definiti dall utente create domain: definisce un dominio (semplice) con vincoli e valori di default, utilizzabile in definizioni di relazioni. Sintassi create domain NomeDominio as Tipo [ Default ] [ Vincoli ] Esempio: create domain Voto as smallint default null check ( value >=18 and value <= 30 ) Basi di dati - prof. Silvio Salza - a.a IV - 8

9 Vincoli intrarelazionali not null (su singoli attributi) unique: definisce attributi che identificano la tupla: singolo attributo: unique dopo la specifica del dominio Insieme di attributi: unique (Attributo,..., Attributo) primary key: definisce la chiave primaria (una sola, implica not null); sintassi come per unique check: definisce vincoli complessi (più avanti) Basi di dati - prof. Silvio Salza - a.a IV - 9

10 Vincoli intrarelazionali esempi create table Impiegato ( Matricola character(6) primary key, Nome character(20) not null, Cognome character(20) not null, Dipart character(15), Stipendio numeric(9) default 0, Citta character(15), foreign key(dipart) references Dipartimento(NomeDip), unique (Cognome,Nome) ) Basi di dati - prof. Silvio Salza - a.a IV - 10

11 Chiavi su più attributi create table Impiegato (... Nome character(20) not null, Cognome character(20) not null, unique (Cognome,Nome) ) è diverso da: create table Impiegato (... Nome character(20) not null unique, Cognome character(20) not null unique ) Basi di dati - prof. Silvio Salza - a.a IV - 11

12 Vincoli di integrità refrenziale references: per singoli attributi, dopo la specifica del dominio foreign key: riferimenti su più attributi: foreign key(attributo,...,attributo)references Gli attributi nella tabella di arrivo devono formare una chiave (primay key o unique). Se mancano, il riferimento si intende alla chiave primaria. Ogni combinazione (senza NULL) di valori per gli attributi nella tabella di partenza deve comparire nella tabella di arrivo. Possibile associare politiche di reazione alla violazione Basi di dati - prof. Silvio Salza - a.a IV - 12

13 Integrità referenziale: esempio Infrazioni Codice Data 1/2/95 Vigile 3987 Prov MI Numero 39548K /3/ TO E /4/ PR /2/ PR Auto Prov Numero MI TO PR 39548K E Cognome Rossi Rossi Neri Nome Mario Mario Luca Vincolo di integrità referenziale fra {Prov,Numero} in Infrazioni e la chiave di Auto Basi di dati - prof. Silvio Salza - a.a IV - 13

14 Integrità referenziale: esempio (2) Infrazioni Codice Data Vigile Prov Numero /2/ MI 39548K /3/ TO E /4/ PR /2/ PR Vigili Matricola 3987 Cognome Rossi Nome Luca 3295 Neri Piero 9345 Neri Mario 7543 Mori Gino Vincolo di integrità referenziale fra Vigile in Infrazioni e la relazione Vigili Basi di dati - prof. Silvio Salza - a.a IV - 14

15 Integrità referenziale: esempio (3) create table Infrazioni ( Codice character(6) not null primary key, Data date not null, Vigile integer not null references Vigili(Matricola), Provincia character(2), Numero character(6), foreign key(provincia, Numero) references Auto(Provincia, Numero) ) Basi di dati - prof. Silvio Salza - a.a IV - 15

16 Catalogo dei dati Ogni sistema relazionale mette a disposizione delle tabelle già definite che raccolgono tutti i dati relativi a: tabelle attributi domini... Ad esempio, la tabella Columns contiene i campi: Column_Name Table_name Ordinal_Position Column_Default Basi di dati - prof. Silvio Salza - a.a IV - 16

17 Interrogazioni in SQL Le interrogazione in SQL si formulano tramite l istruzione select, la quale: Definisce l interrogazione Restituisce il risultato in forma di tabella select Attributo Attributo from Tabella Tabella [where Condizione] Le tre sezioni dell istruzione vengono di solito chiamate Target list From clause Where clause Basi di dati - prof. Silvio Salza - a.a IV - 17

18 Database: la famiglia 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 - prof. Silvio Salza - a.a IV - 18

19 Query di selezione e proiezione Query 1: Nome e reddito delle persone con meno di 30 anni PROJ Nome, Reddito (SEL Età<30 (Persone)) select Nome, Reddito from Persone where Età < 30 Nome Andrea Aldo Filippo Reddito Basi di dati - prof. Silvio Salza - a.a IV - 19

20 Convenzioni sui nomi Per evitare ambiguità, ogni nome di attributo è composto da NomeRelazione.NomeAttributo Quando l ambiguità non sussiste, si può omettere la parte NomeRelazione. select Persone.Nome, Persone.Reddito from Persone where Persone.Età < 30 si può scrivere come: select Nome, Reddito from Persone where Età < 30 Basi di dati - prof. Silvio Salza - a.a IV - 20

21 Proiezione e duplicati Query 2: Cognome e filiale di tutti gli impiegati Impiegati matricola cognome filiale stipendio Neri Napoli 55 Neri Milano 64 Rossi Roma 44 Rossi Roma 64 PROJ Cognome, Filiale (Impiegati) N.B.: Se non specificato la proiezione conserva I duplicati Basi di dati - prof. Silvio Salza - a.a IV - 21

22 Eliminazione dei duplicati Query 2: Cognome e filiale di tutti gli impiegati select Cognome, Filiale from Impiegati select distinct Cognome,Filiale from Impiegati Cognome Filiale Cognome Filiale Neri Napoli Neri Napoli Neri Milano Neri Milano Rossi Roma Rossi Roma Rossi Roma Basi di dati - prof. Silvio Salza - a.a IV - 22

23 Ridenominazione degli attributi Tramite il costrutto as è possibile specificare i nomi degli attributi del risultato, altrimenti restano quelli di origine Esempio: select Nome as nomepersone, Reddito as salario from Persone where Età < 30 restituisce come risultato una relazione con due attributi, il primo di nome nomepersone ed il secondo di nome salario Basi di dati - prof. Silvio Salza - a.a IV - 23

24 Selezione senza proiezione Inserire un asterisco nella target list equivale a prendere tutti gli attributi Query 3: Nome, età e reddito delle persone con meno di 30 anni select * from Persone where Età < 30 SEL Eta<30 (Persone) Basi di dati - prof. Silvio Salza - a.a IV - 24

25 Proiezione senza selezione Query 4: Nome e reddito di tutte le persone PROJ Nome, Reddito (Persone) select Nome, Reddito from Persone È equivalente a: select Nome, Reddito from Persone where true Basi di dati - prof. Silvio Salza - a.a IV - 25

26 Espressioni È possibile avere espressioni sia nella target list che nelle condizioni delle where list select reddito/2 as redditosemestrale from persone where nome = 'Luigi' select * from persone where reddito > 25 and (eta < 30 or eta > 60) Basi di dati - prof. Silvio Salza - a.a IV - 26

27 Condizione like Permettere di considerare uguali stringhe simili Si indica come costante una stringa tra apici in cui Il carattere _ indica un qualsiasi carattere Il carattere % indica una qualsiasi stringa select * from Persone where Nome like 'A_d% Le persone che hanno un nome che inizia per 'A' e ha una 'd' come terza lettera Basi di dati - prof. Silvio Salza - a.a IV - 27

28 Gestione dei valori nulli Il riferimento ai valori nulli nelle condizioni può essere fatto tramite i predicati is null e is not null Query 5: Cognome e filiale di tutti gli impiegati di più di 40 anni SEL Eta > 40 OR Eta IS NULL (Impiegati) select Cognome, Filiale from Impiegati where Età > 40 or Età is null Basi di dati - prof. Silvio Salza - a.a IV - 28

29 Query di selezione, proiezione e join Istruzioni select con una sola relazione nella clausola from permettono di realizzare: Selezioni Proiezioni Ridenominazioni Join (e prodotti cartesiani) si realizzano indicando due o più relazioni nella clausola from Le condizioni nella clausola where permettono di esprimere le condizioni del join naturale e del theta join Basi di dati - prof. Silvio Salza - a.a IV - 29

30 SQL e algebra relazionale Date le relazioni R1(A1,A2) e R2(A3,A4), la query select R1.A1, R2.A4 from R1, R2 where R1.A2 = R2.A3 si può descrivere in termini di Prodotto cartesiano (from) Selezione (where) Proiezione (select) N.B.: questo non significa che il DBMS calcola davvero il prodotto cartesiano! Basi di dati - prof. Silvio Salza - a.a IV - 30

31 SQL e algebra relazionale (2) Date le relazioni R1(A1,A2) e R2(A3,A4), la query select R1.A1, R2.A4 from R1, R2 where R1.A2 = R2.A3 Corrisponde all espressione algebrica: PROJ A1,A4 (SEL A2=A3 (R1 JOIN R2)) Basi di dati - prof. Silvio Salza - a.a IV - 31

32 Ridenominazioni Possono essere necessarie ridenominazioni Nella target list (come nell algebra relazionale) Nel prodotto cartesiano: in particolare quando occorre riferirsi due volte alla stessa tabella select X.A1 as B1,... from R1 X, R2 Y, R1 Z where X.A2 = Y.A3 and... Notaziona alternativa select X.A1 as B1,... from R1 as X, R2 as Y, R1 as Z where X.A2 = Y.A3 and... Basi di dati - prof. Silvio Salza - a.a IV - 32

33 SQL e algebra relazionale: esempio R1(A1,A2) e R2(A3,A4) 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 PASSO 1: Z = REN C1,C2 A1,A2 (R1) PASSO 2: S 1 = R 2 JOIN Z PASSO 3: S 2 = R 1 JOIN S 1 PASSO 4: S 3 = SEL A2 = A3 and A4 = C1 (S 2 ) PASSO 5: S 4 = PROJ A1,A4 (S 3 ) PASSO 6: S 5 = REN B1,B2 A1,A4 (S 4 ) Basi di dati - prof. Silvio Salza - a.a IV - 33

34 SQL: esecuzione delle interrogazioni Le espressioni SQL sono dichiarative In pratica, i DBMS eseguono le operazioni in modo efficiente, ad esempio: eseguono le selezioni al più presto se possibile, eseguono join e non prodotti cartesiani La capacità dei DBMS di "ottimizzare" le interrogazioni, rende (di solito) non necessario preoccuparsi dell'efficienza quando si specifica un'interrogazione È perciò più importante preoccuparsi della chiarezza (anche perché così è più difficile sbagliare ) Basi di dati - prof. Silvio Salza - a.a IV - 34

35 Join esplicito È possibile anche esprimere esplicitamente l operazione di join, con la sintassi: select from Tabella { join Tabella on CondDiJoin }, [ where AltraCondizione ] Questa è una modalità alternativa, in quanto è sempre possibile esprimere le stesse query tramite prodotto cartesiano nella clausola from condizioni della clausola where Basi di dati - prof. Silvio Salza - a.a IV - 35

36 Join esplicito: esempio Query 6: Le persone che guadagnano più dei rispettivi padri, mostrando nome, reddito e reddito del padre select f.nome, f.reddito, p.reddito from Persone p, Paternità t, Persone f where p.nome = t.padre and t.figlio = f.nome and f.reddito > p.reddito select f.nome, f.reddito, p.reddito From Persone p join Paternità t on p.nome = t.padre join Persone f on t.figlio = f.nome where f.reddito > p.reddito Basi di dati - prof. Silvio Salza - a.a IV - 36

37 Join esterno (outer join) Query 7: Padre e, se nota, madre di ogni persona select paternita.figlio, padre, madre from paternita left outer join maternita on paternita.figlio = maternita.figlio outer è opzionale select paternita.figlio, padre, madre from paternita left join maternita on paternita.figlio = maternita.figlio N.B. Il join esterno sinistro prende comunque tutte le tuple della relazione di sinistra Basi di dati - prof. Silvio Salza - a.a IV - 37

38 Join esterno: esempi 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 right 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 - prof. Silvio Salza - a.a IV - 38

39 Ordinamento del risultato Query 8: Nome e reddito delle persone con meno di trenta anni in ordine alfabetico select nome, reddito from persone where eta < 30 order by nome select nome, reddito from persone where eta < 30 order by nome desc Basi di dati - prof. Silvio Salza - a.a IV - 39

40 Operatori aggregati Nelle espressioni della target list possiamo avere anche espressioni che calcolano valori a partire da insiemi di ennuple: Conteggio Minimo Massimo Media Somma Sintassi base (semplificata): Funzione ( [ distinct ] EspressioneSuAttributi ) Basi di dati - prof. Silvio Salza - a.a IV - 40

41 Operatori aggregati: count Sintassi: Conta il numero di ennuple: count (*) Conta i valori di un attributo (considerando i duplicati): count (Attributo) Conta i valori distinti di un attributo: count (distinct Attributo) Basi di dati - prof. Silvio Salza - a.a IV - 41

42 Operatore count: esempio Query 9: Quanti sono i figli di Franco select count(*) as NumFigliDiFranco from Paternità where Padre = 'Franco' Semantica: l operatore aggregato (count), che conta le ennuple, viene applicato al risultato dell interrogazione: select * from Paternità where Padre = 'Franco' Basi di dati - prof. Silvio Salza - a.a IV - 42

43 Operatore count: esempio (risultato) Query 9: Quanti sono i figli di Franco Paternità padre Sergio Luigi Luigi Franco Franco figlio Franco Olga Filippo Andrea Aldo NumFigliDiFranco 2 Basi di dati - prof. Silvio Salza - a.a IV - 43

44 Operatore count e valori nulli select count(*) from Persone select count(reddito) from persone 4 = n. di tuple 3 = n. valori non nulli select count(distinct Reddito) 2 = n. di valori non nulli from Persone distinti Persone Nome Età Andrea 27 Aldo 25 Maria 55 Anna 50 Reddito 21 NULL Basi di dati - prof. Silvio Salza - a.a IV - 44

45 Raggruppamento Le funzioni di aggregazione possono essere applicate a partizioni delle ennuple delle relazioni Esecuzione in tre passi: 1. Il risultato dell interrogazione viene calcolato 2. Le n-uple sono partizionate secondo un criterio dato 3. L operatore è applicato agli insiemi della partizione Per specificare le partizioni delle ennuple, si utilizza la clausola group by: group by listaattributi Basi di dati - prof. Silvio Salza - a.a IV - 45

46 Raggruppamento: esempio Query 10: Il numero di figli di ciascun padre select Padre, count(*) as NumFigli from Paternità group by Padre Paternità Padre Figlio Sergio Franco Luigi Luigi Olga Filippo Franco Franco Andrea Aldo Padre NumFigli Sergio 1 Luigi 2 Franco 2 Basi di dati - prof. Silvio Salza - a.a IV - 46

47 Semantica del raggruppamento 1. Si esegue l interrogazione ignorando la group by e gli operatori aggregati: select * from Paternità 2. Si raggruppano le ennuple che hanno lo stesso valore per gli attributi che compaiono nella group by 3. Si produce una n-upla del risultato per ogni gruppo, e si applica l operatore aggregato a ciascun gruppo. Basi di dati - prof. Silvio Salza - a.a IV - 47

48 Raggruppamento: esempio 2 Query 11: Il massimo dei redditi per ogni gruppo di persone che sono maggiorenni ed hanno la stessa età (indicando anche l età) Persone Nome Età Reddito select eta, max(reddito) from persone where eta > 17 group by eta Basi di dati - prof. Silvio Salza - a.a IV - 48

49 Raggruppamento e target list Se si fa uso di group by, possono comparire nella target list solamente funzioni di aggregazione e attributi che compaiono nella group by select Età, Reddito from persone group by Età SCORRETTA (Potrebbero esistere più valori di Reddito nello stesso gruppo) select Età, avg(reddito) from persone group by Età CORRETTA (Il valore medio di Reddito è definito per ogni gruppo) Basi di dati - prof. Silvio Salza - a.a IV - 49

50 Condizioni sui gruppi (having) La clausola having (che appare dopo la group by) impone condizioni di selezione sui gruppi Le condizioni si possono applicare ai valori aggregati Query 12: I padri i cui figli hanno un reddito medio maggiore di 25 select padre, avg(f.reddito) from Persone F, Paternità P where P.Figlio = F.nome group by padre having avg(f.reddito) > 25 Basi di dati - prof. Silvio Salza - a.a IV - 50

51 Operazioni insiemistiche Le operazioni insiemistiche estendono il potere espressivo del linguaggio SQL union effettua l unione dei risultati di due interrogazioni select... union [all] select... La corrispondenza tra attributi è posizionale, in base all ordine nelle rispettive select Vengono presi i nomi di attributo della prima select I duplicati vengono eliminati salvo che non sia presente l opzione all Basi di dati - prof. Silvio Salza - a.a IV - 51

52 Unione Query 13: Tutte le coppie genitore figlio select Padre as Genitore, Figlio from Paternità union select Madre, Figlio from Maternità Notare la corrispondenza posizionale degli attributi Il risultato ha nello schema gli attributi Genitore e Figlio Basi di dati - prof. Silvio Salza - a.a IV - 52

53 Intersezione e differenza (2) L operatore di intersezione è intersect Il risultato è costituito da tutte le tuple che compaiono in entrambi gli operandi L operatore di differenza è except Il risultato è costituito da tutte le tuple ce compaiono nel primo operando e non nel secondo N.B. Non tutti i DBMS supportano gli operatori intercept ed except. Il loro uso è assolutamente sconsigliato visto che non estendono il potere espressivo del linguaggio e possono essere sostituiti da altri costrutti. Basi di dati - prof. Silvio Salza - a.a IV - 53

54 Intersezione e differenza Query 14: Tutti nomi di impiegati che sono anche cognomi select Nome from Impiegato intersect select Cognome as Nome from Impiegato Query 15: Tutti nomi di impiegati che non sono anche cognomi select Nome from Impiegato except select Cognome as Nome from Impiegato Basi di dati - prof. Silvio Salza - a.a IV - 54

55 Interrogazioni nidificate Nelle condizioni atomiche può comparire una select (sintatticamente, deve comparire tra parentesi). In particolare, le condizioni atomiche permettono: il confronto fra un attributo (o più attributi) e il risultato di una sottointerrogazione quantificazioni esistenziali: cioè imporre l esistenza o meno di un determinato fatto nella base di dati Le interrogazioni nidificate arricchiscono il linguaggio e semplificano la formulazione di alcune interrogazioni complesse Basi di dati - prof. Silvio Salza - a.a IV - 55

56 Operatori di confronto Uguaglianza o altri operatori di confronto (il risultato della interrogazione nidificata deve essere unico) Se non si è sicuri che il risultato sia unico, si può far precedere l interrogazione nidificata da: any: vero, se il confronto è vero per una qualunque delle tuple risultato dell interrogazione nidificata all: vero, se il confronto è vero per tutte le tuple risultato dell' interrogazione nidificata L operatore in, che è equivalente a =any L operatore not in, che è equivalente a <> all L operatore exists che rende la condizione vera se il risultato dell interrogazione nidificata è non vuoto. Basi di dati - prof. Silvio Salza - a.a IV - 56

57 Operatori di disuguaglianza Query 16: Il nome delle persone che hanno un reddito maggiore del reddito di tutte le persone con meno di 30 anni. select P.Nome from Persone P where Reddito >= all(select Reddito from Persone where Età < 30) Basi di dati - prof. Silvio Salza - a.a IV - 57

58 Operatori di disuguaglianza Query 16: Il nome delle persone che hanno un reddito maggiore del reddito di tutte le persone con meno di 30 anni. select P.Nome from Persone P where Reddito >= (select max(reddito) from Persone where Età < 30) Basi di dati - prof. Silvio Salza - a.a IV - 58

59 Operatore exists Query 17: Il nome delle persone che hanno almeno un figlio select Nome from Persone P where exists (select * from Paternità where Padre = P.nome) or exists (select * from Maternità where Madre = P.nome) N.B. La query nidificata ha consentito di fare anche una Union Basi di dati - prof. Silvio Salza - a.a IV - 59

60 Operatori di appartenenza Query 18: Nome ed età delle madri che hanno almeno un figlio minorenne select from where P.Nome, P.Età Persone P, Maternità M P.Nome = M.Madre and M.Figlio in (select Nome from Persone where Età < 18) N.B. L operatore in può essere sostituito con =any Basi di dati - prof. Silvio Salza - a.a IV - 60

61 Alternativa Query 18: Nome ed età delle madri che hanno almeno un figlio minorenne select from where P.Nome, P.Età Persone P, Maternità M, Persone F P.Nome = M.Madre and M.Figlio=F.Nome and F.Età<18 Basi di dati - prof. Silvio Salza - a.a IV - 61

62 Manipolazione dei dati L SQL comprende istruzioni per effettuare operazioni di manipolazione dei dati Inserimento: insert Eliminazione: delete Modifica: update Agiscono su di una o più n-uple di una relazione Le n-ple sono selezionate sulla base di una condizione che può coinvolgere anche altre relazioni Basi di dati - prof. Silvio Salza - a.a IV - 62

63 Inserimento: sintassi insert into Tabella [ ( Attributi ) ] oppure values( Valori ) insert into Tabella [ ( Attributi ) ] select... Le liste degli attributi e dei valori devono avere lo stesso numero di valori; l ordine è significativo Se la lista di attributi è omessa vengono presi tutti Liste di attributi parziali generano valori nulli Basi di dati - prof. Silvio Salza - a.a IV - 63

64 Inserimento: esempi insert into Persone values('mario',25,52) insert into Persone(Nome, Età, Reddito) values('pino',25,52) insert into Persone(Nome, Reddito) values('lino',55) insert into Persone (Nome) select distinct Padre from Paternità where Padre not in (select Nome from Persone) Basi di dati - prof. Silvio Salza - a.a IV - 64

65 Eliminazione: sintassi Sintassi delete from Tabella [ where Condizione ] Elimina le n-uple che soddisfano la condizione Esempi delete from Persone where Età < 35 delete from Paternità where Figlio not in (select Nome from Persone) Basi di dati - prof. Silvio Salza - a.a IV - 65

66 Modifica: sintassi Sintassi update NomeTabella set Attributo = áespr. select null default ñ [ where Condizione ] Modifica le n-uple della tabella che soddisfano la where Esempi update Persone set Reddito = Reddito * 1.1 where Reddito < 40 Basi di dati - prof. Silvio Salza - a.a IV - 66

67 Viste Una vista è una tabella la cui istanza è derivata da altre tabelle mediante una interrogazione create view NomeVista [(ListaAttributi)] as SelectSQL Le viste sono tabelle virtuali, cioè non materializzate Possono essere utilizzate in altre interrogazioni Solo quando vengono utilizzate in altre interrogazioni la loro istanza viene calcolata Le viste consentono di creare per la stessa base di dati mapping diversi per utenti diversi tra schema esterno e schema logico Basi di dati - prof. Silvio Salza - a.a IV - 67

68 Viste: esempio Creare la tabella con i soli impiegati che lavorano nel dipartimento Amministrazione, e il cui stipendio è maggiore di 10 create view ImpAmmin(Mat,Nome,Cognome,Stip) as select Matricola, Nome, Cognome, Stipendio from Impiegato where Dipart = 'Amministrazione' and Stipendio > 10 È come se allo schema (ma non alla base di dati) fosse stata aggiunta la tabella ImpAmmin(Mat,Nome,Cognome,Stip) Basi di dati - prof. Silvio Salza - a.a IV - 68

69 Controllo degli accessi In SQL è possibile specificare chi (utente) e con quali privilegi può utilizzare la base di dati (o parte di essa) Oggetto dei privilegi (diritti di accesso) sono di solito le tabelle, ma anche altri tipi di risorse, quali singoli attributi, viste o domini Un utente predefinito _system (amministratore della base di dati) ha tutti i privilegi Il creatore di una risorsa ha tutti i privilegi su di essa Basi di dati - prof. Silvio Salza - a.a IV - 69

70 Tipi di privilegio insert: permette di inserire nuovi oggetti (n-uple) update: permette di modificare il contenuto delete: permette di eliminare oggetti select: permette di leggere la risorsa references: permette la definizione di vincoli di integrità referenziale verso la risorsa (può limitare la possibilità di modificare la risorsa) usage: permette l'utilizzo in una definizione (per esempio, di un dominio) Basi di dati - prof. Silvio Salza - a.a IV - 70

71 Tipi di privilegio Concessione di privilegi: grant á Privileges all privileges ñ on Resource to Users [ with grantoption ] (grantoption consente di trasmettere il privilegio) Esempio: grant select on Dipartmento to Giuseppe Revoca di privilegi: revoke Privileges on Resource from Users [ restrict cascade ] Basi di dati - prof. Silvio Salza - a.a IV - 71

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

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

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

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

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

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

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

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

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

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

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

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

Elementi di Informatica LB Basi di Dati. Anno accademico 2007/2008 Prof. Stefano Contadini

Elementi di Informatica LB Basi di Dati. Anno accademico 2007/2008 Prof. Stefano Contadini Elementi di Informatica LB Basi di Dati Anno accademico 2007/2008 Prof. Stefano Contadini Elementi di Informatica LB titolo: 1. Definizione dei dati 1 SQL originariamente "Structured Query Language", ora

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

Università di Roma La Sapienza Laurea in Ingegneria Informatica. Basi di Dati. Anno Accademico 2003/2004 Canale M-Z.

Università di Roma La Sapienza Laurea in Ingegneria Informatica. Basi di Dati. Anno Accademico 2003/2004 Canale M-Z. 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

Argomenti della lezione. Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate

Argomenti della lezione. Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate Maternità Paternità Madre Luisa Luisa Anna Anna Maria Maria Padre Sergio

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

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. 2007/2008 Interrogazioni con raggruppamento E possibile

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

SQL. Argomenti della lezione. Join esplicito. Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate

SQL. Argomenti della lezione. Join esplicito. Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate Argomenti della lezione SQL Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate Maternità Paternità Madre Figlio Olga Filippo Sergio Olga Filippo Persone

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

Figlio Maria. Luigi. Olga Filippo Andrea Aldo Figlio Franco Olga Filippo Andrea Aldo

Figlio Maria. Luigi. Olga Filippo Andrea Aldo Figlio Franco Olga Filippo Andrea Aldo 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

Dettagli

E. Giunchiglia Basi di dati 1 (trasparenze basate su Atzeni, Ceri, Paraboschi, Torlone: Basi di dati, Capitolo 4) SQL SQL. Definizione dei dati in SQL

E. Giunchiglia Basi di dati 1 (trasparenze basate su Atzeni, Ceri, Paraboschi, Torlone: Basi di dati, Capitolo 4) SQL SQL. Definizione dei dati in SQL SQL E. Giunchiglia Basi di dati 1 (trasparenze basate su Atzeni, Ceri, Paraboschi, Torlone: Basi di dati, Capitolo 4) SQL 05/10/2004 originariamente "Structured Query Language", ora "nome proprio" linguaggio

Dettagli

SQL. Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL. Definizione dei dati in SQL. SQL: "storia" Domini

SQL. Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL. Definizione dei dati in SQL. SQL: storia Domini SQL Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1996-2002 Capitolo 4: SQL 24/09/2002 originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene

Dettagli

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL. Definizione dei dati in SQL. SQL: "storia" Domini. CREATE TABLE, esempio

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL. Definizione dei dati in SQL. SQL: storia Domini. CREATE TABLE, esempio SQL Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1996-2002 Capitolo 4: SQL 24/09/2002 originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene

Dettagli

SQL. Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL. Definizione dei dati in SQL. SQL: "storia" Domini

SQL. Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL. Definizione dei dati in SQL. SQL: storia Domini SQL Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1996-2002 Capitolo 4: SQL 24/09/2002 originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene

Dettagli

Gestione dei valori nulli

Gestione dei valori nulli Gestione dei valori nulli La gestione dei valori nulli, a seconda dell implementazione, avviene attraverso una logica a due valori come in SQL-89, o a tre valori (vero, falso, unknown) come in SQL-2. In

Dettagli

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

SQL-DML/3. Basi di Dati. Prof. Alfredo Cuzzocrea Università degli Studi di Trieste

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

Dettagli

Basi di dati. Giuseppe De Giacomo. Dipartimento di Informatica e Sistemistica Antonio Ruberti SAPIENZA Università di Roma

Basi di dati. Giuseppe De Giacomo. Dipartimento di Informatica e Sistemistica Antonio Ruberti SAPIENZA Università di Roma Basi di dati Giuseppe De Giacomo Dipartimento di Informatica e Sistemistica Antonio Ruberti SAPIENZA Università di Roma Anno Accademico 2007/08 Canale M-Z http://www.dis.uniroma1.it/!degiacomo/didattica/basidati/

Dettagli

Operazioni sui dati. Interrogazioni con operatori aggregati. Capitolo 4

Operazioni sui dati. Interrogazioni con operatori aggregati. Capitolo 4 Operazioni sui dati Interrogazioni con operatori aggregati Ordinamento del risultato Nome e reddito delle persone con meno di trenta anni in ordine alfabetico select nome, reddito from persone where eta

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

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2 Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2 Vincoli di integrita 2 Cosa e un vincolo di integrita E una proprieta sempre valida

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

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

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 2010/2011 http://www.dis.uniroma1.it/ lenzerini/?q=node/44 3. Il

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 2007/2008 Canale A-L http://www.dis.uniroma1.it/ lenzerini/didattica/basidati/

Dettagli

SQL. Storia un po piu in dettaglio. SQL: "storia" Tre livelli per SQL-2. Standard, dialetti, mercato

SQL. Storia un po piu in dettaglio. SQL: storia Tre livelli per SQL-2. Standard, dialetti, mercato Trasparenze rielaborate da Atzeni, Ceri, Paraboschi, Torlone Basi di dati: modelli e linguaggi di programmazione McGraw-Hill, 2003 Capitolo 4: SQL-1, prima parte 11/03/2005 SQL Structured Query Language

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

Trasparenze rielaborate da Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999 Capitolo 4: SQL-2, seconda parte.

Trasparenze rielaborate da Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999 Capitolo 4: SQL-2, seconda parte. Trasparenze rielaborate da Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999 Capitolo 4: SQL-2, seconda parte 11/03/2005 Maternità Legami logici Paternità Madre Luisa Luisa Anna Anna Padre

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

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 SQL SQL (pronunciato anche come l inglese

Dettagli

SQL operazioni sui dati: interrogazioni con join e prodotti cartesiano

SQL operazioni sui dati: interrogazioni con join e prodotti cartesiano SQL operazioni sui dati: interrogazioni con join e prodotti cartesiano Selezione, proiezione e join Le istruzioni SELECT : con una sola relazione nella clausola FROM permettono di realizzare: selezioni,

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

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 4 Interrogazioni annidate

Dettagli

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

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

Dettagli

Vincoli interrelazionali

Vincoli interrelazionali Vincoli interrelazionali Politiche associate alla cancellazione (comando delete): cascade tutte le corrispondenti righe della tabella interna vengono cancellate. set null all attributo referente viene

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

Interrogazioni. L istruzione base per le interrogazioni è select

Interrogazioni. L istruzione base per le interrogazioni è select Interrogazioni L istruzione base per le interrogazioni è select select ListaAttributi (target list) from ListaTabelle (clausola from) [ where Condizione ] (clausola where) Più in dettaglio: select AttrEspr

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

Corso sul linguaggio SQL

Corso sul linguaggio SQL Corso sul linguaggio SQL Modulo L2B (SQL) 4.3-1 Prerequisiti Creazione e gestione tabelle Uso ambiente SQL in algebra relazionale 2 1 Introduzione In questa Unità vediamo i comandi SQL con i quali è possibile

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

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

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. 2017/2018 http://www.di.uniba.it/~lisi/courses/basi-dati/bd2017-18.htm Prof.ssa Francesca A. Lisi francesca.lisi@uniba.it

Dettagli

Parte III L algebra relazionale

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

Dettagli

insert into Dipartimento(NomeDip, Città) values('produzione','torino') insert into ProdottiMilanesi (select codice, descrizione from Prodotto

insert into Dipartimento(NomeDip, Città) values('produzione','torino') insert into ProdottiMilanesi (select codice, descrizione from Prodotto Inserimento insert into Dipartimento(NomeDip, Città) values('produzione','torino') Si utilizza in genere mediante una form per consentire agli utenti di inserire dati. L'ordinamento degli attributi (se

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

Vincoli di Integrità Referenziale

Vincoli di Integrità Referenziale Vincoli di Integrità Referenziale In alcuni casi (corrispondenze fra relazioni) è necessario che i valori degli attributi di una relazione R 1 si trovino anche in attributi corrispondenti di un altra relazione

Dettagli

Viste come strumenti di programmazione

Viste come strumenti di programmazione Viste come strumenti di programmazione Trovare gli impiegati che hanno lo stesso capo di Rossi Senza vista: PROJ Impiegato ((Afferenza JOIN Direzione) JOIN REN ImpR,RepR Impiegato,Reparto ( SEL Impiegato='Rossi'

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 Operazioni di aggiornamento operazioni di inserimento: insert eliminazione: delete modifica: update di una o più ennuple di una

Dettagli

Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata

Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata Domini Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata numeric [(Precisione [,Scala])] decimal [(Precisione [,Scala])] integer smallint Precisione specifica il numero di

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

Inserimento. Cancellazione. Modifica. INSERT INTO Persone VALUES ('Mario',25,52) INSERT INTO Persone(Nome, Eta, Reddito) VALUES('Pino',25,52)

Inserimento. Cancellazione. Modifica. INSERT INTO Persone VALUES ('Mario',25,52) INSERT INTO Persone(Nome, Eta, Reddito) VALUES('Pino',25,52) Inserimento insert into Dipartimento(NomeDip, Città) values('produzione','torino') Si utilizza in genere mediante una maschera (form) per consentire agli utenti di inserire dati. L'ordinamento degli attributi

Dettagli

Corso sul linguaggio SQL

Corso sul linguaggio SQL Corso sul linguaggio SQL Modulo LB (SQL) 5 - Aggregazione e raggruppamento Prerequisiti Conteggio e somma degli elementi di un insieme numerico Massimo, minimo e media di un insieme numerico Ordinamento

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

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

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

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.1 Data Description Language - 1

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.1 Data Description Language - 1 Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.1 Data Description Language - 1 SQL Structured Query Language è un linguaggio con varie funzionalità: contiene sia

Dettagli

Interrogazioni di tipo insiemistico. Select. Interrogazioni di tipo insiemistico. Interrogazioni nidificate

Interrogazioni di tipo insiemistico. Select. Interrogazioni di tipo insiemistico. Interrogazioni nidificate Select La sintassi di select cui siamo arrivati dopo le estensioni viste è quindi: SelectSQL ::= select ListaAttributiOEspressioni from ListaTabelle [ where CondizioniSemplici ] [ group by ListaAttributiDiRaggruppamento]

Dettagli

Equivalenza di espressioni. Equivalenze. Equivalenze. Due espressioni sono equivalenti se: Atomizzazione delle selezioni σ F1 F2 (E) σ F1 (σ F2 (E))

Equivalenza di espressioni. Equivalenze. Equivalenze. Due espressioni sono equivalenti se: Atomizzazione delle selezioni σ F1 F2 (E) σ F1 (σ F2 (E)) Equivalenza di espressioni Due espressioni sono equivalenti se: E 1 R E 2 se E 1 (r = E 2 (r per ogni istanza r di R (equivalenza dipendente dallo schema E 1 E 2 se E 1 R E 2 per ogni schema R (equivalenza

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

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

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

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/ 1 Linguaggi per DBMS Il modello relazionale definisce i concetti generali ed i vincoli per modellare

Dettagli

SQL. Domini. Domini elementari (predefiniti) Domini definiti dall utente (semplici, ma riutilizzabili)

SQL. Domini. Domini elementari (predefiniti) Domini definiti dall utente (semplici, ma riutilizzabili) Structured Query Language è un linguaggio con varie funzionalità: contiene sia il DDL sia il DML; esistono varie versioni dell ; vediamo gli aspetti essenziali non i dettagli storia : prima proposta SEQUEL

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

BASI di DATI. SQL: concetti fondamentali

BASI di DATI. SQL: concetti fondamentali BASI di DATI SQL: concetti fondamentali 1 SQL-92 >> Sommario Concetti Fondamentali Introduzione Creazione ed eliminazione di bd Creazione ed eliminazione di tabelle Inserimenti di ennuple Interrogazioni

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

Operatori derivati dagli insiemi. Algebra Relazionale. Unione. Operatori derivati dagli insiemi

Operatori derivati dagli insiemi. Algebra Relazionale. Unione. Operatori derivati dagli insiemi Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere la soluzione. Operatori: unione intersezione

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

Operatori derivati dagli insiemi

Operatori derivati dagli insiemi Operatori derivati dagli insiemi Unione L unione fra due relazioni r 1 e r 2 definite sullo stesso schema X si indica con r 1 r 2 ed è una relazione su X contenente le tuple appartenenti a r 1, a r 2 o

Dettagli

Viste (relazioni derivate)

Viste (relazioni derivate) Viste (relazioni derivate) Rappresentazioni diverse per gli stessi dati (schema esterno) Relazioni di base: contenuto autonomo; fisicamente e originariamente contenute nella base di dati Relazioni derivate:

Dettagli

Aggiornamenti e Interrogazioni

Aggiornamenti e Interrogazioni Aggiornamenti e Interrogazioni Aggiornamento: inserimento o modifica di dati (una funzione che, data un istanza di basi di dati ne produce un altra) Interrogazione: estrazione di informazioni (una funzione

Dettagli

Operatori derivati dagli insiemi. Algebra Relazionale. Unione. Operatori derivati dagli insiemi

Operatori derivati dagli insiemi. Algebra Relazionale. Unione. Operatori derivati dagli insiemi Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere la soluzione. Operatori: unione intersezione

Dettagli

Basi di Dati. Concetti Fondamentali SQL-92 25/02/2004. Concetti Fondamentali. Introduzione. Interrogazioni. Creazione ed eliminazione di bd

Basi di Dati. Concetti Fondamentali SQL-92 25/02/2004. Concetti Fondamentali. Introduzione. Interrogazioni. Creazione ed eliminazione di bd Basi di Dati SQL-92 Concetti Fondamentali SQL-92 >> Sommario Introduzione Creazione ed eliminazione di bd Creazione ed eliminazione di tabelle Inserimenti di ennuple Concetti Fondamentali Interrogazioni

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

SQL. Sistemi informativi Modulo di Basi di dati. CREATE TABLE, esempio. Definizione dei dati in SQL. Domini. Domini elementari

SQL. Sistemi informativi Modulo di Basi di dati. CREATE TABLE, esempio. Definizione dei dati in SQL. Domini. Domini elementari SQL Sistemi informativi Modulo di Basi di dati Capitolo 4: SQL 20/04/1999 Structured Query Language è un linguaggio con varie funzionalità: contiene sia il DDL sia il DML; esistono varie versione dell

Dettagli

Basi di Dati. Concetti Avanzati

Basi di Dati. Concetti Avanzati Basi di Dati Concetti Avanzati Concetti Avanzati Raggruppamenti Clausole GROUP BY e HAVING Forma Generale della SELECT Nidificazione Uso nel DML e DDL Nidificazione, Viste e Potere Espressivo Esecuzione

Dettagli

AOT LAB. Basi di dati. Fondamenti di Informatica. Michele Tomaiuolo. Agent and Object Technology Lab

AOT LAB. Basi di dati. Fondamenti di Informatica. Michele Tomaiuolo. Agent and Object Technology Lab Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Basi di dati Michele Tomaiuolo Sistema informativo Un sistema informativo

Dettagli

Esercitazione: Interrogazioni SQL

Esercitazione: Interrogazioni SQL Laurea in Ingegneria Informatica SAPIENZA Università di Roma Insegnamento di Basi di Dati Esercitazione: Interrogazioni SQL Domenico Fabio Savo 1 Sommario 1. Creazione del database utilizzato per l esercitazione

Dettagli

Basi di Dati SQL-92. Concetti Fondamentali

Basi di Dati SQL-92. Concetti Fondamentali Basi di Dati SQL-92 Concetti Fondamentali SQL-92 >> Sommario Concetti Fondamentali Introduzione Interrogazioni clausola SELECT Creazione ed eliminazione clausola FROM di bd clausola WHERE clausola ORDER

Dettagli

Modulo 2 Data Base 2

Modulo 2 Data Base 2 Modulo 2 Data Base 2 Università degli Studi di Salerno Corso di Laurea in Scienze della comunicazione Informatica generale Docente: Angela Peduto A.A. 2004/2005 Algebra Relazionale Linguaggio procedurale,

Dettagli

Corso di Basi di Dati A.A. 2013/2014

Corso di Basi di Dati A.A. 2013/2014 Corso di Laurea in Ingegneria Gestionale Sapienza Università di Roma Corso di Basi di Dati A.A. 2013/2014 4 SQL : Structured Query Language Tiziana Catarci, Andrea Marrella Ultimo aggiornamento : 27/03/2014

Dettagli

Esercizi di Informatica Documentale

Esercizi di Informatica Documentale Esercizi di Informatica Documentale A.A. 2013/2014 Parte Prima Nota: Laddove si richiede una risposta aperta, rispondere al massimo in tre righe. 1. Che cos è una Base di Dati? 2. Dare la definizione di

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

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