Linguaggio SQL. Prof. Giuseppe Tandoi

Documenti analoghi
Structured Query Language

Caratteristiche dei linguaggi per Database

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

Manuale SQL. Manuale SQL - 1 -

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

PROGETTAZIONE DI DATABASE Linguaggio SQL

Linguaggio SQL seconda parte

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

SQL (STRUCTURED QUERY LANGUAGE)

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

ESERCITAZIONI ACCESS

I.I.S. G. COSSALI - ORZINUOVI DATABASE. Marzo 2017 Prof. Dario Tomasoni 1

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Basi di Dati: Corso di laboratorio

SQL (STRUCTURED QUERY LANGUAGE)

Laboratorio di Basi di Dati

MODULO 2. Query normali e parametriche Query di:

SQL - Structured Query Language

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione

Uno dei principali motivi del successo delle basi di dati: è diventato uno standard

Interrogazioni nidificate

Esempio di database relazionale con l utilizzo del prodotto MySQL

SQL. SQL: "storia. Sviluppato nella metà degli anni settanta (1974) presso il laboratorio di ricerca IBM di S.Josè. Dal 1983 ca. "standard di fatto"

Basi di Dati: Corso di laboratorio

<Nome Tabella>.<attributo>

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

Interrogazioni nidificate

Laboratorio di Basi di Dati

Il linguaggio SQL: raggruppamenti. Versione elettronica: SQLb-gruppi.pdf

Query SQL - singola tabella

Elena Baralis 2007 Politecnico di Torino 1

ISTITUTO PARITARIO MICHELANGELO - RIMINI- PIANO DI LAVORO

SQL e algebra relazionale

Il linguaggio SQL. ing. Alfredo Cozzi 1

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi.

Istruzioni DML di SQL

Database Lezione 2. Sommario. - Progettazione di un database - Join - Valore NULL - Operatori aggregati

SELECT s.nome, e.data Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola

SELECT s.nome, e.data FROM Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL: fondamenti. Il linguaggio SQL

Basi di dati I Prova di autovalutazione 30 ottobre 2014

Gestione e Analisi dei Dati. Lezione 2 Vincoli su attributo Selezioni semplici su una tabella

Elena Baralis 2007 Politecnico di Torino 1

SQL. SQL: una visione panoramica. SQL: "storia" Definizione dei dati

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

D B M G. Linguaggio SQL: fondamenti. Istruzione SELECT: fondamenti. Elena Baralis 2007 Politecnico di Torino 1. Struttura di base

Alessandra Raffaetà. Esercizio: Cinema

S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali. Alessandra Raffaetà

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

Corso di Access. Prerequisiti. Modulo L2 A (Access) Le query

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

Introduzione a MySQL. Definizione SQL. Esempio

Interrogazioni in SQL

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

SQL: DDL, VI, Aggiornamenti e Viste

CORSO ACCESS 2000 PARTE VI

Basi di Dati: Corso di laboratorio

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

Introduzione al linguaggio SQL

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

DATABASE PER IL WEB. Programmazione Web 1

Laboratorio di Basi di Dati Per Bioinformatica

Interrogazioni semplici

I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER

Access. P a r t e t e r z a

Data base relazionale ed SQL. Modello relazionale dei data base e il linguaggio standard per la loro gestione

Appunti di MySql. Evoluzione di un tutorial di base di mysql, scritto da Etel Sverdlov.


Tabelle esempio: Impiegato/Dipartimento

Principi di Progettazione del Software a.a Il linguaggio SQL. Prof. Luca Mainetti Università del Salento

DUE GRUPPI DI COMANDI

Corso di Informatica (Basi di Dati)

Elena Baralis 2007 Politecnico di Torino 1

LABORATORIO di INFORMATICA

VARIABILI, ASSEGNAZIONE, DECISIONI

Esercitazione: Interrogazioni SQL

Basi di Dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2

Laboratorio di Basi di Dati

DBMS (Data Base Management System)

SQL - Sottointerrogazioni

Dichiarazione degli schemi in SQL DDL 1

Microsoft Access (parte 5) Query. Query. Query. Query. Creare una query

2.4. Creare ed operare con le query

Introduzione alle basi di dati

Le query di comando e di servizio in Access

Corso base SQLite. Copyright (c) 2015 Antonio Gallo

Tipi di sottoquery SQL

Basi di Dati: Corso di laboratorio

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Introduzione Sql con Microsoft Access

ESERCIZI SQL. Esercizio 1

Corso Sistemi Informativi Avanzati. Programma 30 set Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

Bibliografia. INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. Definizione di DB e di DBMS

STUDIO. Esercizi proposti a lezione cap. 3 rev. dic da Ulmann, Widom Introduzione ai database. indirizzo. titolo. nome. recitain. attori.

DATA BASE MANAGEMENT SYSTEM

Filtri. Microsoft Access. Filtri. Filtri

Ripasso Concetti Pratica in Access Link utili. ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 3

Transcript:

Caratteristiche generali SQL è uno strumento per organizzare gestire recuperare dati memorizzati in DataBase organizzati su base Relazionale.

Caratteristiche generali SQL è l'acronimo di Structured Query Language. SQL è un linguaggio (non procedurale) per interagire con database.

Caratteristiche 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.).

Caratteristiche generali SQL non è un software un sistema di gestione di database un linguaggio di programmazione procedurale

Caratteristiche generali - DBMS DBMS = Data Base Management System Software che controlla il database consente le operazioni di definizione, manipolazione e estrazione

Caratteristiche 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.

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

Regole generali - formato istruzione Le istruzioni sono formate dal verbo imperativo e dai parametri e terminano con il punto e virgola ( ; ) create table ALUNNI ( ID Smallint, COGNOME char(20), NOME char(20) ) ;

Regole 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

Regole generali definizione identificatori L'identificatore assoluto di un attributo è costituita dalla abituale notazione : NomeTabella. NomeAttributo Ordini.Data Alunni.Data_di_Nascita NomeTabella si può omettere se non vi sono di ambiguità di identificazione.

Regole 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.

Definizione dei dati - DDL DDL : Data Description Language Sottoinsieme di istruzioni di SQL che consentono di * definire nuove tabelle * modificare la struttura delle tabelle * rimuovere tabelle

DDL tipi standard di dati BOOLEAN Valore logico True, false CHARACTER(n) Stringa di lunghezza (n) N da 1 a 15000 DATE Data nella forma mm/gg/aa TIME Ora nella forma hh:mm INTEGER(p) Numero intero di precisione P P da 1 a 45 SMALLINT Numero intero (16 bit) Da -32768 a +32767 INTEGER Numero intero (32 bit) Da -2147483648 a +2147483647 DECIMAL(p,s) Numero decimale di p cifre di cui s decimali REAL Numero reale con mantissa di precisione 7 FLOAT Numero reale con mantissa di precisione 15 FLOAT(p) Numero reale con mantissa di precisione p

DDL definizione nuove tabelle CREATE TABLE NomeTabella ( nome attr 1 tipo, nome attr 2 tipo,... nome attr n tipo) ;

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

DDL eliminazione tabella DROP TABLE NomeTabella ;

DDL eliminazione tabella DROP TABLE Alunni;

DDL modifica struttura tabella Aggiunta attributo ALTER TABLE NomeTabella ADD nome attr 1 tipo; Rimozione attributo ALTER TABLE NomeTabella DROP nome attr ;

DDL modifica struttura tabella Aggiunta attributo ALTER TABLE Alunni ADD ContattoMSN Char(50); Rimozione attributo ALTER TABLE Alunni DROP Classe;

DDL definizione nuove tabelle - clausole CREATE TABLE NomeTabella ( nome attr 1 tipo PRIMARY KEY, nome attr 2 nome attr 3 nome attr 4 tipo UNIQUE, tipo NOT NULL, tipo AUTO_INCREMENT,... nome attr n tipo DEFAULT valore) ;

DDL definizione nuove tabelle - clausole PRIMARY KEY UNIQUE NOT NULL DEFAULT dichiara quell'attributo come chiave primaria della tabella rende inammissibili valori uguali obbliga ad indicare un valore 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 - clausole CREATE TABLE Alunni ( Id SMALLINT PRIMARY KEY, Cognome Nome CHAR(20) NOT Null, CHAR(20) NOT Null, Indirizzo CHAR(40), Classe CHAR(10) NOT Null, Citta CHAR(30) DEFAULT 'Bari' );

Manipolazione dei dati - DML DML : Data Manipulation Language Sottoinsieme di istruzioni di SQL che consentono di * inserire nuovi record * modificare il contenuto dei campi dei record * cancellare record

DML Inserimento record INSERT INTO NomeTabella (nome attr 1, nome attr 2,..., nome attr n ) VALUES (val 1, val 2,..., val n );

DML Inserimento record INSERT INTO Alunni (Id, Cognome, Nome, Indirizzo, Classe, Citta) VALUES (23,'Rossi', 'Mario','Via Roma,12', '', 'Bari' );

DML Modifica record UPDATE NomeTabella SET nome attr = valore WHERE CondizioneDiSelezione;

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

DML Elimina record DELETE FROM NomeTabella WHERE CondizioneDiSelezione;

DML Elimina record DELETE FROM Alunni WHERE ID = 23; DELETE FROM Alunni WHERE Alunni.Classe = '5BM';

Query 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

Query Language Interrogazione database Le interrogazioni al database si pongono attraverso il comando SELECT La struttura base del comando SELECT è SELECT colonne FROM tabella;

Query Language Interrogazione database SELECT * DELETE FROM Alunni FROM Alunni; WHERE ID = 23;

Query Language Interrogazione database SELECT * DELETE FROM Alunni FROM Alunni; WHERE ID = 23; SELECT Alunni.Id, Alunni.Cognome, Alunni.Nome, Alunni.Indirizzo, Alunni.Classe, Alunni.Citta FROM Alunni;

Query Language Interrogazione database SELECT * DELETE FROM Alunni FROM Alunni; WHERE ID = 23; SELECT Alunni.Id, Alunni.Cognome, Alunni.Nome, Alunni.Indirizzo, Alunni.Classe, Alunni.Citta FROM Alunni; SELECT Id, Cognome, Nome, Indirizzo, Classe, Citta FROM Alunni;

Query 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;

Query Language Interrogazione database SELECT Id AS Matricola, Cognome, Nome AS NomeDiBattesimo, DELETE FROM Alunni FROM Alunni; WHERE ID = 23;

Query 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;

Query Language Interrogazione database SELECT Numero, Data, Importo As Imponibile, Importo * 0,20 AS Iva, DELETE FROM Alunni Importo * 1,20 AS TotaleFattura WHERE ID = 23; FROM Fatture;

Operazioni relazionali Selezione Si ottiene specificando la clausola WHERE SELECT * FROM Tabella WHERE CondizioneDiSelezione;

Operazioni 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: =, >, <, <>, >=, <=

Operazioni relazionali Selezione SELECT * DELETE FROM Alunni FROM Alunni WHERE ID = 23; WHERE Alunni.Citta = 'Bari';

Operazioni 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

Operazioni relazionali Operatori di Selezione SELECT * DELETE FROM Alunni FROM Alunni WHERE ID = 23; WHERE Alunni.Citta <> 'Bari' AND Alunni.Classe = '5BM';

Operazioni relazionali Operatori di Selezione SELECT * DELETE FROM Alunni FROM Alunni WHERE ID = 23; WHERE Alunni.Citta <> 'Bari' AND Alunni.Classe = '5BM'; SELECT * FROM Alunni WHERE NOT (Alunni.Citta <> 'Bari' AND Alunni.Classe = '5BM') ;

Operazioni 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

Operazioni 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 ( valore 1, Valore 2,..., Valore n );

Operazioni relazionali Operatori di Selezione SELECT * DELETE FROM Alunni FROM Alunni WHERE ID = 23; WHERE Alunni.Classe IN ('3BM', '4BM', '5BM');

Operazioni relazionali Operatori di Selezione SELECT * DELETE FROM Alunni FROM Alunni WHERE ID = 23; WHERE Alunni.Classe IN ('3BM', '4BM', '5BM'); corrisponde a SELECT * FROM Alunni WHERE Alunni.Classe = '3BM' OR Alunni.Classe = '4BM' OR Alunni.Classe = '5BM';

Operazioni 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 Valore 1 AND Valore 2 ;

Operazioni relazionali Operatori di Selezione SELECT * DELETE FROM Alunni FROM Alunni WHERE ID = 23; WHERE Alunni.Voto BETWEEN 6 AND 8;

Operazioni 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;

Operazioni relazionali Operatori di Selezione SELECT * DELETE FROM Alunni FROM Alunni WHERE ID = 23; WHERE Alunni.Cognome LIKE 'BA*'; SELECT * FROM Alunni WHERE Alunni.Cognome LIKE 'BA??';

Operazioni relazionali Predicati ALL e DISTINCT SELECT ALL colonna 1, colonna 2,..., colonna m FROM Tabella WHERE condizione; consente di ottenere tutte le righe che soddisfano la condizione. Il predicato ALL è considerato di default.

Operazioni relazionali Predicati ALL e DISTINCT SELECT ALL * DELETE FROM Alunni FROM Alunni WHERE ID = 23; WHERE Classe = '5BM';

Operazioni 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

Operazioni relazionali Predicati ALL e DISTINCT SELECT DISTINCT CittaNascita DELETE FROM Alunni FROM Alunni; WHERE ID = 23;

Operazioni relazionali Proiezione Si ottiene specificando l'elenco degli attributi richiesti SELECT colonna 1, colonna 2,..., colonna m FROM Tabella;

Operazioni relazionali Proiezione SELECT Alunni.Cognome, Alunni.Nome, Alunni.Classe DELETE FROM Alunni FROM Alunni; WHERE ID = 23;

Operazioni relazionali Proiezione SELECT Alunni.Cognome, Alunni.Nome, Alunni.Classe DELETE FROM Alunni FROM Alunni; WHERE ID = 23; SELECT Cognome, Nome, Classe FROM Alunni;

Operazioni relazionali Selezione di proiezione SELECT Colonna 1, Colonna 2,..., Colonna m FROM Tabella WHERE CondizioneDiSelezione ;

Operazioni relazionali Selezione di proiezione SELECT Alunni.Cognome, Alunni.Nome, Alunni.Classe DELETE FROM Alunni FROM Alunni WHERE ID = 23; WHERE Alunni.Citta = 'Bari';

Operazioni relazionali Congiunzione SELECT * FROM Tabella 1, 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).

Operazioni relazionali Congiunzione SELECT * DELETE FROM Alunni FROM Alunni, Prove WHERE ID = 23; 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.

Operazioni relazionali Combinazione delle operazioni relazionali SELECT colonna 1, colonna 2,..., colonna m FROM Tabella 1, Tabella 2 WHERE CondizioneDiCongiunzione AND CondizioneDiSelezione ;

Operazioni relazionali Combinazione delle operazioni relazionali Mostrare gli esiti di tutte le prove di Inglese sostenute dagli studenti della 5BM

Operazioni relazionali Combinazione delle operazioni relazionali Mostrare gli esiti di tutte le prove di Inglese sostenute dagli studenti della 5BM 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' );

Operazioni 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

Operazioni 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.

Operazioni relazionali Funzioni di aggregazione SELECT COUNT(Cognome) FROM Alunni WHERE Classe = '5BM'; Mostrare il numero di alunni della 5BM

Operazioni 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

Operazioni relazionali Funzioni di aggregazione SELECT COUNT( DISTINCT ( colonna ) ) FROM Tabella WHERE CondizioneDiSelezione ; Conta i valori diversi non ripetutii riscontrati nella colonna.

Operazioni relazionali Funzioni di aggregazione SELECT COUNT( DISTINCT (CittaDiResidenza) ) FROM Alunni WHERE Classe = '5BM'; Mostrare il numero delle città di residenza degli alunni della 5BM

Operazioni 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.

Operazioni relazionali Funzioni di aggregazione SELECT COUNT(NumeroCartaDiCredito) FROM Correntisti; Mostrare il numero dei correntisti titolari di carta di credito

Operazioni 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

Operazioni 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.

Operazioni relazionali Funzioni di aggregazione SELECT SUM(Prezzo) FROM LibriDiTesto WHERE Classe = '5BM'; Mostrare il costo totale dei libri di testo adottati per la 5BM

Operazioni 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.

Operazioni relazionali Funzioni di aggregazione SELECT MIN(Voto) FROM Prove; Mostrare qual'è il voto minimo fra tutti quelli che sono stati registrati

Operazioni 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.

Operazioni 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.

Operazioni 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

Operazioni 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.

Operazioni 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.

Operazioni 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

Ordinamenti 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)

Ordinamenti SELECT colonna 1, colonna 2,..., colonna n FROM... WHERE... ORDER BY colonna1 [ ASC / DESC ], colonna2 [ ASC / DESC ]... ;

Ordinamenti 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; Lista delle prove (interrogazioni e compiti) di inglese svolte dagli alunni della 5BM ordinati per data, dalla più recente alla più remota.

Ordinamenti 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; 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.

Ordinamenti 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; 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.

Raggruppamenti 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

Raggruppamenti Cliente Altomare NumFatt Importo 8 1200 Altomare 15 2000 Bellomo 3 150 Bellomo 7 1250 Bellomo 14 800 Genchi Genchi Lorusso Lorusso Lorusso 1 100 11 900 2 100 6 1500 10 500

Raggruppamenti Cliente Altomare NumFatt Importo 8 1200 Altomare 15 2000 Bellomo 3 150 Cliente Sum(Importo) Bellomo 7 1250 Bellomo 14 800 Altomare 3200 Bellomo 2200 Genchi Genchi Lorusso Lorusso Lorusso 1 100 11 900 2 100 6 1500 10 500 Genchi 1000 Lorusso 2100

Raggruppamenti Il raggruppamento si definisce utilizzando la clausola GROUP BY

Raggruppamenti SELECT Colonna, FunzioneDiAggregazione(colonna) FROM... GROUP BY Colonna ;

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

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

Raggruppamenti 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;

Raggruppamenti 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;

Raggruppamenti 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

Raggruppamenti 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.

Raggruppamenti 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

Raggruppamenti 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.

Raggruppamenti 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

Raggruppamenti 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;

Query nidificate (o sottoquery) La sottoquery è una normale interrogazione che viene inclusa in un'altra query nella espressione condizionale di quella che la contiene.

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 ;

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...) ;

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...) ; Query principale SottoQuery o Query interna

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.

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.

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

Query nidificate (o sottoquery) Il valore prodotto dalla esecuzione della query interna AVG(Prove.Voto) 6,34 è utilizzato nella espressione condizionale che definisce la selezione della query principale

Query nidificate (o sottoquery) Alunni della 5BM che conseguito nelle prove di Matematica almeno un voto superiore alla media di tutte le prove.

Query nidificate (o sottoquery) Alunni della 5BM che conseguito nelle prove di Matematica almeno un voto superiore alla media dei voti di tutte le prove. SELECT DISTINCT Alunni.Cognome, Alunni.Nome FROM 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') );

Query nidificate (o sottoquery) 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') );

Query nidificate (o sottoquery) 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') ); Codici degli alunni della 5BM che conseguito nelle prove di Matematica almeno un voto superiore alla media dei voti di tutte le prove.

Query nidificate (o sottoquery) 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') ); Prove.IdAlunno 3 5 2 1 7

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') ) );