linguaggio sql - itcgiuliocesare.it filelinguaggio sql prof. giuseppe tandoi caratteristiche...
TRANSCRIPT
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') ) );