Sei sulla pagina 1di 20

1

Il linguaggio SQL: DML di base


SistemiInformativiT
Versioneelettronica:04.2.SQL.DMLbase.pdf
SQL: DML di base Sistemi Informativi T 2
Data Manipulation Language (DML)
LeistruzionidelDMLdiSQLsono
SELECT esegueinterrogazioni(query)sulDB
INSERT inseriscenuovetuplenelDB
DELETE cancellatupledalDB
UPDATE modificatupledelDB
NB: InambitoDBMS(equindinellamanualistica)siparlaspessodi:
TABLE, intesa come sinonimo di relazione (ma c qualche differenza)
ROW, sinonimo di tupla
COLUMN, sinonimo di attributo
2
SQL: DML di base Sistemi Informativi T 3
DB di riferimento per gli esempi
Universit
lucia78@cs.ucsd.edu
mverdi@mv.com
anna.rossi@yahoo.it
gbianchi@alma.unibo.it
Email DataNascita Cognome Nome
15/02/1978 Lucia Neri 42132
20/09/1979 Marco Verdi 39654
13/04/1978 Anna Rossi 35467
21/06/1978 Giorgio Bianchi 29323
Matricola
2
1
1
Anno Titolo Docente
Castani SistemiInformativi 913
Neri Analisi 729
Biondi Analisi 483
CodCorso
NO
NO
S
NO
Lode CodCorso Voto
30 913 35467
26 913 29323
30 729 39654
28 483 29323
Matricola
Studenti
Corsi
Esami
SQL: DML di base Sistemi Informativi T 4
Listruzione SELECT
listruzionechepermettedieseguireinterrogazioni (query)sulDB
Laformadibase:
SELECT A1,A2,..,Am
FROM R1,R2,..,Rn
WHERE <condizione>
ovvero:
clausola SELECT (cosa si vuole come risultato)
clausola FROM (da dove si prende)
clausola WHERE (che condizioni deve soddisfare)
NB:
Non obbligatorio scrivere le clausole su righe separate
In ogni istruzione SQL si possono inserire commenti,
con -- se su singola riga
oppure /* in questo modo se si tratta
di commenti su pi righe */
3
SQL: DML di base Sistemi Informativi T 5
Estrarre tutti i dati
Laquery:
SELECT *
FROM Corsi
-- la nostra prima query!
restituiscelistanzadellarelazioneCorsi(* significa:tuttigliattributi)
Con SELECT CodCorso, Titolo, Anno
FROM Corsi
otteniamoinformazionisolopergliattributispecificati(proiezione)
2
1
1
Anno Titolo Docente
Castani SistemiInformativi 913
Neri Analisi 729
Biondi Analisi 483
CodCorso
2
1
1
Anno Titolo
SistemiInformativi 913
Analisi 729
Analisi 483
CodCorso
SQL: DML di base Sistemi Informativi T 6
Tabelle vs Relazioni: righe replicate
Setralecolonnesucuisiproiettanoncomparenessunachiave, pu
capitarechesigenerinodellerigheduplicate
Adesempio:
SELECT Titolo
FROM Corsi
La keyword DISTINCT eliminadalrisultatolerigheduplicate,chedi
defaultvengonomantenute:
SELECT DISTINCT Titolo
FROM Corsi
Titolo
SistemiInformativi
Analisi
Analisi
Titolo
SistemiInformativi
Analisi
4
SQL: DML di base Sistemi Informativi T 7
Espressioni nella clausola SELECT
Inoutput anchepossibileottenererisultatidiespressioni
(numeriche,sustringhe,ecc.),chevengonovalutatesulletuple del
risultato
SELECT Matricola, Voto/3
FROM Esami
Sinotiche:
la seconda colonna non ha un nome
il tipo dei valori non cambia (resta un intero)
35467
29323
39654
29323
Matricola
10
8
10
9
SQL: DML di base Sistemi Informativi T 8
Casting
Ilsecondoproblemasirisolveoeseguendouncasting esplicitodiVoto:
SELECT Matricola, CAST(Voto AS Decimal(4,2))/3
FROM Esami
oppureforzandolespressioneafornire
unvalorereale:
SELECT Matricola, Voto/3.0
FROM Esami
acuivolendosipuaggiungereun
castingperlimitareilnumerodicifre
decimali
35467
29323
39654
29323
Matricola
10.00
8.66
10.00
9.33
35467
29323
39654
29323
Matricola
10.000000000000000000
8.666666666666666666
10.000000000000000000
9.333333333333333333
5
SQL: DML di base Sistemi Informativi T 9
Ridenominare le colonne
Perrisolvereilprimoproblemasisfruttalapossibilt cheSQLoffredi
ridenominarelecolonne,caratteristicautileanchequandononsifa
usodiespressionialfinedimigliorarelaleggibilit delrisultato:
SELECT Titolo AS NomeCorso, Docente AS Prof
FROM Corsi
incuila keyword AS puanche
essere omessa
Lesempiovistosipuquindiriscriverecome:
SELECT Matricola,
CAST(Voto AS Decimal(4,2))/3 AS Decimi
FROM Esami
Castani SistemiInformativi
Neri Analisi
Biondi Analisi
Prof NomeCorso
35467
29323
39654
29323
Matricola
10.00
8.66
10.00
9.33
Decimi
SQL: DML di base Sistemi Informativi T 10
Espressioni con stringhe
Perlavorareconlastringhe utileloperatoreCONCAT(esisteanche
unafunzionebinariaanaloga)
SELECT Matricola,
Nome CONCAT CONCAT Cognome
AS NomeCognome
FROM Studenti
E possibileconcatenare(senzabisognodicastingesplicito)numerie
date,efareusodicostanti
SELECT Matricola CONCAT ha preso
CONCAT Voto CONCAT in
CONCAT CodCorso
FROM Esami
42132
39654
35467
29323
Matricola
LuciaNeri
MarcoVerdi
AnnaRossi
GiorgioBianchi
NomeCognome
35467hapreso30in913
29323hapreso26in913
39654hapreso30in729
29323hapreso28in483
6
SQL: DML di base Sistemi Informativi T 11
Filtrare il risultato: la clausola WHERE
Perselezionare lesoletuple diinteressedobbiamoscrivereuna
condizione,chesiavera soloper talituple
SELECT Matricola, Voto, Lode
FROM Esami
WHERE CodCorso = 913
Siottieneinquestomodo:
La clausola FROM dice di prendere la tabella Esami
La clausola WHERE dice di prendere solo le tuple per cui CodCorso = 913
Infine, si estraggono i valori degli attributi nella SELECT list
Equivalea
Matricola,Voto,Lode
(
CodCorso=913
(Esami))
NO
NO
Lode Voto
30 35467
26 29323
Matricola
SQL: DML di base Sistemi Informativi T 12
Clausola WHERE = espressione logica
LaclausolaWHEREconsiste,nelcasogenerale,diunaespressione
logica(operatoriAND,OR,NOT)dipredicati
Una tupla soddisfalaclausolaWHEREseesoloselespressione
risultaverapertaletupla
SELECT *
FROM Esami
WHERE CodCorso = 913
AND Voto > 28
NO
Lode CodCorso Voto
30 913 35467
Matricola
7
SQL: DML di base Sistemi Informativi T 13
Alcuni utili operatori: LIKE
LoperatoreLIKE,mediantelewildcard
_ (corrispondeauncaratterearbitrario)e
% (corrispondeaunastringaarbitraria),
permetteditrovarestringhechesoddisfanouncertopattern
Studentilacuiemail finiscecon.it ehannounab inseconda
posizione
SELECT *
FROM Studenti
WHERE Email LIKE _b%.it
gbianchi@alma.unibo.it
Email DataNascita Cognome Nome
21/06/1978 Giorgio Bianchi 29323
Matricola
gbianchi@alma.unibo.it
SQL: DML di base Sistemi Informativi T 14
Alcuni utili operatori: BETWEEN
LoperatoreBETWEEN permettediesprimerecondizionidi
appartenenzaaunintervallo (estremiinclusi)
Esamiconvototra26e29
SELECT *
FROM Esami
WHERE Voto BETWEEN 26 AND 29
Lostessorisultatosipuottenerescrivendo:
SELECT *
FROM Esami
WHERE Voto >= 26 AND Voto <= 29
NO
NO
Lode CodCorso Voto
26 913 29323
28 483 29323
Matricola
8
SQL: DML di base Sistemi Informativi T 15
Alcuni utili operatori: IN
LoperatoreIN permettediesprimerecondizionidiappartenenzaaun
insiemedivalori
Esamideicorsiconcodici483e729
SELECT *
FROM Esami
WHERE CodCorso IN (483,729)
Lostessorisultatosipuottenerescrivendo:
SELECT *
FROM Esami
WHERE CodCorso = 483
OR CodCorso = 729
S
NO
Lode CodCorso Voto
30 729 39654
28 483 29323
Matricola
SQL: DML di base Sistemi Informativi T 16
Valori nulli
Valequantogi vistoinAlgebraRelazionale,quindidatalarelazione
SELECT
FROM Studenti
WHERE DataNascita > 31-12-1978
restituiscesolo
lucia78@cs.ucsd.edu
mverdi@mv.com
anna.rossi@yahoo.it
gbianchi@alma.unibo.it
Email DataNascita Cognome Nome
15/02/1978 Lucia Neri 42132
20/09/1979 Marco Verdi 39654
NULL Anna Rossi 35467
21/06/1978 Giorgio Bianchi 29323
Matricola
Studenti
mverdi@mv.com
Email DataNascita Cognome Nome
20/09/1979 Marco Verdi 39654
Matricola
9
SQL: DML di base Sistemi Informativi T 17
Verifica di valori nulli
N lacondizioneDataNascita > 31-12-1978 n ilsuocontrario
(DataNascita <= 31-12-1978)sonovere seilvaloredelladatadi
nascita NULL
Perverificareseunvalore NULL sideveusareloperatoreIS
SELECT *
FROM Studenti
WHERE DataNascita IS NULL
NOT (A IS NULL),che veraseilvaloredellattributoAnon NULL,
siscriveancheA IS NOT NULL
anna.rossi@yahoo.it NULL Anna Rossi 35467
Email DataNascita Nome Cognome Matricola
SQL: DML di base Sistemi Informativi T 18
Logica a 3 valori in SQL
Nelcasodiespressionicomplesse,SQLricorrealla logicaa3valori:vero
(V),falso(F)esconosciuto (?)
SELECT Matricola
FROM Studenti
WHERE DataNascita <= 31-12-1978
AND Email LIKE %.edu
WHERE DataNascita <= 31-12-1978
OR Email LIKE %.edu
lucia78@cs.ucsd.edu
mverdi@mv.com
anna.rossi@yahoo.it
NULL
Email DataNascita Cognome Nome
15/02/1978 Lucia Neri 42132
20/09/1979 Marco Verdi 39654
NULL Anna Rossi 35467
21/06/1978 Giorgio Bianchi 29323
Matricola
Studenti
42132
29323
Matricola
42132
Matricola
10
SQL: DML di base Sistemi Informativi T 19
Ordinamento del risultato
Perordinareilrisultatosecondo ivaloridiunaopi colonnesiintroduce
laclausolaORDER BY,eperognicolonnasispecificaselordinamento
pervaloriascendenti (ASC,ildefault)odiscendenti (DESC)
Si ordinasullaprimacolonna,aparit divaloridiquestasullaseconda,e
cos via
SELECT *
FROM Esami
ORDER BY CodCorso, Voto DESC
SELECT *
FROM Esami
ORDER BY Voto DESC, CodCorso
NO
NO
S
NO
Lode CodCorso Voto
26 913 29323
30 913 35467
30 729 39654
28 483 29323
Matricola
S 30 729 39654
NO 30 913 35467
NO
NO
Lode CodCorso Voto
26 913 29323
28 483 29323
Matricola
SQL: DML di base Sistemi Informativi T 20
Interrogazioni su pi tabelle
Aparteilcasodeljoinnaturale(peraltrononsupportatodatuttiiDBMS,
inclusoDB2),percombinareletuplediduerelazioni necessario
scriveredeipredicatidijoin
Ilproblema chesegliattributisucuisifailjoinhannonomiugualic
ambiguit,ades.chesignificaMatricola = Matricola?
Ilcasodijoinconcondizionedijoinasimmetrica illuminante:
Datalarichiestaperogniconcorsotrovailaureatiilcuivotodilaurea
maggioreougualealVotoFinaleminimorichiestoperlammissioneal
concorsostesso,scrivereVotoFinale >= VotoFinale nonsignifica
nulla!
VotoFinale
102 39654
89 29323
Matricola
Laureati
VotoFinale
99 GHJ
88 XYZ
Codice Concorsi
11
SQL: DML di base Sistemi Informativi T 21
Pseudonimi per i nomi delle relazioni
Perreferenziareunacolonna,inSQLsipuanchefareusodella forma
estesa<nome tabella>.<nome colonna>:
SELECT Esami.CodCorso
FROM Esami
WHERE Esami.Matricola = 29323
Inoltre,perabbreviarelascrittura(manonsolo!vediselfjoin)sipu
introdurreunopseudonimo (alias)perlatabella
SELECT E.CodCorso
FROM Esami E -- oppure Esami AS E
WHERE Esami.Matricola = 29323
SQL: DML di base Sistemi Informativi T 22
Interrogazioni con join
Linterrogazione
SELECT S.Cognome,S.Nome,E.*
FROM Esami E, Studenti S
WHERE E.Matricola = S.Matricola
siinterpretacomesegue:
1) FROM: Si genera il prodotto Cartesiano di Esami e Studenti
2) WHERE: Si applicano i predicati della clausola WHERE
3) SELECT: Si estraggono le colonne della SELECT list
E.Matricola = S.Matricola dettopredicatodijoin
35467
29323
39654
29323
Matricola
NO 30 913 Anna Rossi
NO 26 913 Giorgio Bianchi
S 30 729 Marco Verdi
NO 28 483 Giorgio Bianchi
Lode Voto CodCorso Nome Cognome
12
SQL: DML di base Sistemi Informativi T 23
Semantica di SQL ed esecuzione effettiva
Linterpretazione(semantica)diunaquerySQLinterminidiprodotto
Cartesiano,applicazionedeipredicatiequindiproiezione,NON vacerto
intesacomeindicativadelmodoincuiilrisultatovieneprodotto
OgniDBMShainfattilepropriestrategieperdeterminaremodalit
efficientidiesecuzione,sfruttandoregolediequivalenzache
generalizzanoquellevisteperlAlgebraRelazionale
Ad esempio il push-down delle selezioni
Inoltre,adifferenzadellAlgebra,inSQL moltopi laboriosoragionare
suaspettidiequivalenzadelleinterrogazioni
Questoverr fattosolopericasipi importanti,senzaalcunapretesadi
completezza
SQL: DML di base Sistemi Informativi T 24
Altri esempi (1)
inumeridimatricoladeglistudenti
chehannosostenutolesamediAnalisiconilProf.Biondi
SELECT E.Matricola
FROM Corsi C, Esami E
WHERE C.CodCorso = E.CodCorso
AND C.Titolo = Analisi
AND C.Docente = Biondi
2
1
1
Anno Titolo Docente
Castani SistemiInformativi 913
Neri Analisi 729
Biondi Analisi 483
CodCorso
NO
NO
S
NO
Lode CodCorso Voto
30 913 35467
26 913 29323
30 729 39654
28 483 29323
Matricola
2
2
1
1
Anno
Castani
Castani
Neri
Biondi
Docente
SistemiInformativi
SistemiInformativi
Analisi
Analisi
Titolo
NO
NO
S
NO
Lode CodCorso Voto
30 913 35467
26 913 29323
30 729 39654
28 483 29323
Matricola
13
SQL: DML di base Sistemi Informativi T 25
Altri esempi (2)
idocentideicorsidicuilostudente
conmatricola29323hasostenutolesame
SELECT C.Docente
FROM Corsi C, Esami E
WHERE C.CodCorso = E.CodCorso
AND E.Matricola = 29323
2
1
1
Anno Titolo Docente
Castani SistemiInformativi 913
Neri Analisi 729
Biondi Analisi 483
CodCorso
NO
NO
S
NO
Lode CodCorso Voto
30 913 35467
26 913 29323
30 729 39654
28 483 29323
Matricola
2
2
1
1
Anno
Castani
Castani
Neri
Biondi
Docente
SistemiInformativi
SistemiInformativi
Analisi
Analisi
Titolo
NO
NO
S
NO
Lode CodCorso Voto
30 913 35467
26 913 29323
30 729 39654
28 483 29323
Matricola
SQL: DML di base Sistemi Informativi T 26
Pi di 1 tabella = 2,3,4,
Quantofattocon2tabellesigeneralizza alcasodi3opi tabelle:
idocentideicorsidicuilostudente
GiorgioBianchihasostenutolesame
SELECT C.Docente
FROM Corsi C, Esami E, Studenti S
WHERE C.CodCorso = E.CodCorso
AND E.Matricola = S.Matricola
AND S.Cognome = Bianchi
AND S.Nome = Giorgio
14
SQL: DML di base Sistemi Informativi T 27
Self J oin
Lusodialias forzatoquandosideveeseguireunselfjoin
ChisonoinonnidiAnna?
SELECT G1.Genitore AS Nonno
FROM Genitori G1, Genitori G2
WHERE G1.Figlio = G2.Genitore
AND G2.Figlio = Anna
Maria Enzo
Maria Silvia
Luca Giorgio
Anna Maria
Anna
Figlio
Luca
Genitore
Genitori G1
Maria Enzo
Maria Silvia
Luca Giorgio
Anna Maria
Anna
Figlio
Luca
Genitore
Genitori G2
Enzo
Silvia
Giorgio
Nonno
SQL: DML di base Sistemi Informativi T 28
J oin espliciti
Anzich scrivereipredicatidijoin nellaclausolaWHERE possibile
definire una(opi) joined table nella clausolaFROM
SELECT S.*, E.CodCorso, E.Voto, E.Lode
FROM Studenti S JOIN Esami E ON (S.Matricola = E.Matricola)
WHERE E.Voto > 26
incuiJOIN sipuanchescrivereINNERJOIN
Altri tipidijoin esplicitisono:
CROSS JOIN (prodottoCartesiano)
LEFT [OUTER] JOIN
RIGHT [OUTER] JOIN
FULL [OUTER] JOIN
NATURAL JOIN (nonsupportatodaDB2)
15
SQL: DML di base Sistemi Informativi T 29
Outer join
Lasemanticadellouter join inSQL:
PRIMA si applicano TUTTI i predicati del join
POI si completa il risultato con le tuple dangling
Pertanto SELECT *
FROM Studenti S LEFT JOIN Esami E ON
(S.Matricola = E.Matricola) AND (E.Anno = 2)
WHERE E.CodCorso IS NULL
restituiscegli studentisenza esaminelsecondoanno,mentre
SELECT *
FROM Studenti S LEFT JOIN Esami E ON
(S.Matricola = E.Matricola)
WHERE E.CodCorso IS NULL AND (E.Anno = 2)
ovviamentenonrestituiscenulla!
SQL: DML di base Sistemi Informativi T 30
Operatori insiemistici
ListruzioneSELECTnonpermettedieseguireunione,intersezionee
differenzaditabelle
Cichesipufare combinareinmodoopportunoirisultatididue
istruzioniSELECT,medianteglioperatori
UNION, INTERSECT, EXCEPT
IntuttiicasiglielementidelleSELECTlistdevonoaveretipi compatibilie
glistessinomisesivoglionocolonneconunintestazionedefinita
Lordinedeglielementi importante (notazioneposizionale)
Ilrisultato inognicasoprivodiduplicati,permantenerlioccorre
aggiungerelopzioneALL:
UNION ALL, INTERSECT ALL, EXCEPT ALL
16
SQL: DML di base Sistemi Informativi T 31
Operatori insiemistici: esempi (1)
b 3
c 2
b 2
a 2
a 1
a
B
1
A
R S
d 4
c 3
c 2
a 2
b 1
a
B
1
C
SELECT A
FROM R
UNION
SELECT C
FROM S 4
3
2
1
SELECT A
FROM R
UNION
SELECT C AS A
FROM S 4
3
2
1
A
SELECT A,B
FROM R
UNION
SELECT B,C AS A
FROM S
Non corretta!
SELECT B
FROM R
UNION ALL
SELECT B
FROM S
b
d
c
c
a
b
a
c
b
a
a
a
B
SQL: DML di base Sistemi Informativi T 32
Operatori insiemistici: esempi (2)
b 3
c 2
b 2
a 2
a 1
a
B
1
A
R
S
d 4
c 3
c 2
a 2
b 1
a
B
1
C
SELECT B
FROM R
INTERSECT ALL
SELECT B
FROM S c
b
a
a
B
SELECT B
FROM R
INTERSECT
SELECT B
FROM S
c
b
a
B SELECT B
FROM S
EXCEPT
SELECT B
FROM R
d
B
SELECT B
FROM R
EXCEPT ALL
SELECT B
FROM S
b
a
B
17
SQL: DML di base Sistemi Informativi T 33
Istruzioni di aggiornamento dei dati
LeistruzionichepermettonodiaggiornareilDBsono:
INSERT inseriscenuovetuple nelDB
DELETE cancellatuple dalDB
UPDATE modificatuple delDB
INSERT puusareilrisultatodiunaquery
DELETE eUPDATE possonofareusodicondizioni perspecificareletuple
dacancellareomodificare
Inognicasogliaggiornamentiriguardanounasolarelazione
SQL: DML di base Sistemi Informativi T 34
Inserimento di tuple: valori espliciti
Perinserireunaopi tuple bisognaspecificarneivalori,dicendoquale
valorevaassegnatoaqualeattributo
INSERT INTO Corsi(Titolo,CodCorso,Docente,Anno)
VALUES (StoriaAntica,456,Grigi,3),
(StoriaModerna,457,Gialli,2)
Selalistadegliattributivieneomessavalelordineconcuisonostati
definiti
INSERT INTO Corsi
VALUES (456,StoriaAntica,Grigi,3)
Selalistanonincludetuttigliattributi,irestantiassumono valoreNULL
(seammesso)oilvaloredidefault (sespecificato)
INSERT INTO Corsi(CodCorso,Titolo)
VALUES (456,StoriaAntica)
18
SQL: DML di base Sistemi Informativi T 35
Inserimento di tuple: risultato di query
Inalcunicasisirendenecessarioinserireinunatabellaletuple che
risultanodaunaquery
Sipufaredirettamente!Adesempio:
INSERT INTO StudentiSenzaEmail(Matr,Cog,Nom)
SELECT Matricola,Cognome,Nome
FROM Studenti
WHERE Email IS NULL
Glischemidelrisultatoedellatabellaincuisiinserisconoletuple possono
esserediversi,limportante cheitipidellecolonnesianocompatibili
NO
NO
S
NO
Lode Voto
26 29323
30 35467
30 39654
28 29323
Matr
SELECT.. INSERT..
SQL: DML di base Sistemi Informativi T 36
Cancellazione di tuple
ListruzioneDELETE pufareusodiunacondizione perspecificareletuple
dacancellare:
DELETE FROM Corsi -- elimina i corsi di Biondi
WHERE Docente = Biondi
Percancellaretutteletuple (attenzione!):
DELETE FROM Corsi
Chesuccedeselacancellazioneportaaviolareilvincolodiintegrit
referenziale? (ades.:cheaccadeagliesamideicorsidiBiondi?)
19
SQL: DML di base Sistemi Informativi T 37
Modifica di tuple
AnchelistruzioneUPDATE pufareusodiunacondizione perspecificare
letuple damodificareediespressioniperdeterminareinuovivalori
UPDATE Corsi
SET Docente = Bianchi,
Anno = 2
WHERE Docente = Biondi
UPDATE Dipendenti
SET Stipendio = 1.1*Stipendio -- aumento del 10%
WHERE Ruolo = Programmatore
AnchelUPDATEpuportareaviolareilvincolodiintegrit referenziale
SQL: DML di base Sistemi Informativi T 38
Politiche di reazione (1)
Anzich lasciarealprogrammatoreilcompitodigarantirecheafrontedi
cancellazioniemodificheivincolidiintegrit referenzialesianorispettati,
sipossonospecificareopportunepolitichedireazione infasedi
definizionedeglischemi
Inassenzadispecificheopportuneleviolazioninonvengonoammesse.
Equivaleaspecificareesplicitamente:
CREATE TABLE Esami (
Matricola char(5) NOT NULL,
CodCorso int NOT NULL,
...
FOREIGN KEY CodCorso REFERENCES Corsi
ON DELETE NO ACTION -- cancellazioni non permesse
ON UPDATE NO ACTION -- modifiche non permesse
20
SQL: DML di base Sistemi Informativi T 39
Politiche di reazione (2)
Tuttaviasonopossibilipoltichealternative:
DELETE:
ON DELETE CASCADE
vengono cancellate tutte le tuple che referenziano la tupla cancellata, e cos
via ricorsivamente (in cascata)
ON DELETE SET NULL
se ammesso, la foreign key viene resa NULL
UPDATE:
lo standard prevede politiche analoghe a quelle del DELETE, ma non cos DB2
che non ammette modifiche di chiavi referenziate
SQL: DML di base Sistemi Informativi T 40
Riassumiamo:
ListruzioneSELECT consistenellasuaformabasedi3parti:SELECT,
FROM e WHERE
Aquestesiaggiunge ORDERBY,per ordinare ilrisultato(ealtreche
vedremo)
Pertrattareivalorinulli,SQLricorreaunalogicaa3valori (vero, falso e
sconosciuto)

Potrebbero piacerti anche