Parte IV Il linguaggio SQL
|
|
- Susanna Grande
- 5 anni fa
- Visualizzazioni
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 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
DettagliSQL. 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
DettagliCorso 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
DettagliSQL /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
DettagliCorso 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
DettagliJoin 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
DettagliSQL 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
DettagliSQL 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
DettagliAtzeni, 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
DettagliSQL-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
DettagliSQL. 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
DettagliAtzeni, 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
DettagliBasi 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
DettagliElementi 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
DettagliOperazioni 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
DettagliUniversità 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
DettagliArgomenti 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
DettagliSQL. 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
DettagliSQL. 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
DettagliOperatori 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:
DettagliSQL. 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
DettagliOperatori 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
DettagliFiglio 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
DettagliE. 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
DettagliSQL. 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
DettagliAtzeni, 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
DettagliSQL. 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
DettagliGestione 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
DettagliSQL: 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,
DettagliSQL-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
DettagliBasi 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/
DettagliOperazioni 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
DettagliSQL. 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
DettagliUniversita 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
DettagliE 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
DettagliOperatori 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
DettagliBasi 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
DettagliBasi 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/
DettagliSQL. 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
DettagliStructured 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
DettagliTrasparenze 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
DettagliInterrogazioni 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
DettagliSQL. 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
DettagliSQL 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,
DettagliSQL 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
DettagliCorso 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
DettagliBasi 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
DettagliVincoli 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
DettagliLinguaggi 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
DettagliLinguaggi 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
DettagliInterrogazioni. 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
DettagliParte 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
DettagliCorso 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
DettagliSQL - 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,...
DettagliSQL. 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
DettagliSQL. 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
DettagliParte 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
Dettagliinsert 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
DettagliSQL. 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
DettagliVincoli 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
DettagliViste 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'
DettagliAtzeni, 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
DettagliTipi 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
DettagliInterpretazione 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
DettagliInserimento. 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
DettagliCorso 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
DettagliIl 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
DettagliSQL 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
DettagliSQL 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
DettagliUniversita 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
DettagliInterrogazioni 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]
DettagliEquivalenza 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
DettagliSISTEMI 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
DettagliCorso 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
DettagliBasi 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
DettagliCorso 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
DettagliSQL. 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
DettagliBasi 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
DettagliBASI 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
DettagliSQL. 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
DettagliOperatori 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
DettagliStructured. 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
DettagliOperatori 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
DettagliViste (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:
DettagliAggiornamenti 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
DettagliOperatori 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
DettagliBasi 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
DettagliSQL 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
DettagliSQL. 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
DettagliBasi 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
DettagliAOT 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
DettagliEsercitazione: 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
DettagliBasi 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
DettagliModulo 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,
DettagliCorso 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
DettagliEsercizi 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
DettagliBasi 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
DettagliProf. 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