bd-04-2017 esempi 20171023-1106 - roma tre universityatzeni/didattica/bdn/20172018/bd-04...•a...
TRANSCRIPT
![Page 1: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/1.jpg)
SQL Esempi
23-26/10/2017 Basi di dati - SQL 1
![Page 2: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/2.jpg)
Esercitazioni pratiche
• Per SQL è possibile (e fondamentale) svolgere esercitazioni pratiche
• Verranno anche richieste copme condizione per svolgere le prove parziali
• Soprattutto sono utilissime• Si può utilizzare qualunque DBMS
• IBM DB2, Microsoft SQL Server, Oracle, PostgresSQL, ...
• A lezione utilizziamo PostgresSQL23-26/10/2017 Basi di dati - SQL 2
![Page 3: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/3.jpg)
23-26/10/2017 Basi di dati - SQL 3
CREATE TABLE, esempi
CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo character(20) NOT NULL, cfu numeric NOT NULL)
CREATE TABLE esami( corso numeric REFERENCES corsi (codice), studente numeric REFERENCES studenti (matricola), data date NOT NULL,
voto numeric NOT NULL, PRIMARY KEY (corso, studente))
La chiave primaria viene definita come NOT NULL anche se non lo specifichiamo (in Postgres)
![Page 4: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/4.jpg)
23-26/10/2017 Basi di dati - SQL 4
DDL, in pratica
• In molti sistemi si utilizzano strumenti diversi dal codice SQL per definire lo schema della base di dati
• Vediamo
![Page 5: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/5.jpg)
23-26/10/2017 Basi di dati - SQL 5
SQL, operazioni sui dati
• interrogazione: • SELECT
• modifica:• INSERT, DELETE, UPDATE
![Page 6: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/6.jpg)
23-26/10/2017 Basi di dati - SQL 6
Inserimento
(necessario per gli esercizi)
INSERT INTO Tabella [ ( Attributi ) ] VALUES( Valori )
oppure
INSERT INTO Tabella [ ( Attributi )]SELECT ...
(vedremo più avanti)
![Page 7: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/7.jpg)
23-26/10/2017 Basi di dati - SQL 7
INSERT INTO Persone VALUES ('Mario',25,52)
INSERT INTO Persone(Nome, Reddito, Eta) VALUES('Pino’,52,23)
INSERT INTO Persone(Nome, Reddito) VALUES('Lino',55)
![Page 8: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/8.jpg)
23-26/10/2017 Basi di dati - SQL 8
Nome EtàPersone
RedditoAndrea 27
Maria 55Anna 50
Filippo 26Luigi 50
Franco 60Olga 30
Sergio 85Luisa 75
Aldo 2521
4235304020413587
15
MadreMaternità FiglioLuisa
AnnaAnnaMariaMaria
LuisaMaria
OlgaFilippoAndrea
Aldo
Luigi
PadrePaternità Figlio
LuigiLuigi
FrancoFranco
SergioOlga
FilippoAndrea
Aldo
Franco
![Page 9: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/9.jpg)
Esercizi
• Definire la base di dati per gli esercizi• installare un sistema• creare lo schema• creare le relazioni (CREATE TABLE)• inserire i dati
• eseguire le interrogazioni• suggerimento, usare schemi diversiset search_path to <nome schema>
23-26/10/2017 Basi di dati - SQL 9
![Page 10: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/10.jpg)
create table persone ( nome char (10) not null primary key,eta numeric not null,reddito numeric not null);
create table paternita (padre char (10) not null ,figlio char (10) not null primary key);
...insert into Persone values('Andrea',27,21);...insert into Paternita values('Sergio','Franco');...
23-26/10/2017 Basi di dati - SQL 10
![Page 11: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/11.jpg)
23-26/10/2017 Basi di dati - SQL 11
Istruzione SELECT (versione base)
SELECT ListaAttributiFROM ListaTabelle[ WHERE Condizione ]
• "target list"• clausola FROM• clausola WHERE
![Page 12: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/12.jpg)
23-26/10/2017 Basi di dati - SQL 12
Intuitivamente
SELECT ListaAttributiFROM ListaTabelle[ WHERE Condizione ]
• Prodotto cartesiano di ListaTabelle• Selezione su Condizione• Proiezione su ListaAttributi
![Page 13: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/13.jpg)
23-26/10/2017 Basi di dati - SQL 13
Selezione e proiezione
• Nome e reddito delle persone con meno di trenta anni
PROJNome, Reddito(SELEta<30(Persone))
select nome, redditofrom personewhere eta < 30
![Page 14: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/14.jpg)
23-26/10/2017 Basi di dati - SQL 14
Selezione, senza proiezione
• Nome, età e reddito delle persone con meno di trenta anni
SELEta<30(Persone)
select *from personewhere eta < 30
![Page 15: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/15.jpg)
23-26/10/2017 Basi di dati - SQL 15
Proiezione, senza selezione
• Nome e reddito di tutte le personePROJNome, Reddito(Persone)
select nome, redditofrom persone
![Page 16: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/16.jpg)
23-26/10/2017 Basi di dati - SQL 16
Proiezione, con ridenominazione
• Nome e reddito di tutte le personeRENAnni çEta(PROJNome, Eta(Persone))
select nome, eta as annifrom persone
![Page 17: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/17.jpg)
23-26/10/2017 Basi di dati - SQL 17
selectmadre
from maternita
select distinctmadre
from maternita
Proiezione, attenzione
![Page 18: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/18.jpg)
23-26/10/2017 Basi di dati - SQL 18
Condizione complessa
select *from personewhere reddito > 25
and (eta < 30 or eta > 60)
![Page 19: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/19.jpg)
23-26/10/2017 Basi di dati - SQL 19
Nome EtàPersone
RedditoAndrea 27
Maria 55Anna 50
Filippo 26Luigi 50
Franco 60Olga 30
Sergio 85Luisa 75
Aldo 2521
4235304020413587
15
MadreMaternità FiglioLuisa
AnnaAnnaMariaMaria
LuisaMaria
OlgaFilippoAndrea
Aldo
Luigi
PadrePaternità Figlio
LuigiLuigi
FrancoFranco
SergioOlga
FilippoAndrea
Aldo
Franco
![Page 20: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/20.jpg)
23-26/10/2017 Basi di dati - SQL 20
Selezione, proiezione e join• I padri di persone che guadagnano più di 20
PROJPadre(paternita JOIN Figlio =Nome
SELReddito>20 (persone))
select distinct padrefrom persone, paternitawhere figlio = nome and reddito > 20
![Page 21: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/21.jpg)
23-26/10/2017 Basi di dati - SQL 21
• Le persone che guadagnano più dei rispettivi padri; mostrare nome, reddito e reddito del padre
PROJNome, Reddito, RP (SELReddito>RP(RENNP,EP,RP ß Nome,Eta,Reddito(persone)
JOINNP=Padre (paternita JOIN Figlio =Nome persone)))
select f.nome, f.reddito, p.redditofrom persone p, paternita, persone fwhere p.nome = padre and
figlio = f.nome andf.reddito > p.reddito
![Page 22: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/22.jpg)
23-26/10/2017 Basi di dati - SQL 22
SELECT, con ridenominazione del risultato
select figlio, f.reddito as reddito, p.reddito as redditoPadre
from persone p, paternita, persone fwhere p.nome = padre and figlio = f.nome
and f.reddito > p.reddito
![Page 23: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/23.jpg)
23-26/10/2017 Basi di dati - SQL 23
Join esplicito
• Padre e madre di ogni persona
select paternita.figlio,padre, madrefrom maternita, paternitawhere paternita.figlio = maternita.figlio
select madre, paternita.figlio, padre from maternita join paternita on
paternita.figlio = maternita.figlio
![Page 24: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/24.jpg)
23-26/10/2017 Basi di dati - SQL 24
• Le persone che guadagnano più dei rispettivi padri; mostrare nome, reddito e reddito del padre
select f.nome, f.reddito, p.redditofrom persone p, paternita, persone fwhere p.nome = padre and
figlio = f.nome andf.reddito > p.reddito
select f.nome, f.reddito, p.redditofrom (persone p join paternita on p.nome = padre)
join persone f on figlio = f.nomewhere f.reddito > p.reddito
![Page 25: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/25.jpg)
23-26/10/2017 Basi di dati - SQL 25
Join esterno: "outer join"
• Padre e, se nota, madre di ogni persona
select paternita.figlio, padre, madrefrom paternita left join maternita
on paternita.figlio = maternita.figlio
select paternita.figlio, padre, madrefrom paternita left outer join maternita
on paternita.figlio = maternita.figlio
• outer e' opzionale
![Page 26: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/26.jpg)
23-26/10/2017 Basi di dati - SQL 26
Ordinamento del risultato
• Nome e reddito delle persone con meno di trenta anni in ordine alfabetico
select nome, redditofrom personewhere eta < 30order by nome
![Page 27: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/27.jpg)
23-26/10/2017 Basi di dati - SQL 27
Espressioni nella target list
select Nome, Reddito/12 as redditoMensilefrom Persone
![Page 28: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/28.jpg)
23-26/10/2017 Basi di dati - SQL 28
Condizione “LIKE”
• Le persone che hanno un nome che inizia per 'A' e ha una 'd' come terza lettera
select * from persone where nome like 'A_d%'
![Page 29: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/29.jpg)
23-26/10/2017 Basi di dati - SQL 29
Cognome Filiale EtàMatricola
Neri Milano 455998Bruni Milano NULL9553
Impiegati
SEL (Età > 40) OR (Età IS NULL) (Impiegati)
Rossi Roma 327309 Rossi Roma 327309 Neri Milano 455998Bruni Milano NULL9553
Gestione dei valori nulli
• Gli impiegati la cui età è o potrebbe essere maggiore di 40
![Page 30: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/30.jpg)
23-26/10/2017 Basi di dati - SQL 30
Unione
select A, Bfrom Runionselect A , Bfrom S
select A, Bfrom Runion allselect A , Bfrom S
![Page 31: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/31.jpg)
23-26/10/2017 Basi di dati - SQL 31
Notazione posizionale!select padre, figlio from paternitaunionselect madre, figliofrom maternita
![Page 32: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/32.jpg)
23-26/10/2017 Basi di dati - SQL 32
Luisa
AnnaAnnaMariaMaria
LuisaMaria
OlgaFilippoAndrea
Aldo
Luigi
Figlio
LuigiLuigi
FrancoFranco
SergioOlga
FilippoAndrea
Aldo
Franco
Luisa
AnnaAnnaMariaMaria
LuisaMaria
OlgaFilippoAndrea
Aldo
Luigi
Padre Figlio
LuigiLuigi
FrancoFranco
SergioOlga
FilippoAndrea
Aldo
Franco
![Page 33: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/33.jpg)
23-26/10/2017 Basi di dati - SQL 33
Notazione posizionale, 2
select padre, figliofrom paternitaunionselect figlio, madrefrom maternita
NO!
select padre, figliofrom paternitaunionselect madre, figliofrom maternita
OK
![Page 34: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/34.jpg)
23-26/10/2017 Basi di dati - SQL 34
Notazione posizionale, 3• Anche con le ridenominazioni non cambia niente:
select padre as genitore, figliofrom paternitaunionselect figlio, madre as genitorefrom maternita
• Corretta:select padre as genitore, figliofrom paternitaunionselect madre as genitore, figlio from maternita
![Page 35: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/35.jpg)
23-26/10/2017 Basi di dati - SQL 35
Differenza
select Nomefrom Impiegatoexceptselect Cognome as Nomefrom Impiegato
![Page 36: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/36.jpg)
23-26/10/2017 Basi di dati - SQL 36
Intersezioneselect Nomefrom Impiegatointersectselect Cognome as Nomefrom Impiegato
![Page 37: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/37.jpg)
23-26/10/2017 Basi di dati - SQL 37
Operatori aggregati: COUNT
• Il numero di figli di Franco
select count(*) as NumFigliDiFrancofrom Paternitawhere Padre = 'Franco'
![Page 38: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/38.jpg)
23-26/10/2017 Basi di dati - SQL 38
COUNT DISTINCT
select count(*) from persone
select count(reddito) from persone
select count(distinct reddito) from persone
![Page 39: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/39.jpg)
23-26/10/2017 Basi di dati - SQL 39
Altri operatori aggregati
• SUM, AVG, MAX, MIN
• Media dei redditi dei figli di Franco
select avg(reddito) from persone join paternita on nome=figlio where padre='Franco'
![Page 40: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/40.jpg)
23-26/10/2017 Basi di dati - SQL 40
Operatori aggregati e valori nulli
select avg(reddito) as redditomediofrom persone
![Page 41: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/41.jpg)
23-26/10/2017 Basi di dati - SQL 41
Operatori aggregati e target list• un’interrogazione scorretta:
select nome, max(reddito)from persone
• di chi sarebbe il nome? La target list deve essere omogenea
select min(eta), avg(reddito)from persone
![Page 42: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/42.jpg)
23-26/10/2017 Basi di dati - SQL 42
• Il numero di figli di ciascun padre
select Padre, count(*) AS NumFiglifrom paternitagroup by Padre
Operatori aggregati e raggruppamenti
![Page 43: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/43.jpg)
23-26/10/2017 Basi di dati - SQL 43
Condizioni sui gruppi
• I padri i cui figli hanno un reddito medio maggiore di 25; mostrare padre e reddito medio dei figli
select padre, avg(f.reddito)from persone f join paternita on figlio = nome group by padre having avg(f.reddito) > 25
![Page 44: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/44.jpg)
23-26/10/2017 Basi di dati - SQL 44
Operatori aggregati e target list• un’interrogazione scorretta:
select nome, max(reddito)from persone
• di chi sarebbe il nome? La target list deve essere omogenea
select min(eta), avg(reddito)from persone
![Page 45: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/45.jpg)
Viste
CREATE VIEW AS SELECT …
anche (non in tutti i sistemi)
CREATE VIEW ASSELECT …UNIONSELECT …
Vedere esempi svolti il 1/11/2016
23-26/10/2017 Basi di dati - SQL 45
![Page 46: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/46.jpg)
23-26/10/2017 Basi di dati - SQL 46
Interrogazioni nidificate(nested query o subquery)
• Varie forme di nidificazione• nella WHERE• nella FROM• nella SELECT
• Coerente con i tipi• anche Booleano (EXISTS)
![Page 47: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/47.jpg)
Nella WHERE
• sulla base di dati (usata negli esercizi del 24/10/2016)
• L'esame con il voto più basso in assolutoselect e.*from esami ewhere e.voto = (select min(voto)
from esami)
23-26/10/2017 Basi di dati - SQL 47
![Page 48: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/48.jpg)
Correlated subquery
• Per ogni materia, lo studente che ha preso il voto più basso
select e.*from esami ewhere e.voto = (select min(voto)
from esamiwhere materia = e.materia)
• L'interrogazione interna viene eseguita una volta per ciascuna ennupla della FROM esterna
23-26/10/2017 Basi di dati - SQL 48
![Page 49: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/49.jpg)
Nella FROM
• Per ogni materia, l'esame con il voto più basso
select e.*from esami e join
(select materia, min(voto) as votominfrom esamigroup by materia) m
on e.materia = m.materiawhere e.voto = m.votomin
23-26/10/2017 Basi di dati - SQL 49
![Page 50: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/50.jpg)
Simile, senza JOIN esplicito
• Per ogni materia, l'esame con il voto più basso
select e.*from esami e join
(select materia, min(voto) as votominfrom esamigroup by materia) m
on e.materia = m.materiawhere e.voto = m.votomin
23-26/10/2017 Basi di dati - SQL 50
![Page 51: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/51.jpg)
Nella FROM
• Per ogni materia, lo studente con il voto più basso
select e.*, s.cognome, s.nomefrom (esami e join
(select materia, min(voto) as votomin from esami group by materia) m on e.materia = m.materia) join studenti s
on e.studente = s.matricolawhere e.voto = m.votomin
23-26/10/2017 Basi di dati - SQL 51
![Page 52: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/52.jpg)
Ancora nella FROM
• Tutti gli esami, con il voto più basso nella stessa materia
select e.*, m.votominfrom esami e join
(select materia, min(voto) as votomin from esami group by materia) m
on e.materia = m.materia
23-26/10/2017 Basi di dati - SQL 52
![Page 53: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/53.jpg)
• Più complessa (per curiosità, non la scriverei mai così):• La materia con il voto medio più alto
23-26/10/2017 Basi di dati - SQL 53
![Page 54: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/54.jpg)
select materia, votoMedio as votoMedioMaxfrom (select materia, avg(voto) as votoMedio
from esami group by materia) as votiMedi, (select max(votoMedio) as mediaMax from (select materia, avg(voto) as votoMedio
from esami group by materia) as votiMedi) as votoMedioMax
where votoMedio = mediaMax
23-26/10/2017 Basi di dati - SQL 54
![Page 55: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/55.jpg)
Altre nidificazioni nella FROM
23-26/10/2017 Basi di dati - SQL 55
![Page 56: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/56.jpg)
23-26/10/2017 Basi di dati - SQL 56
• nome e reddito del padre di Franco
select Nome, Redditofrom Persone, Paternitawhere Nome = Padre and Figlio = 'Franco'
select Nome, Redditofrom Personewhere Nome = ( select Padre
from Paternitawhere Figlio = 'Franco')
![Page 57: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/57.jpg)
23-26/10/2017 Basi di dati - SQL 57
• Nome e reddito dei padri di persone che guadagnano più di 20
select distinct P.Nome, P.Redditofrom Persone P, Paternita, Persone Fwhere P.Nome = Padre and Figlio = F.Nome
and F.Reddito > 20
select Nome, Redditofrom Personewhere Nome in (select Padre
from Paternitawhere Figlio = any (select Nome
from Personewhere Reddito > 20))
notare la distinct
![Page 58: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/58.jpg)
• In questo caso la nidificazione non aiuta molto
23-26/10/2017 Basi di dati - SQL 58
![Page 59: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/59.jpg)
23-26/10/2017 Basi di dati - SQL 59
• Nome e reddito dei padri di persone che guadagnano più di 20
select distinct P.Nome, P.Redditofrom Persone P, Paternita, Persone Fwhere P.Nome = Padre and Figlio = F.Nome
and F.Reddito > 20
select Nome, Redditofrom Personewhere Nome in (select Padre
from Paternita, Persone where Figlio = Nomeand Reddito > 20)
![Page 60: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/60.jpg)
23-26/10/2017 Basi di dati - SQL 60
• Nome e reddito dei padri di persone che guadagnano più di 20, con indicazione del reddito del figlio
select distinct P.Nome, P.Reddito, F.Redditofrom Persone P, Paternita, Persone Fwhere P.Nome = Padre and Figlio = F.Nome
and F.Reddito > 20
select Nome, Reddito, ????from Personewhere Nome in (select Padre
from Paternitawhere Figlio = any (select Nome
from Personewhere Reddito > 20))
![Page 61: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/61.jpg)
EXISTS
• Quantificatore esistenziale• Correlazione fra la sottointerrogazione e le
variabili nel resto
23-26/10/2017 Basi di dati - SQL 61
![Page 62: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/62.jpg)
23-26/10/2017 Basi di dati - SQL 62
• Le persone che hanno almeno un figlio
select * from Persone where exists ( select *
from Paternita where Padre = Nome) or
exists ( select * from Maternita where Madre = Nome)
![Page 63: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/63.jpg)
23-26/10/2017 Basi di dati - SQL 63
• I padri i cui figli guadagnano tutti più di 20
select distinct Padre from Paternita Z where not exists (
select * from Paternita W, Persone where W.Padre = Z.Padre
and W.Figlio = Nome and Reddito <= 20)
![Page 64: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/64.jpg)
23-26/10/2017 Basi di dati - SQL 64
• I padri i cui figli guadagnano tutti più di 20
select distinct Padre from Paternita where not exists (
select * from Persone where Figlio = Nome
and Reddito <= 20)
NO!!! provare ad eseguire per vedere la differenza
![Page 65: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/65.jpg)
23-26/10/2017 Basi di dati - SQL 65
• I padri i cui figli guadagnano tutti più di 20
select distinct Padre from Paternita where not exists (
select * from Persone where Reddito <= 20)
NO!!! provare anche questa
![Page 66: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/66.jpg)
Nella SELECT
• Calcolo di valori con la nidifcazione• Per ogni esame tutti i dati e il voto medio in
quell'esame (correlazione)
23-26/10/2017 Basi di dati - SQL 66
![Page 67: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/67.jpg)
select e.*, (select avg(voto)from esami where materia = e.materia) as votoMedio
from esami e
23-26/10/2017 Basi di dati - SQL 67
![Page 68: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/68.jpg)
23-26/10/2017 Basi di dati - SQL 68
Disgiunzione e unione (ma non sempre)select * from Persone where Reddito > 30
union select F.*from Persone F, Paternita, Persone Pwhere F.Nome = Figlio and Padre = P.Nome
and P.Reddito > 30
select *from Persone Fwhere Reddito > 30 or
exists (select *from Paternita, Persone Pwhere F.Nome = Figlio and Padre = P.Nome
and P.Reddito > 30)
![Page 69: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/69.jpg)
23-26/10/2017 Basi di dati - SQL 69
Differenza e nidificazione
select Nome from Impiegatoexceptselect Cognome as Nome from Impiegato
select Nomefrom Impiegato Iwhere not exists (select *
from Impiegatowhere Cognome = I.Nome)
![Page 70: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/70.jpg)
23-26/10/2017 Basi di dati - SQL 70
Operazioni di aggiornamento
![Page 71: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/71.jpg)
23-26/10/2017 Basi di dati - SQL 71
INSERT INTO Persone VALUES ('Mario',25,52)
INSERT INTO Persone(Nome, Reddito, Eta) VALUES('Pino’,52,23)
INSERT INTO Persone(Nome, Reddito) VALUES('Lino',55)
INSERT INTO Persone ( Nome )SELECT PadreFROM PaternitaWHERE Padre NOT IN (SELECT Nome
FROM Persone)
![Page 72: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/72.jpg)
23-26/10/2017 Basi di dati - SQL 72
Eliminazione di ennuple
DELETE FROM Tabella [ WHERE Condizione ]
![Page 73: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/73.jpg)
23-26/10/2017 Basi di dati - SQL 73
DELETE FROM PersoneWHERE Eta < 35
DELETE FROM PaternitaWHERE Figlio NOT in ( SELECT Nome
FROM Persone)
DELETE FROM Paternita
![Page 74: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/74.jpg)
23-26/10/2017 Basi di dati - SQL 74
Modifica di ennuple
UPDATE NomeTabellaSET Attributo = < Espressione |
SELECT … | NULL | DEFAULT >
[ WHERE Condizione ]
![Page 75: BD-04-2017 esempi 20171023-1106 - Roma Tre Universityatzeni/didattica/BDN/20172018/BD-04...•A lezione utilizziamo PostgresSQL 23-26/10/2017 Basi di dati -SQL 2 23-26/10/2017 Basi](https://reader035.vdocuments.mx/reader035/viewer/2022070223/613de9832809574f586e4409/html5/thumbnails/75.jpg)
23-26/10/2017 Basi di dati - SQL 75
UPDATE Persone SET Reddito = 45WHERE Nome = 'Piero'
UPDATE Persone SET Reddito = Reddito * 1.1WHERE Eta < 30