Docente Tutor: Dott. Gianluigi Roveda - Siti Personali...

25
Informatica per l'Impresa Lezioni di Laboratorio sui Data Base Docente Tutor: Dott. Gianluigi Roveda

Transcript of Docente Tutor: Dott. Gianluigi Roveda - Siti Personali...

Page 1: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

Informatica per l'Impresa

Lezioni di Laboratorio sui Data Base

Docente Tutor: Dott. Gianluigi Roveda

Page 2: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

OBIETTIVO:OBIETTIVO:

Rivedere come attività di laboratorio le query di tipo select scritte in SQL ma con le variazioni nella sintassi adottate da Base (Open Office). Qui vedremo query di tipo SELECT.

MODALITA' DI LAVORO:MODALITA' DI LAVORO:

Ripetere le operazioni effettuate dal docente nella propria postazione (esercizi guidati).

Page 3: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

QUERY di SELEZIONEQUERY di SELEZIONESELECT *

FROM <NOME TABELLA>

WHERE <CONDIZIONE>;

SELECT *

FROM "Studenti"

WHERE "Cognome"='Rossa';

Nota Bene:Nota Bene: 1. i campi sono compresi tra i doppi apici;2. i valori sono compresi tra apici singoli;3. il simbolo “*” indica l'elenco di tutti i campi di una tabella;

Page 4: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

QUERY di PROIEZIONE 1/2QUERY di PROIEZIONE 1/2

SELECT <lista attributi>

FROM <NOME TABELLA>;

SELECT “Matricola”, “Cognome”

FROM "Studenti";

Page 5: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

QUERY di PROIEZIONE 2/2QUERY di PROIEZIONE 2/2

SELECT “Cognome”

FROM "Studenti";

SELECT DISTINCT "Cognome"

FROM "Studenti";

Elimino i doppioni tra le righe!!!

Page 6: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

QUERY di SELEZIONE & PROIEZIONEQUERY di SELEZIONE & PROIEZIONE

SELECT "Matricola", "Nome"

FROM "Studenti"

WHERE "Cognome"='Rossa';

SELECT <lista attributi>

FROM <NOME TABELLA>

WHERE <CONDIZIONE>;

N.B:N.B: il campo coinvolto nella condizione non deve essere necessariamente visualizzato tra i risultati.

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

Page 7: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

RELAZIONI D'ORDINERELAZIONI D'ORDINE

QUERY di SELEZIONE & PROIEZIONEQUERY di SELEZIONE & PROIEZIONE

select *

from "Prodotti"

where "Peso"=12;

select *

from "Prodotti"

where "Peso">=12;select *

from "Prodotti"

where "Peso">12;

RelazioneRelazione SimboloSimbolouguaglianza =

disuguaglianza <>minore <

maggiore >minore o uguale <=

maggiore o uguale >=

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

Page 8: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

RISULTATI ORDINATI DI QUERY 1/3RISULTATI ORDINATI DI QUERY 1/3

Select *

from "Prodotti"

where "Peso">12;

RISULTATI NON ORDINATI

RISULTATI ORDINATI SUL CAMPO PESO IN ORDINE ...

RISULTATI NON ORDINATI

… CRESCENTE … DECRESCENTE

select *from "Prodotti"where "Peso">12order by "Peso" ASC;

Oppureselect *from "Prodotti"where "Peso">12order by "Peso";

select *from "Prodotti"where "Peso">12order by "Peso" DESC;

Page 9: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

RISULTATI DI QUERY ORDINATI 2/3RISULTATI DI QUERY ORDINATI 2/3

select *from "Prodotti"where "Peso">12order by "Costo" ASC;

select *from "Prodotti"where "Peso">12order by "Prodotto" DESC;

Il campo usato per ordinare non è necessariamente coinvolto nelle condizioni

Il campo usato per ordinare non è necessariamente numerico

Il campo usato per ordinare non è necessariamente elencato tra i risultati

select "Prodotto"from "Prodotti"where "Peso">12order by "Peso" DESC;

Page 10: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

RISULTATI DI QUERY ORDINATI 3/3RISULTATI DI QUERY ORDINATI 3/3Oridinare in base a più campi

SELECT *

FROM "Studenti"

order by "Cognome" ASC, "Nome" DESC;

Ordinati in senso crescente

Ordinati in senso decrescente a

parità di cognome

I membri della famiglia Rossa sono ordinati insenso decrescente come da richiesta

Page 11: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

CONDIZIONI COMPOSTE PER QUERY 1/2CONDIZIONI COMPOSTE PER QUERY 1/2

Prodotti con costo compreso tra 10 e 15

select “Prodotto”from "Prodotti"where "Costo"<15 and “Costo”>10;

Prodotti con costomaggiore di 10 e peso minore di 30

select “Prodotto”from "Prodotti"where "Peso"<30 and “Costo”>10;

Prodotti con peso pari a 10 o pari a 12

select “Prodotto”from "Prodotti"where "Peso"=12 or “Peso”=10;

select "Prodotto"from "Prodotti"where not("Peso"=12 or "Peso"=10);

Prodotti con peso diverso da 10 o 12

l'una la negazione dell'altra

OPERATORI LOGICIOPERATORI LOGICIOperatoreOperatore SimboloSimbolocongiunzione anddisgiunzione ornegazione not

Page 12: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

CONDIZIONI COMPOSTE PER QUERY 2/2CONDIZIONI COMPOSTE PER QUERY 2/2altri esempi più complessialtri esempi più complessi

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

select “Prodotto”from "Prodotti"where "Costo"<30 and “Costo”>10 and not(“Costo”=15);

select “Prodotto”from "Prodotti"where ("Costo"<30 and “Costo”>10) or (“Costo”<130 and “Costo”>110);

select “Prodotto”from "Prodotti"Where (“Costo”=30 or “Costo”=15) and (“Peso”=12.20 or “Peso”=18.50);

N.B.:N.B.: il separatore nei numeri reali tra parte intera e parte decimale, se nei valori inseriti il separatore nei numeri reali tra parte intera e parte decimale, se nei valori inseriti nelle tabelle era la virgola, in SQL è il puntonelle tabelle era la virgola, in SQL è il punto

Page 13: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

PER CONDIZIONI COMPLESSE 1/4PER CONDIZIONI COMPLESSE 1/4Valori compresi in intervalliValori compresi in intervalli

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

Prodotti con costo compreso tra 10 e 15

select “Prodotto”from "Prodotti"where "Costo"<15 and “Costo”>10;

select “Prodotto”from "Prodotti"where "Costo" between 10 and 15;

Page 14: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

PER CONDIZIONI COMPLESSE 2/4PER CONDIZIONI COMPLESSE 2/4Valori compresi in insiemiValori compresi in insiemi

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

select *from "Studenti"where "Cognome"='Rossi' or “Cognome”='Rossa';

select *from "Studenti"where "Cognome" in ('Rossi', 'Rossa');

Page 15: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

PER CONDIZIONI COMPLESSE 3/4PER CONDIZIONI COMPLESSE 3/4Valori testuali riconducibili a un patternValori testuali riconducibili a un pattern

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

SIMBOLOSIMBOLO SIGNIFICATISIGNIFICATI

_ Un solo carattere qualsiasi

% Una stringa qualsiasi

Esempio: “S_l%” fa match, ad esempio, con:

Sole, Soleggiare, Salare Ma non fa match con:

Superlativo

Espressioni Regolari

Operatore per verificare il match: LIKE

select “Nome”, “Cognome”from "Studenti"where "Cognome" LIKE 'Ross_';

Page 16: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

PER CONDIZIONI COMPLESSE 4/4PER CONDIZIONI COMPLESSE 4/4I campi vuotiI campi vuoti

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

select “Prodotto”from “Prodotti”where “Costo“<13 or “Costo“ IS NULL;

Campi vuoti

Page 17: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

FUNZIONI DI RAGGRUPAMENTOFUNZIONI DI RAGGRUPAMENTO

count – conta le righe del risultato di una select

sum – somma il valore contenuto nello stesso campo di tutte le righe restituite dalla select avg – media dei valori contenuti nello stesso campo di tutte le righe restituite dalla select

min - valore minimo tra quelli contenuti nello stesso campo di tutte le righe restituite dalla select

max - valore massimo tra quelli contenuti nello stesso campo di tutte le righe restituite dalla select

si applicano solo su un campo

select count(*)from "Prodotti"where "Peso">12

Restituisce il numero di righe di ...count(*)

3

select sum(“Costo”)from "Prodotti"where "Peso">12

Somma i valori nella colonna “Costo”

select min(“Costo”)from "Prodotti"where "Peso">12

Determina il valore più piccolo traquelli della colonna “Costo”

sum(“Costo”)30,60

min(“Costo”)11,00

Page 18: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

RAGGRUPPAMENTO 1/3RAGGRUPPAMENTO 1/3

select "Facoltà"from "cdl"group by "Facoltà";

Nella lista degli attributi solo campi che hanno lo stesso valore per ogni

elemento dello stesso gruppo

select "Facoltà", count(*)from "cdl"group by "Facoltà";

Determina dei gruppi in base a un campo(nell'esempio “Facoltà”)

select "Facoltà", min(“Codice”)from "cdl"group by "Facoltà";

Numero di elementi di ogni gruppo (ovvero numero di cdl per ogni facoltà)

Codice di cdl più basso per ogni gruppo (ovvero per ogni facoltà)

Il parametro del count può essere un qualsiasicampo o anche l'indicatore di tutti i campi

Il parametro delle funzioni min, max, sum e avg deve essere sempre numerico

Ciò a poco senso se non è usato insieme alle funzioni ...

Page 19: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

RAGGRUPPAMENTO 2/3RAGGRUPPAMENTO 2/3RidenominazioneRidenominazione

select "Facoltà", min(“Codice”)from "cdl"group by "Facoltà";

select "Facoltà", min(“Codice”) As Minorefrom "cdl"group by "Facoltà";

RIDENOMINAZIONE

EFFETTO RIDENOMINAZIONE

N.B.: l'etichetta di ridenominazione non è tra apici singoli o doppi.

Page 20: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

RAGGRUPPAMENTO 3/3RAGGRUPPAMENTO 3/3Selezione dei gruppiSelezione dei gruppi

select "Facoltà", min(“Codice”) As Minorefrom "cdl"group by "Facoltà";

select "Facoltà", min("Codice") As Minorefrom "cdl"group by "Facoltà"having min("Codice")>1;

N.B.: non è obbligatorio che il valore calcolato dalla funzione d'aggregazione usato nell'having appaia tra i risultati.

Page 21: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

Join 1/3 Join 1/3 Equi-joinEqui-join

(F.K.)

N.B.: non era un obbligo avere lo stesso nome per la chiaveprimaria in cdl e la chiave esterna in Studentiselect *

from "Studenti", "cdl"where "cdl"."Codice"="Studenti"."Codice";

Page 22: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

Join 2/3 Join 2/3 Gli AliasGli Alias

select *from "Studenti", "cdl"where "cdl"."Codice"="Studenti"."Codice";

select *from "Studenti" As S, "cdl" As Cwhere C."Codice"=S."Codice";

≈ do a Studenti soprannome S

N.B: dando due diversi soprannomi alla stessa tabella posso effettuare un join tra la tabella e se stessa. In questo caso si parla di self-join

Page 23: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

Join 3/3 Join 3/3 Tra più di 2 tabelleTra più di 2 tabelle

Quali studenti frequentano l'Università degli Studi di Bologna ?Quali studenti frequentano l'Università degli Studi di Bologna ?

select S."Nome", S."Cognome"

from "Studenti" As S, "cdl" As C, "Università" As U

where S."Codice"=C."Codice" and C."CodiceUniversità"=U."Codice"

and U.Denominazione='Università degli Studi di Bologna';

join selezione

Page 24: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

SELECT <lista campi>FROM <lista tabelle>[WHERE <Condizione>][GROUP BY <lista campi per raggruppamento>][HAVING <Condizioni di Aggregazione>][ORDER BY <lista coppie campo e verso per l'ordinamento>]

SINTESI SULLA SINTASSI DELLE QUERY DI TIPO SELECT SINTESI SULLA SINTASSI DELLE QUERY DI TIPO SELECT

Page 25: Docente Tutor: Dott. Gianluigi Roveda - Siti Personali ...digidownload.libero.it/net01/lab_info_impresa2.pdf · (esercizi guidati). ... Fondamenti di basi di dati, Zanichelli, ...

Informatica per l'Impresa – Lezioni di Laboratorio sui Data Base

RiferimentiRiferimenti

● A. Albano, G. Ghelli, R. Orsini, Fondamenti di basi di dati, Zanichelli, 2005

● N. Dragoni, Il linguaggio SQL – Interrogazioni, http://www.cs.unibo.it/~gaspari/www/teaching/inf_imp_db3.pdf, 2008

● P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone, Basi di Dati, Modelli e linguaggi di interrogazione, McGraw-Hill, Maggio 2006