SlideShare a Scribd company logo
1 of 28
Download to read offline
Basi di Dati

Interrogazioni in SQL
Basi di Dati – Dove ci troviamo?
                                                 A) Introduzione
                                                     1    2

     B) Prog. Concettuale (ER)                                     C) Modello Relazionale, 
                                                                   Algebra relazionale, SQL

      1   2    3       4       5       6     7                 1       2   3   4   5   6   7

          D) Prog. Logica e                                    E) Tecnologia di un DBMS
          Normalizzazione

           1       2       3       4                               1   2   3   4   5   6


                                           F) Programmazione DB


                                                      1   2

2                                                                                              SQL1
Dichiaratività di SQL
    In SQL l'utente specifica QUALE informazione è di suo 
    interesse ma non COME estrarla dai dati

    Il sistema costruisce una strategia di accesso (QUERY
    OPTIMIZATION)

    È l'aspetto più qualificante delle basi di dati relazionali




3                                                                 SQL1
Struttura di SQL
    Basata sulla composizione di blocchi
      SELECT
      FROM
      WHERE


    Ogni blocco ha il potere espressivo di una qualunque 
    combinazione di selezioni, proiezioni e join




4                                                           SQL1
Esempio: gestione degli esami universitari 
studente

MATR       NOME       CITTA’      C-DIP
123        Carlo      Bologna     Inf
415        Paola      Torino      Inf
702        Antonio    Roma        Log
esame                                        corso
MATR        COD- DATA             VOTO       COD-  TITOLO        DOCENTE
           CORSO                             CORSO
123          1       2004-09-07         30      1    matematica Barozzi
123          2       2005-01-08         28      2    informatica Natali
702          2       2004-09-07         20


 5                                                                   SQL1
Interrogazioni semplici

                       MATR NOME        CITTA’     C-DIP
 SELECT *
                       123   Carlo      Bologna    Inf
 FROM STUDENTE
                       415   Paola      Torino     Inf
                       702   Antonio    Roma       Log


SELECT *
FROM STUDENTE         MATR   NOME      CITTA’     C-DIP
WHERE C-DIP = 'Log'   702    Antonio   Roma       Log




 6                                                  SQL1
Sintassi nella clausola SELECT 
    SELECT *

    SELECT NOME, CITTÀ 

    SELECT DISTINCT  CITTÀ

    SELECT CITTÀ AS LUOGO‐DI‐RESIDENZA

    SELECT REDDITO‐CATASTALE * 0.05 
      AS TASSA‐ICI

    SELECT  SUM (SALARIO)
7                                        SQL1
Sintassi della clausola FROM
    FROM STUDENTE

    FROM STUDENTE AS X 

    FROM STUDENTE   X

    FROM STUDENTE, ESAME 

    FROM STUDENTE JOIN ESAME 
     ON STUDENTE.MATR=ESAME.MATR

8                                  SQL1
Sintassi del predicato di selezione 

Espressione booleana di predicati semplici

     operazioni booleane :         comparatore : 
       AND (P1 AND P2)               =, !=, <, <=, >, >=
       OR (P1 OR P2) 
       NOT (NOT P1)
                                   termine : 
     predicati semplici :            costante, attributo
       TRUE, FALSE                   espressione aritmetica di 
       termine comparatore           costanti e attributi
       termine

 9                                                            SQL1
Sintassi della clausola WHERE
 Espressione Booleana di predicati semplici (come in 
 algebra)

 Alcuni predicati aggiuntivi:
     BETWEEN:
       DATA BETWEEN 1997‐01‐01 AND 2006‐12‐31
     LIKE: 
       C‐DIP LIKE 'log%'
       TARGA LIKE 'MI_777_8%'




10                                                      SQL1
Sintassi della clausola WHERE
 WHERE NOME LIKE ‘B%’
     BOFFI
     BUCCHI
     BIANCHI
     BIFFI
     BONFATTI

 WHERE NOME LIKE ‘BI%’
     BIANCHI
     BIFFI

 Operatori aritmetici nel WHERE:
     WHERE SALARIO + STRAORD >18
     WHERE STRAORD + 5 > SALARIO

11                                 SQL1
Selezione 
SELECT *
FROM STUDENTE
WHERE NOME='Paola‘

 Il risultato è una tabella (priva di nome) con schema: 
     lo stesso schema di STUDENTE
 istanze :  
     le tuple di STUDENTE che soddisfano il predicato di selezione

           MATR NOME CITTA’ C-DIP
           415        Paola       Torino      Inf
12                                                               SQL1
Esempio di selezione
SELECT *
FROM STUDENTE
WHERE  (CITTÀ='Torino') OR  
((CITTÀ='Roma') AND NOT (C‐DIP='log'))


      MATR NOME          CITTÀ      C-DIP
      123     Carlo      Bologna    Inf
      415     Paola      Torino     Inf
      702     Antonio Roma          Log


 13                                         SQL1
Gestione duplicati (proiezione)


SELECT                      SELECT C-DIP
DISTINCT C-DIP              FROM STUDENTE
FROM STUDENTE
                                  C-DIP
      C-DIP
                                  Inf
      Inf
                                  Inf
      Log
                                  Log


14                                          SQL1
Valori nulli 

SELECT *
FROM STUDENTE
WHERE CITTÀ  IS  [NOT]  NULL

  Attenzione : 
      se CITTÀ ha valore NULL il risultato per (CITTÀ = 'Milano') ha 
      valore 'UNKNOWN' 




 15                                                                     SQL1
Composizione di predicati con valore nullo
Logica a tre valori (V,F,U)
                               P=
                               (CITTÀ IS NOT NULL)
V AND U = U
V OR U = V                     AND (C-DIP LIKE '%Inf')

                              CITTA’ C-DIP   P   TUPLA
F AND U = F                                      SELEZ.
F OR U = U                    Milano Inf     V   si
                              Milano NULL    U   no
NOT U = U
                              NULL   Inf     F   no
                              Milano Log     F   no

 16                                                   SQL1
JOIN su due tabelle
SELECT NOME
FROM STUDENTE, ESAME
WHERE  STUDENTE.MATR = ESAME.MATR
AND C‐DIP LIKE’In%’ AND VOTO = 30
                                       NOME
Variante sintattica:
                                       Carlo
SELECT NOME
FROM STUDENTE JOIN ESAME
  ON STUDENTE.MATR = ESAME.MATR
WHERE C‐DIP LIKE ‘In%' AND VOTO = 30

 17                                            SQL1
Join con tre tabelle
SELECT NOME
FROM STUDENTE, ESAME, CORSO
WHERE  STUDENTE.MATR = ESAME.MATR
 AND CORSO.COD‐CORSO = ESAME.COD‐CORSO
 AND TITOLO LIKE ‘info%’ AND VOTO < 24




                             NOME
                             Antonio

18                                       SQL1
Interrogazioni con variabili relazionali
       Es: chi sono i dipendenti “non‐pendolari”?
                                                      impiegato
 MATR NOME              CITTÀ   SALARIO    MATR-MGR
 1         Piero        BO      1500 €     2
 2         Giorgio      MO      2000 €     4
 3         Giovanni     FE      1000 €     2
 ….        …..          ….      ….         ...
                                                    dipartimento

DNO        NOME                 CITTÀ      MATR-MGR
1          AMMINISTRAZIONE      BO         2
2          SPEDIZIONI           FE         7
...        …..                  ...        ….
      19                                                      SQL1
Variabili relazionali
        SELECT X.NOME
        FROM IMPIEGATO AS X, DIPARTIMENTO AS Y
        WHERE X.MATR-MGR = Y.MATR_MGR
         AND Y.CITTÀ = X.CITTÀ

      X.NOME
      Piero
                        AND Y.CITTÀ != X.CITTÀ


                                   X.NOME
                                   Giovanni

 20                                              SQL1
Variabili relazionali (self‐join) 
  Es: Chi sono i dipendenti di Giorgio?

SELECT  X.NOME
FROM IMPIEGATO AS X, IMPIEGATO AS Y
WHERE  X.MATR‐MGR = Y.MATR
 AND Y.NOME = ‘Giorgio’

                      X.NOME
                      Piero
                      Giovanni

 21                                       SQL1
Blocchi SQL per la modifica  
 Tre operazioni elementari:
     Cancellazione: DELETE
     inserimento:  INSERT 
      modifica: UPDATE


 Cancellazione
     DELETE FROM STUDENTE WHERE MATR = '678678'




22                                                SQL1
Inserimento
INSERT INTO STUDENTE
VALUES 
('456878', 'Giorgio Rossi', 'Bologna', 'Logistica e Produzione') 

INSERT INTO BOLOGNESI
      (     SELECT *
            FROM STUDENTE
            WHERE CITTÀ = 'Bologna‘
      )


  23                                                          SQL1
Modifica
UPDATE ESAME
SET VOTO = 30
WHERE DATA = 2004‐04‐01

UPDATE ESAME
SET VOTO = VOTO + 1
WHERE MATR = '787989'




24                        SQL1
Esercizi
  Dato un DB per la gestione del personale esprimere in SQL le 
  interrogazioni seguenti:
      in quali tipi di progetti lavora Giovanni?
      chi è il manager di Piero?
      in quali progetti lavora Piero?
      quali impiegati lavorano nel progetto “IDEA”?
      quali impiegati lavorano al 100% del loro tempo nel progetto 
      “WIDE”?

  E le modifiche:
      inserire la tupla <4,Luca,2004‐01‐01,2M,1>
      modificare il salario di Piero in 3000€
      aumentare il salario di Giorgio del 5%
      cancellare i dati di Giovanni


 25                                                                   SQL1
Esempio : gestione personale 
impiegato

MATR    NOME      DATA-ASS     SALARIO       MATR-MGR
1       Piero     2002-01-01   1500 €        2
2       Giorgio   2004-01-01   2000 €        null
3       Giovanni 2003-07-01    1000 €        2

assegnamento                      progetto
MATR NUM-PROG PERC                NUM-PROG TITOLO TIPO
1       3           50            3                 Idea   Esprit
1       4           50            4                 Wide   Esprit
2       3           100
3       4           100

 26                                                             SQL1
Esercizi  
• in quali tipi di progetti lavora Giovanni?
SELECT TIPO
FROM IMPIEGATO AS I,
      ASSEGNAMENTO AS A,
      PROGETTO AS P
WHERE I.MATR=A.MATR
                                               TIPO
   AND A.NUM-PROG=P.NUM-PROG
   AND NOME='Giovanni'
                                               Esprit



• chi è il manager di Piero?                   NOME
SELECT Y.NOME
 FROM IMPIEGATO AS X, IMPIEGATO AS Y           Giorgio
 WHERE X.MATR-MGR=Y.MATR
   AND X.NOME='Piero'
   27                                                   SQL1
Esercizi  
• modificare il salario di Piero in 3000 €
UPDATE IMPIEGATO
SET SALARIO = 3000
WHERE NOME='Piero'



• aumentare il salario di Giorgio del 5%
 UPDATE IMPIEGATO
 SET SALARIO = SALARIO * 1.05
 WHERE NOME='Giorgio'




  28                                         SQL1

More Related Content

Similar to C4 Sql1 (6)

C3 Ddl1
C3 Ddl1C3 Ddl1
C3 Ddl1
 
C6 Sql2
C6 Sql2C6 Sql2
C6 Sql2
 
MySQL
MySQLMySQL
MySQL
 
C6es
C6esC6es
C6es
 
C2 Ling Interrog
C2 Ling InterrogC2 Ling Interrog
C2 Ling Interrog
 
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
 

More from Majong DevJfu

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA CloudMajong DevJfu
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processesMajong DevJfu
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product lineMajong DevJfu
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformationMajong DevJfu
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven ArchitectureMajong DevJfu
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture PortfolioMajong DevJfu
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural stylesMajong DevJfu
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architectureMajong DevJfu
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a productMajong DevJfu
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural stylesMajong DevJfu
 

More from Majong DevJfu (20)

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product line
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
 
Uml3
Uml3Uml3
Uml3
 
Uml2
Uml2Uml2
Uml2
 
6
66
6
 
5
55
5
 
4 (uml basic)
4 (uml basic)4 (uml basic)
4 (uml basic)
 
3
33
3
 
2
22
2
 
1
11
1
 
Tmd template-sand
Tmd template-sandTmd template-sand
Tmd template-sand
 
26 standards
26 standards26 standards
26 standards
 

C4 Sql1