Linguaggio SQL - itcgiuliocesare.it fileLinguaggio SQL Prof. Giuseppe Tandoi Caratteristiche...

Post on 21-Feb-2019

244 views 3 download

Transcript of Linguaggio SQL - itcgiuliocesare.it fileLinguaggio SQL Prof. Giuseppe Tandoi Caratteristiche...

Linguaggio SQL

Prof. Giuseppe Tandoi

Linguaggio SQL

Prof. Giuseppe Tandoi

Caratteristiche generaliCaratteristiche generali

SQL è uno strumento per

organizzaregestirerecuperare

dati memorizzati in DataBase organizzati su base Relazionale.

Linguaggio SQL

Prof. Giuseppe Tandoi

Caratteristiche generaliCaratteristiche generali

SQL è l'acronimo di

Structured

Query

Language.

SQL è un linguaggio (non procedurale) per interagire con database.

Linguaggio SQL

Prof. Giuseppe Tandoi

Caratteristiche generaliCaratteristiche generali

SQL è un linguaggio standard per chi deve gestire database.

Può essere considerato un

sottolinguaggio di interazione le cui dichiarazioni possono anche essere incluse

in programmi scritti in altro linguaggio (Cobol, Php, ecc.).

Linguaggio SQL

Prof. Giuseppe Tandoi

Caratteristiche generaliCaratteristiche generali

SQL non è

un software

un sistema di gestione di database

un linguaggio di programmazione procedurale

Linguaggio SQL

Prof. Giuseppe Tandoi

Caratteristiche generali - DBMSCaratteristiche generali - DBMS

DBMS = Data Base Management System

Software che controlla il database

consente le operazioni di definizione, manipolazione e estrazione

Linguaggio SQL

Prof. Giuseppe Tandoi

Caratteristiche generali – estrazione informazioniCaratteristiche generali – estrazione informazioni

Processo di estrazione delle informazioni

1. DBMS riceve la richiesta SQL

2. DBMS elabora la richiesta

3. DBMS recupera i dati richiesti

4. DBMS restituisce le informazioni

Il processo di estrazione delle informazioni viene denominato QUERY.

Linguaggio SQL

Prof. Giuseppe Tandoi

Caratteristiche generali - DBMSCaratteristiche generali - DBMS

E' il DBMS che consente interazioni attraverso l'uso del linguaggio SQL.

Linguaggio SQL

Prof. Giuseppe Tandoi

Le istruzioni sono formate dal verbo imperativo e dai parametri e terminano con il punto e virgola ( ; )

Regole generali - formato istruzioneRegole generali - formato istruzione

create table ALUNNI( ID Smallint,

COGNOME char(20),

NOME char(20) ) ;

Linguaggio SQL

Prof. Giuseppe Tandoi

Regole generali – definizione identificatoriRegole generali – definizione identificatori

Gli identificatori, cioè i nomi di Tabelle o di Attributi

- sono costituiti da caratteri, cifre , carattere '_' (UnderScore)

- possono essere lunghi massimo 18 caratteri

- devono iniziare con una lettera

Linguaggio SQL

Prof. Giuseppe Tandoi

Regole generali – definizione identificatoriRegole generali – definizione identificatori

L'identificatore assoluto di un attributo è costituita dalla abituale notazione :

NomeTabella . NomeAttributo

Ordini.DataAlunni.Data_di_Nascita

NomeTabella si può omettere se non vi sono di ambiguità di identificazione.

Linguaggio SQL

Prof. Giuseppe Tandoi

Regole generali – definizione costantiRegole generali – definizione costanti

La costante e' definita attraverso il suo valore

* considerata di tipo numerico intero se il valore non contiene parte frazionaria

* considerata di tipo numerico reale se il valore presenta il punto decimale

separatore tra parte intera e parte frazionaria

* la costante di tipo stringa è racchiusa tra singoli apici ('cost')se la costante contiene un'apice allora deve essere racchiusa tra

doppi apici (“cost”)

La costante NULL rappresenta il concetto di valore non definito o valore non

disponibile incontrato in una colonna.

Linguaggio SQL

Prof. Giuseppe Tandoi

DDL : Data Description Language

Sottoinsieme di istruzioni di SQL che consentono di

* definire nuove tabelle

* modificare la struttura delle tabelle

* rimuovere tabelle

Definizione dei dati - DDLDefinizione dei dati - DDL

Linguaggio SQL

Prof. Giuseppe Tandoi

DDL – tipi standard di datiDDL – tipi standard di dati

BOOLEAN Valore logico True, falseCHARACTER(n) Stringa di lunghezza (n) N da 1 a 15000DATE Data nella forma mm/gg/aaTIME Ora nella forma hh:mmINTEGER(p) Numero intero di precisione P P da 1 a 45SMALLINT Numero intero (16 bit) Da -32768 a +32767INTEGER Numero intero (32 bit) Da -2147483648 a +2147483647DECIMAL(p,s) Numero decimale di p cifre di cui s decimaliREAL Numero reale con mantissa di precisione 7FLOAT Numero reale con mantissa di precisione 15FLOAT(p) Numero reale con mantissa di precisione p

Linguaggio SQL

Prof. Giuseppe Tandoi

CREATE TABLE NomeTabella

( nome attr1

tipo,

nome attr2

tipo,

...

nome attrn

tipo) ;

DDL – definizione nuove tabelleDDL – definizione nuove tabelle

Linguaggio SQL

Prof. Giuseppe Tandoi

DDL – definizione nuove tabelleDDL – definizione nuove tabelle

CREATE TABLE Alunni( Id SMALLINT , Cognome CHAR(20), Nome CHAR(20), Indirizzo CHAR(40), Classe CHAR(10) );

Linguaggio SQL

Prof. Giuseppe Tandoi

DROP TABLE NomeTabella ;

DDL – eliminazione tabellaDDL – eliminazione tabella

Linguaggio SQL

Prof. Giuseppe Tandoi

DDL – eliminazione tabellaDDL – eliminazione tabella

DROP TABLE Alunni;

Linguaggio SQL

Prof. Giuseppe Tandoi

ALTER TABLE NomeTabella

ADD nome attr1

tipo;

DDL – modifica struttura tabella DDL – modifica struttura tabella

ALTER TABLE NomeTabella

DROP nome attr ;

Aggiunta attributo

Rimozione attributo

Linguaggio SQL

Prof. Giuseppe Tandoi

DDL – modifica struttura tabella DDL – modifica struttura tabella

Aggiunta attributo

Rimozione attributo

ALTER TABLE AlunniADD ContattoMSN Char(50);

ALTER TABLE AlunniDROP Classe;

Linguaggio SQL

Prof. Giuseppe Tandoi

CREATE TABLE NomeTabella

( nome attr1

tipo PRIMARY KEY,

nome attr2

tipo UNIQUE,

nome attr3

tipo NOT NULL,

nome attr4

tipo AUTO_INCREMENT,

...

nome attrn

tipo DEFAULT valore) ;

DDL – definizione nuove tabelle - clausoleDDL – definizione nuove tabelle - clausole

Linguaggio SQL

Prof. Giuseppe Tandoi

PRIMARY KEY dichiara quell'attributo come chiave primaria della tabella

UNIQUE rende inammissibili valori uguali

NOT NULL obbliga ad indicare un valore

DEFAULT determina il valore (costante) da attribuire al momento della creazione del record in assenza di indicazione

AUTO_INCREMENT per attributi di tipo numerico; assegna automaticamente il valore incrementando un contatore ad ogni inserimento di record

DDL – definizione nuove tabelle - clausoleDDL – definizione nuove tabelle - clausole

Linguaggio SQL

Prof. Giuseppe Tandoi

DDL – definizione nuove tabelle - clausoleDDL – definizione nuove tabelle - clausole

CREATE TABLE Alunni( Id SMALLINT PRIMARY KEY, Cognome CHAR(20) NOT Null, Nome CHAR(20) NOT Null, Indirizzo CHAR(40), Classe CHAR(10) NOT Null, Citta CHAR(30) DEFAULT 'Bari' );

Linguaggio SQL

Prof. Giuseppe Tandoi

DML : Data Manipulation Language

Sottoinsieme di istruzioni di SQL che consentono di

* inserire nuovi record

* modificare il contenuto dei campi dei record

* cancellare record

Manipolazione dei dati - DMLManipolazione dei dati - DML

Linguaggio SQL

Prof. Giuseppe Tandoi

DML – Inserimento recordDML – Inserimento record

INSERT INTO NomeTabella

(nome attr1, nome attr

2, ... , nome attr

n )

VALUES (val1, val

2, ... , val

n);

Linguaggio SQL

Prof. Giuseppe Tandoi

DML – Inserimento recordDML – Inserimento record

INSERT INTO Alunni(Id, Cognome, Nome, Indirizzo, Classe, Citta)

VALUES (23,'Rossi', 'Mario','Via Roma,12', '', 'Bari' );

Linguaggio SQL

Prof. Giuseppe Tandoi

DML – Modifica recordDML – Modifica record

UPDATE NomeTabella

SET nome attr = valore

WHERE CondizioneDiSelezione;

Linguaggio SQL

Prof. Giuseppe Tandoi

DML – Modifica recordDML – Modifica record

UPDATE Alunni SET Classe = '5BM' WHERE ID = 23;

Linguaggio SQL

Prof. Giuseppe Tandoi

DML – Elimina recordDML – Elimina record

DELETE FROM NomeTabella

WHERE CondizioneDiSelezione;

Linguaggio SQL

Prof. Giuseppe Tandoi

DML – Elimina recordDML – Elimina record

DELETE FROM Alunni WHERE ID = 23;

DELETE FROM Alunni WHERE ID = 23;

DELETE FROM Alunni WHERE Alunni.Classe = '5BM';

Linguaggio SQL

Prof. Giuseppe Tandoi

Query Language – Interrogazione databaseQuery Language – Interrogazione database

L' interrogazione al database:

consente l'estrazione dal database delle informazioni desiderate

produce una nuova tabella attraverso l'attivazione delle operazioni relazionali

Linguaggio SQL

Prof. Giuseppe Tandoi

Query Language – Interrogazione databaseQuery Language – Interrogazione database

Le interrogazioni al database si pongono attraverso il comando

SELECT

La struttura base del comando SELECT è

SELECT colonne

FROM tabella;

Linguaggio SQL

Prof. Giuseppe Tandoi

Query Language – Interrogazione databaseQuery Language – Interrogazione database

DELETE FROM Alunni WHERE ID = 23;

SELECT * FROM Alunni;

Linguaggio SQL

Prof. Giuseppe Tandoi

Query Language – Interrogazione databaseQuery Language – Interrogazione database

DELETE FROM Alunni WHERE ID = 23;

SELECT * FROM Alunni;

SELECT Alunni.Id, Alunni.Cognome, Alunni.Nome, Alunni.Indirizzo, Alunni.Classe, Alunni.Citta FROM Alunni;

Linguaggio SQL

Prof. Giuseppe Tandoi

Query Language – Interrogazione databaseQuery Language – Interrogazione database

DELETE FROM Alunni WHERE ID = 23;

SELECT * FROM Alunni;

SELECT Alunni.Id, Alunni.Cognome, Alunni.Nome, Alunni.Indirizzo, Alunni.Classe, Alunni.Citta FROM Alunni;

SELECT Id, Cognome, Nome, Indirizzo, Classe, Citta FROM Alunni;

Linguaggio SQL

Prof. Giuseppe Tandoi

Query Language – Interrogazione databaseQuery Language – Interrogazione database

La tabella prodotta dalla interrogazione è costituita da colonne con l'intestazione

equivalente al nome dei campi

Si può far mostrare una intestazione differente utilizzando la clausola AS.

SELECT colonna AS intestazionecolonna

FROM tabella;

Linguaggio SQL

Prof. Giuseppe Tandoi

Query Language – Interrogazione databaseQuery Language – Interrogazione database

DELETE FROM Alunni WHERE ID = 23;

SELECT Id AS Matricola, Cognome, Nome AS NomeDiBattesimo, FROM Alunni;

Linguaggio SQL

Prof. Giuseppe Tandoi

Query Language – Interrogazione databaseQuery Language – Interrogazione database

La tabella prodotta dalla interrogazione può anche vedere la presenza di colonne con

valori calcolati sugli attributi presenti ed ottenuti dalla esecuzioni di espressioni

aritmetiche

SELECT espressionenumerica AS intestazionecolonna

FROM Tabella;

Linguaggio SQL

Prof. Giuseppe Tandoi

Query Language – Interrogazione databaseQuery Language – Interrogazione database

DELETE FROM Alunni WHERE ID = 23;

SELECT Numero, Data, Importo As Imponibile, Importo * 0,20 AS Iva,

Importo * 1,20 AS TotaleFattura

FROM Fatture;

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – SelezioneOperazioni relazionali – Selezione

Si ottiene specificando la clausola WHERE

SELECT *

FROM Tabella

WHERE CondizioneDiSelezione;

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Condizioni di selezioneOperazioni relazionali – Condizioni di selezione

La Condizioni di Selezione determina la selezione delle righe

E' una espressione relazionale in cui sono confrontati una colonna ed un valore.

Il confronto è espresso da uno degli operatori relazionali:

= , > , < , <> , >= , <=

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – SelezioneOperazioni relazionali – Selezione

DELETE FROM Alunni WHERE ID = 23;

SELECT * FROM Alunni WHERE Alunni.Citta = 'Bari';

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Condizioni di selezioneOperazioni relazionali – Condizioni di selezione

Una CondizioneDiSelezione può essere costituita da più condizioni legate tra loro dagli operatori

AND , OR

Una CondizioneDiSelezione può essere preceduta dall'operatore

NOT

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Operatori di SelezioneOperazioni relazionali – Operatori di Selezione

DELETE FROM Alunni WHERE ID = 23;

SELECT * FROM Alunni WHERE Alunni.Citta <> 'Bari'

AND Alunni.Classe = '5BM';

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Operatori di SelezioneOperazioni relazionali – Operatori di Selezione

DELETE FROM Alunni WHERE ID = 23;

SELECT * FROM Alunni WHERE Alunni.Citta <> 'Bari'

AND Alunni.Classe = '5BM';

SELECT * FROM Alunni WHERE NOT (Alunni.Citta <> 'Bari'

AND Alunni.Classe = '5BM') ;

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Altri operatori di relazioneOperazioni relazionali – Altri operatori di relazione

Le Condizioni di Selezione si possono esprimere utilizzando altri operatori o

predicati per determinare ricerche più affinate

IN

LIKE

BETWEEN

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Altri operatori di relazioneOperazioni relazionali – Altri operatori di relazione

IN

L'operatore IN confronta se il valore appartiene ad uno dei valori di una lista

definita, tra parentesi dopo la clausola In.

... WHERE Colonna IN ( valore1, Valore

2, ... , Valore

n);

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Operatori di SelezioneOperazioni relazionali – Operatori di Selezione

DELETE FROM Alunni WHERE ID = 23;

SELECT * FROM Alunni WHERE Alunni.Classe IN ('3BM', '4BM', '5BM');

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Operatori di SelezioneOperazioni relazionali – Operatori di Selezione

corrisponde a

DELETE FROM Alunni WHERE ID = 23;

SELECT * FROM Alunni WHERE Alunni.Classe IN ('3BM', '4BM', '5BM');

SELECT * FROM Alunni WHERE Alunni.Classe = '3BM' OR Alunni.Classe = '4BM'

OR Alunni.Classe = '5BM';

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Altri operatori di relazioneOperazioni relazionali – Altri operatori di relazione

BETWEEN

L'operatore BETWEEN confronta se il valore nella colonna è incluso in un

intervallo di valori, estremi compresi.

... WHERE Colonna BETWEEN Valore1 AND Valore

2 ;

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Operatori di SelezioneOperazioni relazionali – Operatori di Selezione

DELETE FROM Alunni WHERE ID = 23;

SELECT * FROM Alunni WHERE Alunni.Voto BETWEEN 6 AND 8;

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Altri operatori di relazioneOperazioni relazionali – Altri operatori di relazione

LIKE

L'operatore LIKE confronta il valore di un attributo con un modello di stringa

contenenti caratteri caratteri jolly

* una qualunque sequenza di caratteri

? un carattere

... WHERE Colonna LIKE MascheraDiRicerca;

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Operatori di SelezioneOperazioni relazionali – Operatori di Selezione

DELETE FROM Alunni WHERE ID = 23;

SELECT * FROM Alunni WHERE Alunni.Cognome LIKE 'BA*';

SELECT * FROM Alunni WHERE Alunni.Cognome LIKE 'BA??';

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Predicati ALL e DISTINCTOperazioni relazionali – Predicati ALL e DISTINCT

SELECT ALL colonna1, colonna

2, ... , colonna

m

FROM Tabella

WHERE condizione;

consente di ottenere tutte le righe che soddisfano la condizione. Il predicato ALL

è considerato di default.

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Predicati ALL e DISTINCTOperazioni relazionali – Predicati ALL e DISTINCT

DELETE FROM Alunni WHERE ID = 23;

SELECT ALL * FROM Alunni WHERE Classe = '5BM';

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Predicati ALL e DISTINCTOperazioni relazionali – Predicati ALL e DISTINCT

SELECT DISTINCT colonna

FROM Tabella

WHERE condizione;

consente di ottenere nella colonna valori non ripetuti;

vale a dire che se nella colonna appare più volte uno stesso valore, sarà

riportata una sola riga in cui questo è contenuto. E' opportuno utilizzarlo per

conoscere quali sono i differenti valori presenti in una colonna

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Predicati ALL e DISTINCTOperazioni relazionali – Predicati ALL e DISTINCT

DELETE FROM Alunni WHERE ID = 23;

SELECT DISTINCT CittaNascita FROM Alunni;

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – ProiezioneOperazioni relazionali – Proiezione

Si ottiene specificando l'elenco degli attributi richiesti

SELECT colonna1, colonna

2, ... , colonna

m

FROM Tabella;

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – ProiezioneOperazioni relazionali – Proiezione

DELETE FROM Alunni WHERE ID = 23;

SELECT Alunni.Cognome, Alunni.Nome, Alunni.Classe FROM Alunni;

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – ProiezioneOperazioni relazionali – Proiezione

DELETE FROM Alunni WHERE ID = 23;

SELECT Alunni.Cognome, Alunni.Nome, Alunni.Classe FROM Alunni;

SELECT Cognome, Nome, Classe FROM Alunni;

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Selezione di proiezioneOperazioni relazionali – Selezione di proiezione

SELECT Colonna1, Colonna

2, ..., Colonna

m

FROM Tabella

WHERE CondizioneDiSelezione ;

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Selezione di proiezioneOperazioni relazionali – Selezione di proiezione

DELETE FROM Alunni WHERE ID = 23;

SELECT Alunni.Cognome, Alunni.Nome, Alunni.Classe FROM Alunni WHERE Alunni.Citta = 'Bari';

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – CongiunzioneOperazioni relazionali – Congiunzione

SELECT *

FROM Tabella1, Tabella

2

WHERE CondizioneDiCongiunzione ;

CondizioneDiCongiunzione : CampoChiaveEsterna = CampoChiavePrimaria

Sono combinate solo le righe per le quali si possono trovare valori uguali per gli attributi che si corrispondono (equi-join).

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – CongiunzioneOperazioni relazionali – Congiunzione

DELETE FROM Alunni WHERE ID = 23;

SELECT * FROM Alunni, Prove WHERE Prove.IDAlunno = Alunni.ID ;

La query dell'esempio produce una tabella costituita da tante colonne quanti sono gli

attributi delle tabelle congiunte e dalle sole righe aventi valori uguali per gli attributi

messi nella condizione di congiunzione.

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Combinazione delle operazioni relazionaliOperazioni relazionali – Combinazione delle operazioni relazionali

SELECT colonna1, colonna

2, ... , colonna

m

FROM Tabella1, Tabella

2

WHERE CondizioneDiCongiunzione

AND CondizioneDiSelezione ;

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Combinazione delle operazioni relazionaliOperazioni relazionali – Combinazione delle operazioni relazionali

Mostrare gli esiti di tutte le prove di Inglese sostenute dagli studenti della 5BM

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Combinazione delle operazioni relazionaliOperazioni relazionali – Combinazione delle operazioni relazionali

SELECT Alunni.Cognome, Alunni.Nome, Prove.Data, Prove.Voto FROM Alunni, Prove WHERE Prove.IDAlunno = Alunni.ID AND ( Prove.Materia = 'INGLESE' AND Alunni.Classe = '5BM' );

Mostrare gli esiti di tutte le prove di Inglese sostenute dagli studenti della 5BM

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Funzioni di aggregazioneOperazioni relazionali – Funzioni di aggregazione

Funzioni predefinite che operano sui dati contenuti nelle righe selezionate

dall'interrogazione effettuando

conteggio, determinazione del massimo o del minimo, somma, media

fra i valori di una colonna.

COUNT

SUM

MIN e MAX

AVG

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Funzioni di aggregazioneOperazioni relazionali – Funzioni di aggregazione

SELECT COUNT(colonna)

FROM Tabella

WHERE CondizioneDiSelezione ;

Restituisce il numero delle righe della tabella (solo quelle selezionate) ove si riscontra

un valore non nullo nella colonna.

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Funzioni di aggregazioneOperazioni relazionali – Funzioni di aggregazione

SELECT COUNT(Cognome) FROM Alunni WHERE Classe = '5BM';

Mostrare il numero di alunni della 5BM

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Funzioni di aggregazioneOperazioni relazionali – Funzioni di aggregazione

SELECT COUNT(Prove.Data) FROM Alunni,Prove WHERE Prove.IDAlunno = Alunni.ID AND ( Prove.Materia = 'INGLESE' AND Alunni.Classe = '5BM' )

Mostrare il numero delle prove (compiti e interrogazioni) sostenute dagli alunni della

5BM in Inglese

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Funzioni di aggregazioneOperazioni relazionali – Funzioni di aggregazione

SELECT COUNT( DISTINCT ( colonna ) )

FROM Tabella

WHERE CondizioneDiSelezione ;

Conta i valori diversi non ripetutii riscontrati nella colonna.

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Funzioni di aggregazioneOperazioni relazionali – Funzioni di aggregazione

SELECT COUNT( DISTINCT (CittaDiResidenza) ) FROM Alunni WHERE Classe = '5BM';

Mostrare il numero delle città di residenza degli alunni della 5BM

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Funzioni di aggregazioneOperazioni relazionali – Funzioni di aggregazione

SELECT COUNT(*)

FROM Tabella

WHERE CondizioneDiSelezione ;

Restituisce il numero di tutte le righe selezionate della tabella; non sono escluse

righe con valori nulli.

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Funzioni di aggregazioneOperazioni relazionali – Funzioni di aggregazione

SELECT COUNT(NumeroCartaDiCredito) FROM Correntisti;

Mostrare il numero dei correntisti titolari di carta di credito

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Funzioni di aggregazioneOperazioni relazionali – Funzioni di aggregazione

SELECT COUNT(NumeroCartaDiCredito) FROM Correntisti;

Mostra il numero dei correntisti titolari di carta di credito

SELECT COUNT(*) FROM Correntisti;

Mostra il numero di tutti i correntisti

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Funzioni di aggregazioneOperazioni relazionali – Funzioni di aggregazione

SELECT SUM(colonna)

FROM Tabella

WHERE CondizioneDiSelezione ;

Restituisce la somma di tutti i valori presenti in tutte le righe della tabella (solo quelle

selezionate) di una specifica colonna. La colonna deve contenere dati di tipo non

numerico.

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Funzioni di aggregazioneOperazioni relazionali – Funzioni di aggregazione

SELECT SUM(Prezzo) FROM LibriDiTesto WHERE Classe = '5BM';

Mostrare il costo totale dei libri di testo adottati per la 5BM

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Funzioni di aggregazioneOperazioni relazionali – Funzioni di aggregazione

SELECT MAX(colonna) oppure MIN(colonna)

FROM Tabella

WHERE CondizioneDiSelezione ;

Restituisce il massimo fra i valori presenti in tutte le righe della tabella (solo quelle

selezionate) di una specifica colonna. La colonna può contenere dati di tipo non

numerico.

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Funzioni di aggregazioneOperazioni relazionali – Funzioni di aggregazione

SELECT MIN(Voto) FROM Prove;

Mostrare qual'è il voto minimo fra tutti quelli che sono stati registrati

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Funzioni di aggregazioneOperazioni relazionali – Funzioni di aggregazione

SELECT MAX(Prove.Voto) FROM Alunni,Prove WHERE Prove.IDAlunno = Alunni.ID AND ( Prove.Materia = 'INGLESE' AND Alunni.Classe = '5BM' );

Mostrare qual'è il massimo riportato da un alunno della 5BM in Inglese.

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Funzioni di aggregazioneOperazioni relazionali – Funzioni di aggregazione

SELECT AVG(colonna)

FROM Tabella

WHERE CondizioneDiSelezione ;

Restituisce la media fra i valori presenti in tutte le righe della tabella (solo quelle

selezionate) di una specifica colonna. Ovviamente la colonna deve contenere dati di

tipo numerico.

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Funzioni di aggregazioneOperazioni relazionali – Funzioni di aggregazione

SELECT AVG(Prove.Voto) FROM Alunni, Prove WHERE Prove.IDAlunno = Alunni.ID AND ( Prove.Materia = 'Matematica'

AND Alunni.Classe = '5BM'

AND Alunni.Cognome = 'Martinelli' );

Mostrare qual'è la media dei voti assegnati a Martinelli della 5BM in Matematica

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Funzioni di aggregazioneOperazioni relazionali – Funzioni di aggregazione

SELECT AVG(Prove.Voto) FROM Alunni, Prove WHERE Prove.IDAlunno = Alunni.ID AND ( Prove.Materia = 'Matematica'

AND Alunni.Classe = '5BM');

Mostrare qual'è la media dei voti delle prove conseguiti dagli alunni della 5bm in

matematica.

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Funzioni di aggregazioneOperazioni relazionali – Funzioni di aggregazione

SELECT AVG(Prove.Voto) FROM Alunni, Prove WHERE Prove.IDAlunno = Alunni.ID AND ( Prove.Materia = 'Matematica'

AND Alunni.Classe = '5BM');

Mostrare qual è la media dei voti delle prove conseguiti dagli alunni della 5bm in

matematica.

Linguaggio SQL

Prof. Giuseppe Tandoi

Operazioni relazionali – Funzioni di aggregazioneOperazioni relazionali – Funzioni di aggregazione

SELECT Prove.Voto FROM Alunni, Prove WHERE Prove.IDAlunno = Alunni.ID AND ( Prove.Materia = 'Matematica'

AND Alunni.Classe = '5BM');

Mostrare i voti riportati dagli alunni della 5 bm in matematica

Linguaggio SQL

Prof. Giuseppe Tandoi

OrdinamentiOrdinamenti

L'interrogazione mostra le righe elencate come presenti nelle tabelle da cui sono

originate.

E' possibile mostrare le righe anche secondo un differente ordine basato sui valori

presenti in una colonna (o più) specificando la clausola

ORDER BY

Si impostare un ordinamento crescente (ASCending) o decrescente (DESCending)

Linguaggio SQL

Prof. Giuseppe Tandoi

OrdinamentiOrdinamenti

SELECT colonna1, colonna

2, ..., colonna

n

FROM ...

WHERE ...

ORDER BY colonna1 [ ASC / DESC ] ,

colonna2 [ ASC / DESC ] ... ;

Linguaggio SQL

Prof. Giuseppe Tandoi

OrdinamentiOrdinamenti

Lista delle prove (interrogazioni e compiti) di inglese svolte dagli alunni della 5BM

ordinati per data, dalla più recente alla più remota.

SELECT Prove.Data, Alunni.Cognome, Alunni.Nome, Prove.Voto FROM Alunni, Prove WHERE Prove.IDAlunno = Alunni.ID AND ( Prove.Materia = 'INGLESE' AND Alunni.Classe = '5BM' )

ORDER BY Prove.Data DESC;

Linguaggio SQL

Prof. Giuseppe Tandoi

OrdinamentiOrdinamenti

Lista delle prove (interrogazioni e compiti) di inglese svolte dagli alunni della 5BM

ordinati in base alla quarta colonna definita nella proiezione, cioè in base al voto.

SELECT Alunni.Cognome, Alunni.Nome, Prove.Data, Prove.Voto FROM Alunni, Prove WHERE Prove.IDAlunno = Alunni.ID AND ( Prove.Materia = 'INGLESE' AND Alunni.Classe = '5BM' )

ORDER BY 4;

Linguaggio SQL

Prof. Giuseppe Tandoi

OrdinamentiOrdinamenti

Lista delle prove (interrogazioni e compiti) svolte dagli alunni della 5BM ordinati

alfabeticamente per materia, in modo decrescente per voto nell'ambito delle prove di

una stessa materia ed infine per alunno.

SELECT Alunni.Cognome, Alunni.Nome, Prove.Data, Prove.Materia, Prove.Voto FROM Alunni, Prove WHERE Prove.IDAlunno = Alunni.ID AND ( Alunni.Classe = '5BM' )

ORDER BY Prove.Materia, Prove.Voto DESC, Alunni.Cognome;

Linguaggio SQL

Prof. Giuseppe Tandoi

RaggruppamentiRaggruppamenti

Le funzioni di aggregazione (MIN, MAX, AVG, COUNT, SUM )condensano le

informazioni di tutta una tabella (o solo delle righe selezionate) in un unico valore.

Le funzioni di aggregazione possono operare non solo su tutta la tabella ma per

gruppi di record.

Per esempio voglio che venga mostrata :

per ciascun alunno la sua media dei voti

per ciascuna materia il numero di prove che sono state sostenute

per ciascuna classe il voto più alto registrato al suo interno

Linguaggio SQL

Prof. Giuseppe Tandoi

RaggruppamentiRaggruppamenti

Cliente Importo

8 1200

15 2000

Bellomo 3 150

Bellomo 7 1250

Bellomo 14 800

1 100

11 900

2 100

6 1500

10 500

NumFatt

Altomare

Altomare

Genchi

Genchi

Lorusso

Lorusso

Lorusso

Linguaggio SQL

Prof. Giuseppe Tandoi

RaggruppamentiRaggruppamenti

Cliente Importo

8 1200

15 2000

Bellomo 3 150

Bellomo 7 1250

Bellomo 14 800

1 100

11 900

2 100

6 1500

10 500

NumFatt

Altomare

Altomare

Genchi

Genchi

Lorusso

Lorusso

Lorusso

Cliente Sum(Importo)

Altomare 3200

Bellomo 2200

Genchi 1000

Lorusso 2100

Linguaggio SQL

Prof. Giuseppe Tandoi

RaggruppamentiRaggruppamenti

Il raggruppamento si definisce utilizzando la clausola

GROUP BY

Linguaggio SQL

Prof. Giuseppe Tandoi

RaggruppamentiRaggruppamenti

SELECT Colonna, FunzioneDiAggregazione(colonna)

FROM ...

GROUP BY Colonna ;

Linguaggio SQL

Prof. Giuseppe Tandoi

RaggruppamentiRaggruppamenti

SELECT Cliente, Sum(Importo) FROM Fatture GROUP BY Cliente;

Linguaggio SQL

Prof. Giuseppe Tandoi

RaggruppamentiRaggruppamenti

Lista dei voti massimi riportati da ciascun alunno in qualunque prova.

Linguaggio SQL

Prof. Giuseppe Tandoi

RaggruppamentiRaggruppamenti

Lista dei voti massimi riportati da ciascun alunno in qualunque prova.

SELECT Alunni.Cognome, Max(Prove.Voto) FROM Alunni, Prove WHERE Prove.IDAlunno = Alunni.ID GROUP BY Alunni.Cognome;

Linguaggio SQL

Prof. Giuseppe Tandoi

Raggruppamenti – condizioni sui raggruppamentiRaggruppamenti – condizioni sui raggruppamenti

Lista dei voti massimi riportati da ciascun alunno della 5BM nelle prove di

Matematica.

SELECT Alunni.Cognome, Max(Prove.Voto) FROM Alunni, Prove WHERE Prove.IDAlunno = Alunni.ID AND ( Prove.Materia = 'MATEMATICA' AND Alunni.Classe = '5BM' )

GROUP BY Alunni.Cognome;

Linguaggio SQL

Prof. Giuseppe Tandoi

Raggruppamenti – condizioni sui raggruppamentiRaggruppamenti – condizioni sui raggruppamenti

Lista dei voti massimi riportati da ciascun alunno della 5BM nelle prove di

Matematica.

SELECT Alunni.Cognome, Max(Prove.Voto) FROM Alunni, Prove WHERE Prove.IDAlunno = Alunni.ID AND ( Prove.Materia = 'MATEMATICA' AND Alunni.Classe = '5BM' )

GROUP BY Alunni.Cognome;

Il raggruppamento opera sulle righe selezionate dalla clausola WHERE

Linguaggio SQL

Prof. Giuseppe Tandoi

Raggruppamenti – condizioni sui raggruppamentiRaggruppamenti – condizioni sui raggruppamenti

La clausola

HAVING condizione

usata insieme a GROUP BY, consente di visualizzare le sole righe prodotte dai

raggruppamenti che soddisfano la condizione.

Linguaggio SQL

Prof. Giuseppe Tandoi

Raggruppamenti – condizioni sui raggruppamentiRaggruppamenti – condizioni sui raggruppamenti

La clausola

HAVING condizione

usata insieme a GROUP BY, consente di visualizzare le sole righe prodotte dai

raggruppamenti che soddisfano la condizione.

Per esempio

gli alunni con una media superiore a 6

i professionisti che hanno un compenso totale superiore a 50.000 Euro

le discipline in cui gli studenti non abbiano riportato un voto superiore a 7

Linguaggio SQL

Prof. Giuseppe Tandoi

Raggruppamenti – condizioni sui raggruppamentiRaggruppamenti – condizioni sui raggruppamenti

SELECT Colonna, FunzioneDiAggregazione(colonna)

FROM ...

GROUP BY Colonna

HAVING condizione ;

La condizione si basa sul confronto tra la funzione di aggregazione e un altro

dato. Valuta per ciascun raggruppamento il risultato della funzione di aggregazione

sul raggruppamento e l'altro dato.

Linguaggio SQL

Prof. Giuseppe Tandoi

Raggruppamenti – condizioni sui raggruppamentiRaggruppamenti – condizioni sui raggruppamenti

Lista degli alunni che hanno riportato come loro voto più alto, un voto maggiore di 7.

In qualunque prova di qualunque disciplina

Linguaggio SQL

Prof. Giuseppe Tandoi

Raggruppamenti – condizioni sui raggruppamentiRaggruppamenti – condizioni sui raggruppamenti

Lista degli alunni che hanno riportato come loro voto più alto, un voto maggiore di 7.

In qualunque prova di qualunque disciplina

SELECT Alunni.Cognome, Max(Prove.Voto) FROM Alunni, Prove WHERE Prove.IDAlunno = Alunni.ID GROUP BY Alunni.Cognome

HAVING Max(Prove.Voto) > 7;

Linguaggio SQL

Prof. Giuseppe Tandoi

Query nidificate (o sottoquery)Query nidificate (o sottoquery)

La sottoquery è una normale interrogazione che viene inclusa in un'altra query nella

espressione condizionale di quella che la contiene.

Linguaggio SQL

Prof. Giuseppe Tandoi

Query nidificate (o sottoquery)Query nidificate (o sottoquery)

La sottoquery è una normale interrogazione che viene inclusa in un'altra query nella

espressione condizionale di quest'ultima.

ES.

SELECT ............

FROM ......WHERE dato >, =, <, IN

;

Linguaggio SQL

Prof. Giuseppe Tandoi

Query nidificate (o sottoquery)Query nidificate (o sottoquery)

La sottoquery è una normale interrogazione che viene inclusa in un'altra query nella

espressione condizionale di quest'ultima.

ES.

SELECT ............

FROM ......WHERE dato >, =, <, IN

( SELECT ........ FROM WHERE ........) ;

Linguaggio SQL

Prof. Giuseppe Tandoi

Query nidificate (o sottoquery)Query nidificate (o sottoquery)

La sottoquery è una normale interrogazione che viene inclusa in un'altra query nella

espressione condizionale di quest'ultima.

ES.

SELECT ............

FROM ......WHERE dato >, =, <, IN

( SELECT ........ FROM WHERE ........) ;

SottoQuery o Query interna

Query principale

Linguaggio SQL

Prof. Giuseppe Tandoi

Query nidificate (o sottoquery)Query nidificate (o sottoquery)

La sottoquery produce un'unica colonna in una o più righe.

Quindi la sottoquery deve essere la proiezione di un'unica colonna.

Linguaggio SQL

Prof. Giuseppe Tandoi

Query nidificate (o sottoquery)Query nidificate (o sottoquery)

La sottoquery produce un'unica colonna in una o più righe.

Quindi la sottoquery deve essere la proiezione di un'unica colonna.

. . . SELECT AVG(Prove.Voto) FROM Alunni, Prove WHERE Prove.IDAlunno = Alunni.ID AND ( Prove.Materia = 'Matematica'

AND Alunni.Classe = '5BM') . . .

Media dei voti di tutte le prove di matematica degli alunni della 5BM.

Linguaggio SQL

Prof. Giuseppe Tandoi

Query nidificate (o sottoquery)Query nidificate (o sottoquery)

La sottoquery produce un'unica colonna in una o più righe.

Quindi la sottoquery deve essere la proiezione di un'unica colonna.

. . . SELECT AVG(Prove.Voto)

FROM Alunni, Prove WHERE Prove.IDAlunno = Alunni.ID AND ( Prove.Materia = 'Matematica'

AND Alunni.Classe = '5BM') . . .

Media dei voti di tutte le prove di matematica degli alunni della 5BM.

AVG(Prove.Voto)

6,34

Linguaggio SQL

Prof. Giuseppe Tandoi

Query nidificate (o sottoquery)Query nidificate (o sottoquery)

Il valore prodotto dalla esecuzione della query interna

è utilizzato nella espressione condizionale che definisce la selezione della query

principale

6,34

AVG(Prove.Voto)

Linguaggio SQL

Prof. Giuseppe Tandoi

Query nidificate (o sottoquery)Query nidificate (o sottoquery)

Alunni della 5BM che conseguito nelle prove di Matematica almeno un voto

superiore alla media di tutte le prove.

Linguaggio SQL

Prof. Giuseppe Tandoi

Query nidificate (o sottoquery)Query nidificate (o sottoquery)

SELECT DISTINCT Alunni.Cognome, Alunni.NomeFROM Alunni, Prove WHERE Prove.IDAlunno = Alunni.ID AND Prove.Materia = 'Matematica' AND Prove.Voto >

( SELECT AVG(Prove.Voto) FROM Alunni, Prove

WHERE Prove.IDAlunno = Alunni.ID

AND ( Prove.Materia = 'Matematica'

AND Alunni.Classe = '5BM') );

Alunni della 5BM che conseguito nelle prove di Matematica almeno un voto

superiore alla media dei voti di tutte le prove.

Linguaggio SQL

Prof. Giuseppe Tandoi

Query nidificate (o sottoquery)Query nidificate (o sottoquery)

SELECT DISTINCT Prove.IdAlunnoFROM ProveWHERE Prove.Materia = 'Matematica' AND Prove.Voto >

( SELECT AVG(Prove.Voto) FROM Alunni, Prove

WHERE Prove.IDAlunno = Alunni.ID

AND ( Prove.Materia = 'Matematica'

AND Alunni.Classe = '5BM') );

Linguaggio SQL

Prof. Giuseppe Tandoi

Query nidificate (o sottoquery)Query nidificate (o sottoquery)

SELECT DISTINCT Prove.IdAlunnoFROM ProveWHERE Prove.Materia = 'Matematica' AND Prove.Voto >

( SELECT AVG(Prove.Voto) FROM Alunni, Prove

WHERE Prove.IDAlunno = Alunni.ID

AND ( Prove.Materia = 'Matematica'

AND Alunni.Classe = '5BM') );

Codici degli alunni della 5BM che conseguito nelle prove di Matematica

almeno un voto superiore alla media dei voti di tutte le prove.

Linguaggio SQL

Prof. Giuseppe Tandoi

Query nidificate (o sottoquery)Query nidificate (o sottoquery)

SELECT DISTINCT Prove.IdAlunnoFROM ProveWHERE Prove.Materia = 'Matematica' AND Prove.Voto >

( SELECT AVG(Prove.Voto) FROM Alunni, Prove

WHERE Prove.IDAlunno = Alunni.ID

AND ( Prove.Materia = 'Matematica'

AND Alunni.Classe = '5BM') );

35217

Prove.IdAlunno

Linguaggio SQL

Prof. Giuseppe Tandoi

Query nidificate (o sottoquery)Query nidificate (o sottoquery)

SELECT DISTINCT Alunni.ComuneResidenza FROM Alunni WHERE Alunni.ID IN

( SELECT DISTINCT Prove.IdAlunno

FROM Prove

WHERE Prove.Materia = 'Matematica'

AND Prove.Voto >

( SELECT AVG(Prove.Voto)

FROM Alunni, Prove

WHERE Prove.IDAlunno = Alunni.ID

AND ( Prove.Materia = 'Matematica'

AND Alunni.Classe = '5BM') ) );