sql avanzato

Upload: vjexter

Post on 03-Jun-2018

280 views

Category:

Documents


0 download

TRANSCRIPT

  • 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)