of 131
8/12/2019 SQL avanzato
1/131
8/12/2019 SQL avanzato
2/131
8/12/2019 SQL avanzato
3/131
8/12/2019 SQL avanzato
4/131
8/12/2019 SQL avanzato
5/131
8/12/2019 SQL avanzato
6/131
8/12/2019 SQL avanzato
7/131
8/12/2019 SQL avanzato
8/131
8/12/2019 SQL avanzato
9/131
8/12/2019 SQL avanzato
10/131
8/12/2019 SQL avanzato
11/131
8/12/2019 SQL avanzato
12/131
8/12/2019 SQL avanzato
13/131
8/12/2019 SQL avanzato
14/131
8/12/2019 SQL avanzato
15/131
8/12/2019 SQL avanzato
16/131
8/12/2019 SQL avanzato
17/131
8/12/2019 SQL avanzato
18/131
8/12/2019 SQL avanzato
19/131
8/12/2019 SQL avanzato
20/131
8/12/2019 SQL avanzato
21/131
8/12/2019 SQL avanzato
22/131
8/12/2019 SQL avanzato
23/131
8/12/2019 SQL avanzato
24/131
8/12/2019 SQL avanzato
25/131
8/12/2019 SQL avanzato
26/131
8/12/2019 SQL avanzato
27/131
8/12/2019 SQL avanzato
28/131
8/12/2019 SQL avanzato
29/131
8/12/2019 SQL avanzato
30/131
8/12/2019 SQL avanzato
31/131
8/12/2019 SQL avanzato
32/131
8/12/2019 SQL avanzato
33/131
8/12/2019 SQL avanzato
34/131
8/12/2019 SQL avanzato
35/131
8/12/2019 SQL avanzato
36/131
8/12/2019 SQL avanzato
37/131
8/12/2019 SQL avanzato
38/131
8/12/2019 SQL avanzato
39/131
8/12/2019 SQL avanzato
40/131
8/12/2019 SQL avanzato
41/131
8/12/2019 SQL avanzato
42/131
8/12/2019 SQL avanzato
43/131
8/12/2019 SQL avanzato
44/131
8/12/2019 SQL avanzato
45/131
8/12/2019 SQL avanzato
46/131
8/12/2019 SQL avanzato
47/131
8/12/2019 SQL avanzato
48/131
8/12/2019 SQL avanzato
49/131
8/12/2019 SQL avanzato
50/131
8/12/2019 SQL avanzato
51/131
8/12/2019 SQL avanzato
52/131
8/12/2019 SQL avanzato
53/131
8/12/2019 SQL avanzato
54/131
8/12/2019 SQL avanzato
55/131
8/12/2019 SQL avanzato
56/131
8/12/2019 SQL avanzato
57/131
8/12/2019 SQL avanzato
58/131
8/12/2019 SQL avanzato
59/131
8/12/2019 SQL avanzato
60/131
8/12/2019 SQL avanzato
61/131
8/12/2019 SQL avanzato
62/131
8/12/2019 SQL avanzato
63/131
8/12/2019 SQL avanzato
64/131
8/12/2019 SQL avanzato
65/131
8/12/2019 SQL avanzato
66/131
8/12/2019 SQL avanzato
67/131
8/12/2019 SQL avanzato
68/131
8/12/2019 SQL avanzato
69/131
8/12/2019 SQL avanzato
70/131
8/12/2019 SQL avanzato
71/131
8/12/2019 SQL avanzato
72/131
8/12/2019 SQL avanzato
73/131
8/12/2019 SQL avanzato
74/131
8/12/2019 SQL avanzato
75/131
8/12/2019 SQL avanzato
76/131
8/12/2019 SQL avanzato
77/131
8/12/2019 SQL avanzato
78/131
8/12/2019 SQL avanzato
79/131
8/12/2019 SQL avanzato
80/131
8/12/2019 SQL avanzato
81/131
8/12/2019 SQL avanzato
82/131
8/12/2019 SQL avanzato
83/131
8/12/2019 SQL avanzato
84/131
8/12/2019 SQL avanzato
85/131
8/12/2019 SQL avanzato
86/131
8/12/2019 SQL avanzato
87/131
8/12/2019 SQL avanzato
88/131
8/12/2019 SQL avanzato
89/131
8/12/2019 SQL avanzato
90/131
8/12/2019 SQL avanzato
91/131
8/12/2019 SQL avanzato
92/131
8/12/2019 SQL avanzato
93/131
8/12/2019 SQL avanzato
94/131
8/12/2019 SQL avanzato
95/131
8/12/2019 SQL avanzato
96/131
8/12/2019 SQL avanzato
97/131
8/12/2019 SQL avanzato
98/131
8/12/2019 SQL avanzato
99/131
8/12/2019 SQL avanzato
100/131
8/12/2019 SQL avanzato
101/131
8/12/2019 SQL avanzato
102/131
8/12/2019 SQL avanzato
103/131
8/12/2019 SQL avanzato
104/131
8/12/2019 SQL avanzato
105/131
8/12/2019 SQL avanzato
106/131
8/12/2019 SQL avanzato
107/131
8/12/2019 SQL avanzato
108/131
8/12/2019 SQL avanzato
109/131
8/12/2019 SQL avanzato
110/131
8/12/2019 SQL avanzato
111/131
8/12/2019 SQL avanzato
112/131
8/12/2019 SQL avanzato
113/131
8/12/2019 SQL avanzato
114/131
114
Right Outer Join
Outer Join Operators
Left Outer Join Join
Le righe chesoddisfano la
join
Le righe esclusedalla join dellatabella a sx
Le righe esclusedalla join dellatabella a dx
Full outer join
8/12/2019 SQL avanzato
115/131
115
Altro Esempio
Agenti(CodiceAgente,Nome,ZonaSupervisore,Commissione)
Clienti(CodiceCliente,Nome,Citta,Sconto) Ordini(CodiceOrdine,CodiceCliente,CodiceAgente,Articolo,Data,Ammontare)
8/12/2019 SQL avanzato
116/131
116
Esempio di Join On
SELECT Agenti.CodiceAgente,Ordini.Ammontare
FROM Agenti JOIN OrdiniON Agenti.Supervisore =Ordini.CodiceAgente
Codice agente ed ammontare degli ordini deisupervisori
8/12/2019 SQL avanzato
117/131
117
Giunzione Esterna
SELECT Agenti.CodiceAgente,Ordini.Ammontare
FROM Agenti NATURAL LEFT JOINOrdini
Codice agente ed ammontare degli agenti inclusoquelli che non hanno effettuato ordini (avrannoammontare NULL)
Le operazioni
8/12/2019 SQL avanzato
118/131
118
Insiemistici
A UNION B
A INTERSECT B
A MINUS B
Le operazioni
8/12/2019 SQL avanzato
119/131
119
Le operazioniInsiemistici
OpInsiem ::= (UNION | INTERSECT |EXCEPT) [CORRESPONDING [BY (
Attributo {,Attributo}) ] ] Union,Intersect,Except sono , ,-.CORRESPONDING fa proiettare sugliattributi comuni e poi si applica loperatoreinsiemistico. Se ce anche BY si specificanosu quali comuni attributi proiettare
8/12/2019 SQL avanzato
120/131
120
UNIONESELECT *FROM Clienti UNIONCORRESPONDING Agenti
Fornisce tutti i nomi dei clienti e degli agenti.In effetti nei sistemi commercialisarebbe
SELECT Nome FROM Clienti UNION
SELECT Nome FROM Agenti
8/12/2019 SQL avanzato
121/131
121
Formalizziamo
8/12/2019 SQL avanzato
122/131
122
Attributi Attributi ::= * | Espr [[AS] NuovoNome ]{, Espr [[AS] NuovoNome ] }
Espr ::= [Ide.]Attributo | Costante |( Espr ) | [ -] Espr [ Espr] | (SUM |COUNT |AVG | MAX | MIN) (
[DISTINCT] [Ide.] Attributo ) | COUNT( * )
::= ( + | - | * | / )
8/12/2019 SQL avanzato
123/131
123
Esempio
SELECT AVG(Voto) AS Media RossiFROM Esami, Studenti
WHERE Nome = Paolo Rossi AND Esami.Matricola =
Studenti.Matricola
Media dei voti di Paolo Rossi
b ll
8/12/2019 SQL avanzato
124/131
124
Tabelle
Tabelle ::= Tabella [Ide] {, Tabella [Ide]}
Tabella::= Ide | Tabella OpInsiem Tabella | Tabella Giunzione Tabella[USING (Attributo{,Attributo})|ON
Condizione]
E i
8/12/2019 SQL avanzato
125/131
125
Esempi
SELECT Professore
FROM CP,CMV,MNITWHERE CP.Corso = CMV.Corso ANDCMV.Matricola = NMIT.Matricola AND
Nome=Paolo Rossi AND Voto > 27
Sintassi Completa del
8/12/2019 SQL avanzato
126/131
126
S tass Co p eta deSELECT
Select ::= Sottoselect
{(UNION|EXCEPT) Sottoselect}[ORDER BY Attributo[DESC]{, Attributo[DESC]} ]
8/12/2019 SQL avanzato
127/131
C di i
8/12/2019 SQL avanzato
128/131
128
Condizione
Condizione ::= Predicato |
( Condizione ) | NOT Condizione |
Condizione (AND | OR) Condizione
P di
8/12/2019 SQL avanzato
129/131
129
Predicato
Predicato::= Espr [NOT] IN ( SottoSelect ) | Espr [NOT] IN ( Valore {,Valore} ) | Espr opc (Espr | ( SottoSelect ) ) |
Espr IS [NOT] NULL |Espr opc (ANY | ALL) ( SottoSelect )
|[NOT] EXISTS ( SottoSelect ) | Espr [NOT] BETWEEN Espr AND Espr
|Espr [NOT] LIKE Stringa
opc ::= | | | | |
E i i
8/12/2019 SQL avanzato
130/131
130
Espressioni
Espr ::= [Ide.] Attributo |Costante |
( Espr ) | [-] Espr [ opa Espr] |(SUM | COUNT | AVG | MAX | MIN)
( [DISTINCT] [Ide.] Attributo) | COUNT ( * )
opa ::= (+ | - | * | / )
T b ll
8/12/2019 SQL avanzato
131/131
Tabelle
Tabella ::= Ide |Tabella opins Tabella |Tabella giunzione Tabella
[USING ( Attributo {, Attributo } ) | ONCondizione]
giunzione ::= [CROSS|UNION|NATURAL][LEFT!RIGHT|FULL]JOIN
opins ::= (UNION|INTERSECT|EXCEPT)