il linguaggio sql. obiettivi conoscere levoluzione del linguaggio sql saper definire dati, domini e...

49
Il linguaggio SQL

Upload: lotterio-piccolo

Post on 01-May-2015

224 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

Il linguaggio SQL

Page 2: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

Obiettivi

• Conoscere l’evoluzione del linguaggio SQL• Saper definire dati, domini e vincoli ed essere in

grado di recuperare dati dal database• Conoscere le funzioni di aggregazione• Sapere ordinare e raggruppare i dati• Saper effettuare unioni, intersezioni e differenze• Saper eseguire interrogazioni nidificate• Saper aggiornare i dati, inserendo, modificando ed

eliminando quelli esistenti• Utilizzare SQL all’interno di altri linguaggi

Page 3: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

L’evoluzione del linguaggio

• SQL è un linguaggio standard per l’interazione con i database relazionali.

• Le origini di SQL si trovano in un documento del 1970 realizzato da Edgar Codd, “A Relational Model of Data of Large Shared Data Banks”.

• Primo standard SQL-86 pubblicato da ANSI e ratificato da ISO nel 1987 (ANSI e ISO sono due organismi internazionali che si occupano della standardizzazione delle tecnologie).

• SQL-92 (SQL 2) è lo standard a cui fanno riferimento la maggior parte dei DBMS.

• L’evoluzione del linguaggio ha portato a due ulteriori versioni: SQL:1999 e SQL:2003.

• Il primo ha incluso funzioni orientate agli oggetti, ritenute tuttavia controverse e quindi non completamente supportate; il secondo ha esteso il supporto alla tecnologia XML.

Page 4: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

Le funzionalità di SQL

• DDL (Data Definition Language, linguaggio di definizione dei dati).– Consente di descrivere la struttura delle tabelle e di tutti gli

elementi di supporto (come indici, vincoli, trigger, viste ecc.). – Viene utilizzato per realizzare lo schema logico e lo schema fisico

del database.• DML (Data Manipulation Language, linguaggio per la

manipolazione dei dati). – Operazioni di inserimento, modifica e cancellazione dei dati.

• DCL (Data Control Language, linguaggio di controllo dei dati).– Limiti sui dati (permessi di accesso, vincoli di integrità).

• QL (Query Language, linguaggio di interrogazione)– Interrogare il database al fine di individuare i dati che

corrispondono ai parametri di ricerca dell’utente.

Page 5: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

L’utilizzo di SQL

• Interattivo – L’utente utilizza un programma software, in genere fornito

con il DBMS, in cui introdurre comandi SQL che vengono inviati al DBMS.

• All’interno di applicazioni software– L’ utente utilizza applicazioni che sono approntate da

sviluppatori che realizzano i comandi SQL necessari per attivare le funzionalità desiderate.

– I comandi possono essere poi collegati nel programma in due modalità differenti:

• “ospitati” nel codice del software e inviati al DBMS all’occorrenza.• memorizzati all’interno del DBMS e quindi richiamati dal

programma.

Page 6: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

I tipi di dato

Page 7: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

Gli operatori

Page 8: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

DDL

Data Definition Language

Page 9: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

Creazione di una tabella

Page 10: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

Modifica di una tabella

Page 11: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

Eliminazione di una tabella

• RESTRICT indica al database di impedire la cancellazione della tabella se questa contiene dati che sono referenziati da altre tabelle collegate. In questo modo, si evita che la base dati assuma contenuti inconsistenti.

• CASCADE indica al database di cancellare automaticamente tutte le tabelle collegate a questa mediante vincoli referenziali.

• SET NULL indica di impostare a NULL tutti i valori delle chiavi interessate.

Page 12: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

Domini

• SQL offre la possibilità di definire nuovi tipi di dato (domini)

• CREATE DOMAIN <NomeDominio> [AS] <Tipo> [CHECK(<Condizione>)];– NomeDominio è il nome del nuovo tipo di dato;– Tipo è il tipo di dato di base da cui partire per creare il

dominio;– Condizione indica eventuali condizioni di controllo da

associare al tipo di dato.• CREATE DOMAIN TIPO_COMPUTER AS CHAR(11) CHECK (VALUE IN (‘notebook’,‘desktop’,‘tower’, ‘pda’);

Page 13: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

Vincoli

• I vincoli consentono di specificare controlli sui dati, al fine di assicurare la correttezza e consistenza dell’informazione.

• I vincoli possono essere: – interni (o intrarelazionali) specificano controlli

sulla singola tabella intesa come entità a se stante– di integrità referenziale riguardano i rapporti tra

una tabella e l’altra.

Page 14: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

Vincoli interni

• NOT NULL• VALUE IN• VALUE BETWEEN• PRIMARY KEY

(<ElencoCampi>) indica la chiave primaria della tabella

• UNIQUE(<ElencoCampi>) indica che le colonne elencate sono parte di una chiave candidata

• CHECK(<Condizione>) indica un controllo su un’espressione composta utilizzando i campi della tabella stessa.

Page 15: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

Vincoli di integrità referenziale

• FOREIGN KEY (<ElencoCampi1>) REFERENCES <NomeTabella> (<ElencoCampi2>) dove il primo elenco dei campi indica la chiave esterna che corrisponde alla chiave primaria della tabella NomeTabella come specificata dal secondo elenco di campi.

• L’integrità referenziale viene controllata anche dalle parole chiave RESTRICT, CASCADE e SET NULL, che consentono di controllare la risposta del database a un vincolo.

Page 16: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

RESTRICT, CASCADE, SET NULL

Page 17: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

Un esempio

Page 18: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

QL

Query Language

Page 19: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

SELECT

• Per estrarre informazioni dalla base di dati si utilizza l’istruzione SELECT.

• La sintassi completa dell’istruzione SELECT è complessa perché l’istruzione implementa varie funzionalità.

Page 20: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

SELECT – sintassi base

• DISTINCT per restituire solo righe diverse tra loro.• <CampoXXX> indica il campo da ritornare.• <AliasXXX> indica un nome alternativo per il campo da

restituire.• <TabellaXXX> indica la tabella da cui recuperare i campi.

Page 21: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

SELECT (esempi)

Page 22: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Restrizione

• Nell’istruzione SELECT è possibile limitare la quantità di dati ritornati, individuando solo un sottoinsieme di quelli contenuti nella tabella.

• Questo è possibile grazie alla parola chiave WHERE.

Page 23: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

WHERE (condizione)

• L’espressione <Condizione> indica la condizione che deve essere soddisfatta dai record affinché i dati siano ritornati.

• All’interno di questa espressione è possibile specificare:– nomi dei campi di una qualsiasi delle tabelle

indicate;– operatori di confronto, come =, <>, >, >=, <=, <;– operatori logici come NOT, AND, OR;– l’operatore LIKE;– la parola chiave IS NULL o IS NOT NULL.

Page 24: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

SELECT … WHERE (esempi)

Page 25: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Join di due tabelle

• La parola chiave WHERE può essere utilizzata anche per legare tra loro (JOIN) due o più tabelle, al fine di restituire solo alcune righe delle tabelle collegate.

• Per esempio:

Page 26: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Alias anche per le tabelle

Page 27: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Funzioni di aggregazione

• SQL dispone di alcune modalità per effettuare calcoli sui dati, senza per questo modificare i dati in tabella: il calcolo di espressioni e l’utilizzo di funzioni predefinite.

Page 28: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Un esempio

• MARCA e MODELLO identificano il prodotto.• GIACENZA indica quante unità di prodotto esistono a

magazzino.• LIVELLO_SCORTA indica il numero di unità al di

sotto delle quali non vengono più accettati ordini per quel prodotto.

• LIVELLO_RIORDINO indica il numero di unità al di sotto dei quali viene emesso un ordine di acquisto per aumentare la giacenza.

Page 29: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Calcoli sui campi

Page 30: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Funzioni predefinite

• COUNT([DISTINCT] Campo) conteggia il numero di elementi del campo indicato.

• MIN([DISTINCT] Campo) restituisce il valore minimo del campo indicato.

• MAX([DISTINCT] Campo) restituisce il valore massimo del campo indicato.

• SUM([DISTINCT] Campo) calcola e restituisce la somma dei valori presenti nel campo indicato.

• AVG([DISTINCT] Campo) calcola e restituisce la media aritmetica dei valori presenti nel campo indicato.

Page 31: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Ordinamento

• Il nome del campo viene utilizzato per effettuare l’ordinamento.

• Il modificatore ASC o DESC viene utilizzato per indicare se l’ordinamento è di tipo crescente o decrescente. Di default ascendente.

Page 32: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Raggruppamento

• GROUP BY raggruppa le righe sulla base del valore di uno o più attributi, in genere per effettuare calcoli aggregati su dati omogenei.

• La sintassi completa dell’istruzione SELECT, includendo anche la clausola GROUP BY, è la seguente:

Page 33: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Esempi

Page 34: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

HAVING

• È anche possibile restringere il risultato specificando una condizione che può considerare sia i campi sia il valore di funzioni di aggregazione.

Page 35: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Unione

• SQL consente di unire il risultato di più SELECT “in verticale”.

• Il meccanismo è simile all’accodamento di una seconda lista a una prima, a patto che le due liste abbiano campi omogenei.

Page 36: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Differenza e intersezione

Page 37: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Interrogazioni nidificate

• Talvolta le operazioni di interrogazione si rivelano particolarmente complesse; in questo caso, è necessario utilizzare più istruzioni SELECT al fine di ottenere tutti i dati voluti.

Page 38: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Un esempio

Page 39: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

IN – NOT IN – EXIST

Page 40: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

ANY - ALL

• ANY ritorna vero se il confronto indicato è vero per almeno uno degli elementi identificati dalla query nidificata

• ALL ritorna vero se il confronto indicato è vero per tutti gli elementi individuati dalla query nidificata.

• ANY e ALL sono più potenti di IN, in quanto consentono di utilizzare operatori di confronto >, >=, <= e <

Page 41: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

DML

Data Manipulation Language

Page 42: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Inserimento

• <NomeTabella> è il nome della tabella in cui inserire i dati.• <CampoXXX> è il nome dei campi da valorizzare.• <ValoreXXX> sono i valori da inserire nei campi.• L’elenco dei campi è opzionale. Se non viene specificato, è

necessario fornire valori per tutti i campi presenti nella tabella.

Page 43: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Modifica

• <NomeTabella> è il nome della tabella da modificare.• <CampoXXX> è il nome dei campi da valorizzare.• <ValoreXXX>, sono i valori da inserire nei campi.• <Condizione> è l’espressione che individua un sottoinsieme di

righe per cui deve essere applicata la modifica.• Nell’esempio si azzera la velocità di tutti i processori presenti nella

tabella Processore.

Page 44: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Eliminazione

• <NomeTabella> è il nome della tabella da modificare.

• <Condizione> è l’espressione che individua il sottoinsieme di righe da eliminare.

Page 45: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

SQL come linguaggio ospitato

• Per eseguire comandi SQL da un programma software (come si dice in gergo, per eseguire SQL ospitato) è necessario effettuare alcune operazioni aggiuntive.

• Connessione: per ottenere un oggetto che consentirà di eseguire uno o più comandi SQL. La connessione è necessaria per stabilire con quale database si vuole operare e per fornire dati di autenticazione (in genere utente/password).

• Creazione di un comando SQL: viene creato un oggetto che rappresenta un’istruzione SQL e che viene impostato con uno specifico comando.

• Esecuzione del comando: comporta il passaggio dell’oggetto che rappresenta il comando a quello che rappresenta la connessione, in modo che il comando venga eseguito.

• Iterazione sulla risposta: il risultato di un’istruzione SELECT è una tabella e in genere un programma deve scorrere le righe del risultato per elaborarle.

• Chiusura della risposta: l’oggetto che rappresenta la risposta, una volta utilizzato, deve essere chiuso e rilasciato dalla memoria.

• Chiusura del comando: l’oggetto che rappresenta il comando SQL, una volta utilizzato, deve essere chiuso e rilasciato dalla memoria.

• Chiusura della connessione: l’oggetto che rappresenta la connessione SQL, prima della conclusione del programma, deve essere chiuso e rilasciato dalla memoria.

Page 46: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Schema

Page 47: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Gli errori

• Nel corso di tutte le operazioni con il database è necessario occuparsi della gestione degli errori, le tecniche di gestione dipendono dal linguaggio di programmazione in uso.

• Ciascuna delle operazioni con il database può sollevare un errore, che può essere di comunicazione, di dati o di altra natura.

Page 48: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Esercizi

• Il database Cinema è formato dalle seguenti tabelle:

Page 49: Il linguaggio SQL. Obiettivi Conoscere levoluzione del linguaggio SQL Saper definire dati, domini e vincoli ed essere in grado di recuperare dati dal

© 2007 SEI-Società Editrice Internazionale, Apogeo

Esercizi

1. Modificare in “ITA” la Nazionalità di tutti i registi che hanno nome che termina per “Mario”.2. Recuperare Titolo e Titolo originale di tutti i film di un certo regista.3. Recuperare Titolo e nome del regista di film di genere commedia diretti da registi di Nazionalità “ITA”.4. Recuperare Titolo e Regista dei film che hanno avuto una candidatura all’Oscar per la Regia.5. Recuperare Titolo, Regista e anno dei film che hanno vinto l’Oscar per la Regia.6. Recuperare Nome degli attori che hanno recitato in un certo film.7. Recuperare Titolo e Regista dei film in cui ha recitato un certo attore.8. Recuperare il Titolo dei film candidati ai premi del festival di Venezia in un certo anno.9. Aggiungere il campo at_foto di 30 caratteri alla tabella Attore10. Modifica il campo at_foto in Attore ponendolo uguale ad at_nome+”.jpg”