La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Structured Query Language - SQL un linguaggio di definizione e manipolazione dei dati Esercitazioni del Corso di Sistemi Informativi Marina Mongiello.

Presentazioni simili


Presentazione sul tema: "1 Structured Query Language - SQL un linguaggio di definizione e manipolazione dei dati Esercitazioni del Corso di Sistemi Informativi Marina Mongiello."— Transcript della presentazione:

1 1 Structured Query Language - SQL un linguaggio di definizione e manipolazione dei dati Esercitazioni del Corso di Sistemi Informativi Marina Mongiello

2 2 SQL come standard Varie versioni con successivi miglioramenti: SQL-1 o SQL-89 SQL-2 o SQL-92 (entry, intermediate e full) SQL-3?

3 3 La struttura base della query Linterrogazione è specificata in maniera dichiarativa: si specifica non il modo in cui linterrogazione deve essere eseguita, ma le caratteristiche del risultato che deve fornire. Query semplici : Select AttrExpr [[as] Alias ]{, AttrExpr [[as] Alias ]} From TableName [[as] Alias ]{, TableName [[as] Alias ]} [Where condition ] Le tre parti componenti vengono chiamate target list, from clause e where clause

4 4 Ciascun attributo e tabella può essere ridenominato mediante un alias. Select nome as nome_di _battesimo From Impiegati Where cognome=De Paperis Select * From Impiegati Where cognome=De Paperis * Rappresenta tutti gli attributi delle tabelle presenti nella clausola from, evitando di elencarli Select * From Impiegati Cosa restituisce?? Select * From Impiegati Where cognome=De Paperis AND nome=Pippo Largomento della clausola where si basa su condizioni composte tramite operatori logici da predicati semplici

5 5 Query SQL in ACCESS: In applicazioni sviluppate con ACCESS, le query possono essere create mediante la griglia di struttura grafica QBE (query by example) mediante la specifica in SQL

6 6

7 7 Esempi di query in SQL Di seguito riportiamo alcuni esempi di query in linguaggio SQL facendo riferimento al database di esempio northwind presente nellapplicazione Microsoft Access di cui riportiamo il diagramma delle relazioni

8 8

9 9 Esempio 1 Query di Selezione: Si vuole determinare il nome e il cognome degli impiegati nati dopo il 1/1/60 e assunti dopo il 3/5/93 SELECT Impiegati.Cognome, Impiegati.Nome, Impiegati.DataNascita, Impiegati.DataAssunzione FROM Impiegati WHERE (((Impiegati.DataNascita)>1/1/1960) AND ((Impiegati.DataAssunzione)>5/3/1993)); SELECT Impiegati.Cognome, Impiegati.Nome, Impiegati.DataNascita, Impiegati.DataAssunzione FROM Impiegati WHERE (((Impiegati.DataNascita)>1/1/1960) AND ((Impiegati.DataAssunzione)>5/3/1993));

10 10 Griglia di struttura corrispondente allesempio 1

11 11 Codice SQL corrispondente allesempio 1

12 12 Operatori aggregati In SQL è possibile utilizzare operatori per valutare delle proprietà su insiemi di tuple count ( ) ( [ distinct | all ] ListaAttributi ) Corrispondono alla somma, massimo, minimo, media Effettua unoperazione di conteggio Distinct elimina i duplicati All trascura solo i valori nulli

13 13 Esempio 2 Query con operatori aggregati Determinare il numero di prodotti disponibili SELECT Count(Prodotti.IDProdotto) AS ConteggioDiIDProdotto FROM Prodotti;

14 14 Query con raggruppamento E possibile dividere la tabella risultante da una query con operatori aggregati in sottoinsiemi, raggruppando le righe che contengono gli stessi valori per un insieme di attributi. SELECT count(*) AS nomeAlias FROM nomeTabella group by nomeAttributo Operatore di raggruppamento

15 15 Esempio 3 Query con raggruppamento SELECT Prodotti.NomeProdotto, Avg(Prodotti.PrezzoUnitario) AS MediaDiPrezzoUnitario FROM Prodotti GROUP BY Prodotti.NomeProdotto HAVING (((Avg(Prodotti.PrezzoUnitario))>100)); Si vogliono determinare i prodotti con prezzo mediamente maggiore di 100

16 16 Esempio 4 Query con raggruppamento SELECT Prodotti.IDFornitore, Prodotti.QuantitàOrdinata, Avg(Prodotti.Scorte) AS MediaDiScorte FROM Prodotti GROUP BY Prodotti.IDFornitore, Prodotti.QuantitàOrdinata HAVING (((Prodotti.QuantitàOrdinata)<10)); Determinare i fornitori a cui sia stata ordinata merce in quantità minore di 10 pezzi

17 17 Tipi di Join Join interno: produce un risultato nel quale le righe sono tutte e sole quelle ottenibili dalle righe delle due tabelle di origine, in cui i valori delle colonne in comune sono uguali Join esterno: esterno sinistro ( rispettivamente destro): include tutti i record della tabella di sinistra (rispettivamente di destra) anche se non esistono valori corrispondenti ai record nella tabella di destra (rispettivamente di sinistra)

18 18 E possibile determinare il tipo di join esterno dalle proprietà del join

19 19 Esempio 5 Query di Selezione Si vuole determinare il prezzo massimo dei prodotti forniti dalla società Tokyo traders. SELECT Max([PrezzoUnitario]) AS Espr1 FROM Fornitori INNER JOIN Prodotti ON Fornitori.IDFornitore = Prodotti.IDFornitore WHERE (((Fornitori.NomeSocietà)="Tokyo Traders"));

20 20 Query nidificate Largomento della clausola where puo essere a sua volta il risultato dellesecuzione di una interrogazione. Si assume che lespressione che compare nel confronto sia rappresentata dal nome di un attributo E possibile in tal caso usare gli operatori di confronto =,,>=,<=.

21 21 Esempio 6 Query nidificate SELECT Prodotti.NomeProdotto, Prodotti.PrezzoUnitario FROM Prodotti WHERE (((Prodotti.PrezzoUnitario)>(SELECT AVG([PrezzoUnitario]) From Prodotti))) ORDER BY Prodotti.PrezzoUnitario DESC; Determinare i prodotti al di sopra del prezzo medio

22 22 Query di inserimento Possono essere inserite singole righe allinterno delle tabelle: insert into Nometabella [Lista Attributi] Oppure insiemi di righe come risultato di una precedente selezione

23 23 Esempi 7,8: Inserimento di righe INSERT INTO Prodotti ( NomeProdotto, PrezzoUnitario ) SELECT Prodotti.IDCategoria, Prodotti.PrezzoUnitario FROM Prodotti WHERE (((Prodotti.IDCategoria)=1) AND ((Prodotti.PrezzoUnitario)>10)); INSERT INTO Prodotti ( NomeProdotto, PrezzoUnitario ) values (NuovoProdotto,10)

24 24 Aggiornamento di righe E possibile agiornare una o piu righe mediante il comando update che presenta la seguente sintassi: update NomeTabella set Attributo = {,Attributo =

25 25 Esempio 9 Aggiornamento di righe UPDATE Prodotti SET Prodotti.PrezzoUnitario = 20 WHERE (((Prodotti.PrezzoUnitario)=0));

26 26 Cancellazione di righe La cancellazione di righe dalle tabella è effettuata dal comando delete, la cui sintassi è la seguente: delete from NomeTabella [where condizione]

27 27 Esempio 10 Cancellazione di righe DELETE Prodotti.NomeProdotto, * FROM Prodotti WHERE (((Prodotti.NomeProdotto)=NuovoProdotto"));


Scaricare ppt "1 Structured Query Language - SQL un linguaggio di definizione e manipolazione dei dati Esercitazioni del Corso di Sistemi Informativi Marina Mongiello."

Presentazioni simili


Annunci Google