Elena Baralis 2007 Politecnico di Torino 1

Documenti analoghi
Elena Baralis 2007 Politecnico di Torino 1

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

Linguaggio SQL: fondamenti D B M G

Structured Query Language

Linguaggio SQL seconda parte

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

Il linguaggio SQL: raggruppamenti

Elena Baralis 2007 Politecnico di Torino 1

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

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

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

Caratteristiche dei linguaggi per Database

Interrogazioni semplici

Elena Baralis 2007 Politecnico di Torino 1

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

Corso di Basi di Dati

Basi di dati. Linguaggio SQL: fondamenti - Introduzione. Elena Baralis 2007 Politecnico di Torino 1 D B M G 2 D B M G D B M G 4 D B M G 6

SQL terza parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2010/11

Monday, January 24, 2011 SQL

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

Manuale SQL. Manuale SQL - 1 -

<Nome Tabella>.<attributo>

Operatori aggregati: COUNT

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

Lezione 7 SQL (II) Basi di dati bis Docente Mauro Minenna Pag.1

Algebra relazionale. Algebra relazionale. Operatori dell algebra relazionale. Operatori dell algebra relazionale. Algebra relazionale.

Idoneita Informatica. Sistemi per la gestione di basi di Dati

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio

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"

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni

Estensioni del linguaggio SQL per interrogazioni OLAP

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

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

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. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

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

Linguaggio SQL. studenti matricola nome cognome citta anno 11 marco bini bologna laura sicuro rimini 1984 esami codice

SQL. Argomenti della lezione. Join esplicito. Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate

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

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

SQL e algebra relazionale

Esempi SQL con Access. Orazio Battaglia

CORSO ACCESS 2000 PARTE VI

SQL - Sottointerrogazioni correlate

Corso di Basi di Dati

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

Basi di Dati. S Q L Lezione 2

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

Trasparenze rielaborate da Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999 Capitolo 4: SQL-2, seconda parte.

APPUNTI DELLA LEZIONE DI DATABASE DEL 26/10/2016 Studenti: Marco D'Amato, Adriano Luigi Piscopello Professore: Mario Bochicchio

Esercitazione 1 Algebra relazionale

Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL

SQL - Funzioni di gruppo

Basi di dati (4) Docente: Andrea Bulgarelli. Università di Modena e Reggio Emilia. Argomento: select (1.

Alessandra Raffaetà. Esercizio: Cinema

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

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

SQL (STRUCTURED QUERY LANGUAGE)

Basi di Dati. S Q L Lezione 4

Tabelle esempio: Impiegato/Dipartimento

Informatica B. Introduzione alle Basi di Dati e ai DBMS

Basi di Dati. Esercitazione 1: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL

Introduzione alle basi di dati

Lezione 6. Algebra e Calcolo Relazionale

Interrogazioni complesse. SQL avanzato 1

Informatica B. Introduzione alle Basi di Dati e ai DBMS

Istruzioni DML di SQL

Esempio di database relazionale con l utilizzo del prodotto MySQL

Basi di Dati: Corso di laboratorio

Basi di Dati prof. Letizia Tanca

DataBase Management System - DBMS

Business Intelligence

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

Linguaggio SQL. Prof. Giuseppe Tandoi

SQL QUERY: Le interrogazioni del database

Basi di dati e Sistemi informativi aziendali

Capitolo 4. SQL: il linguaggio di interrogazione. Originato da SEQUEL-XRM e System-R ( ) dell IBM

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

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

3 SQL : Interrogazioni

Esercizio con attributo cross-dimensionale - transazionale

Data management a.a Il linguaggio SQL

MODULO 2. Query normali e parametriche Query di:

Il linguaggio SQL: le viste

Interrogazioni con ANY e ALL. Operatori ANY e ALL. Interrogazioni con ANY e ALL. Interrogazioni con ANY e ALL. Interrogazioni con ANY e ALL

Il linguaggio SQL: query innestate

3. Selezionare i nomi dei clienti che iniziano con le lettere P, Q, R, S

Data warehouse Analisi dei dati

Sommario. Introduzione... 13

CAPITOLO V. DATABASE: Il modello relazionale

ALGEBRA RELAZIONALE. L algebra relazionale

Data Management Software. Il linguaggio SQL. Query Innestate. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management 10 Settembre 2003

Basi di Dati. Esercitazione SQL. Paolo Papotti. 19 maggio 2005

SQL - Structured Query Language

SQL seconda parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2010/11

Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004

Algebra relazionale D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2012/13

Corso di Basi di Dati

Transcript:

Linguaggio SQL: fondamenti Struttura di base Clausola WHEE Ordinamento del risultato Join unzioni aggregate Operatore GOU BY Istruzione SELECT: esempio Trovare il codice e il numero di soci dei fornitori di Milano BD forniture prodotti Istruzione SELECT: esempio 1 Maglia osso 40 Torino 3 Camicia Blu 48 oma 5 Gonna Blu 40 Milano 6 Bermuda osso 42 Torino Cod Nome NSoci Sede 1 Andrea 2 Torino 2 Luca 1 Milano 3 Antonio 3 Milano 4 Gabriele 2 Torino 5 Matteo 3 Venezia 1 6 100 2 1 300 4 3 200 4 4 300 4 5 400 Trovare il codice e il numero di soci dei fornitori di Milano Cod Nome NSoci Sede 1 Andrea 2 Torino 2 Luca 1 Milano 3 Antonio 3 Milano 4 Gabriele 2 Torino 5 Matteo 3 Venezia p Cod, NSoci s Sede='Milano' 2007 olitecnico di Torino 1

Istruzione SELECT: esempio SELECT base (n.1) Trovare il codice e il numero di soci dei fornitori di Milano SELECT Cod, NSoci OM WHEE Sede='Milano'; Cod Nome NSoci Sede 1 Andrea 2 Torino 2 Luca 1 Milano 3 Antonio 3 Milano 4 Gabriele 2 Torino 5 Matteo 3 Venezia Cod NSoci 2 1 3 3 Trovare il codice di tutti i prodotti SELECT Cod OM ; 1 Maglia osso 40 Torino 3 Camicia Blu 48 oma 5 Gonna Blu 40 Milano 6 Bermuda osso 42 Torino p Cod Cod 1 2 3 4 5 6 SELECT base (n.2) SELECT base (n.2) Trovare il codice dei prodotti forniti da almeno un fornitore 1 6 100 2 1 300 4 3 200 4 4 300 SELECT Cod OM ; Cod 1 2 3 4 5 6 1 2 2 3 4 5 4 5 400 Trovare il codice dei prodotti forniti da almeno un fornitore SELECT Cod OM ; p Cod Non effettua la rimozione dei duplicati arola chiave DISTINCT eliminazione dei duplicati Eliminazione dei duplicati Trovare il codice dei prodotti diversi forniti da almeno un fornitore SELECT base (n.2) Trovare il codice dei prodotti diversi forniti da almeno un fornitore 1 6 100 2 1 300 4 3 200 4 4 300 4 5 400 SELECT DISTINCT Cod OM ; Cod 1 2 3 4 5 6 2007 olitecnico di Torino 2

Selezione di tutte le informazioni Selezione con espressione (1/3) Trovare tutte le informazioni sui prodotti SELECT Cod, Nome, Colore, Taglia, Magazzino OM ; oppure SELECT * OM ; 1 Maglia osso 40 Torino 3 Camicia Blu 48 oma 5 Gonna Blu 40 Milano 6 Bermuda osso 42 Torino D M BG Trovare il codice dei prodotti e la taglia espressa con la misura americana SELECT Cod, Taglia-14 OM ; 1 Maglia osso 40 Torino 3 Camicia Blu 48 oma 5 Gonna Blu 40 Milano 6 Bermuda osso 42 Torino Cod 1 26 2 34 3 34 4 30 5 26 6 38 Selezione con espressione (2/3) Selezione con espressione (3/3) Definizione di una nuova colonna temporanea per l espressione calcolata il nome della colonna temporanea può essere definito con la parola chiave AS Trovare il codice dei prodotti e la taglia espressa con la misura americana SELECT Cod, Taglia-14 AS TagliaUSA OM ; Cod TagliaUSA 1 26 2 34 3 34 4 30 5 26 6 38 Struttura dell istruzione SELECT (1) SELECT [DISTINCT] ElencoAttributiDaVisualizzare OM ElencoTabelleDaUtilizzare; 2007 olitecnico di Torino 3

Clausola WHEE ermette di esprimere condizioni di selezione applicate singolarmente ad ogni tupla Espressione booleana di predicati redicati semplici espressioni di confronto tra attributi e costanti ricerca testuale valori NULL Trovare il codice dei fornitori di Milano SELECT Cod OM WHEE Sede='Milano'; Cod Nome NSoci Sede 1 Andrea 2 Torino 2 Luca 1 Milano 3 Antonio 3 Milano 4 Gabriele 2 Torino 5 Matteo 3 Venezia Clausola WHEE (n.1) Cod 2 3 Clausola WHEE (n.2) Espressioni booleane (n.1) Trovare il codice e il numero di soci dei fornitori che non hanno sede a Milano SELECT Cod, NSoci OM WHEE Sede<>'Milano'; Trovare il codice dei fornitori di Milano con più di 2 soci SELECT Cod OM WHEE Sede='Milano' AND NSoci>2; Cod Nome NSoci Sede 1 Andrea 2 Torino 2 Luca 1 Milano 3 Antonio 3 Milano 4 Gabriele 2 Torino 5 Matteo 3 Venezia Cod NSoci 1 2 4 2 5 3 Cod Nome NSoci Sede 1 Andrea 2 Torino 2 Luca 1 Milano 3 Antonio 3 Milano 4 Gabriele 2 Torino 5 Matteo 3 Venezia Cod 3 Espressioni booleane (n.2) Espressioni booleane (n.3) Trovare il codice e il numero di soci dei fornitori di Milano o di Torino SELECT Cod, NSoci OM WHEE Sede='Milano' O Sede='Torino'; Trovare il codice e il numero di soci dei fornitori che hanno sede a Milano e a Torino la richiesta non può essere soddisfatta ogni fornitore ha una sola sede Cod Nome NSoci Sede 1 Andrea 2 Torino 2 Luca 1 Milano 3 Antonio 3 Milano 4 Gabriele 2 Torino 5 Matteo 3 Venezia Cod NSoci 1 2 2 1 3 3 4 2 Cod Nome NSoci Sede 1 Andrea 2 Torino 2 Luca 1 Milano 3 Antonio 3 Milano 4 Gabriele 2 Torino 5 Matteo 3 Venezia 2007 olitecnico di Torino 4

Operatore LIKE NomeAttributo LIKE StringaDiCaratteri icerca testuale il carattere _ rappresenta un singolo carattere qualsiasi (obbligatoriamente presente) il carattere % rappresenta una sequenza qualsiasi di n caratteri (anche vuota) SELECT Cod, Nome OM WHEE Nome LIKE 'C%'; 1 Maglia osso 40 Torino 3 Camicia Blu 48 oma 5 Gonna Blu 40 Milano 6 Bermuda osso 42 Torino icerca testuale (n.1) Trovare il codice e il nome dei prodotti il cui nome inizia con la lettera C Cod 3 4 Nome Camicia Camicia icerca testuale (n.2) icerca testuale (n.3) L attributo Indirizzo contiene la stringa Torino Indirizzo LIKE '%Torino%' Il codice fornitore è pari a 2 e è preceduto da un carattere ignoto è costituito esattamente da 2 caratteri Cod LIKE '_2' Magazzino NOT LIKE '_e%' icerca testuale (n.4) L attributo magazzino non contiene una e in seconda posizione Gestione di valori NULL (n.1) Trovare il codice e il nome dei prodotti con taglia maggiore di 44 SELECT Cod, Nome OM WHEE Taglia>44; 1 Maglia osso 40 Torino 3 Camicia Blu 48 oma 5 Gonna Blu NULL Milano 6 Bermuda osso 42 Torino Cod 2 3 Nome Jeans Camicia 2007 olitecnico di Torino 5

Valore NULL icerca di valori NULL Le tuple per cui la taglia è NULL non sono selezionate il predicato Taglia>44 è falso In presenza di valori NULL qualsiasi predicato di confronto è falso Operatore speciale IS NomeAttributo IS [NOT] NULL SELECT Cod, Nome OM WHEE Taglia IS NULL; icerca di valori NULL (n.1) Trovare il codice e il nome dei prodotti per cui la taglia non è indicata 1 Maglia osso 40 Torino 3 Camicia Blu 48 oma 5 Gonna Blu NULL Milano 6 Bermuda osso 42 Torino Cod 5 Nome Gonna icerca di valori NULL (n.2) Trovare il codice e il nome dei prodotti con la taglia maggiore di 44 o che potrebbero avere taglia maggiore di 44 SELECT Cod, Nome OM WHEE Taglia>44 O Taglia IS NULL; 1 Maglia osso 40 Torino 3 Camicia Blu 48 oma 5 Gonna Blu NULL Milano 6 Bermuda osso 42 Torino Cod 2 3 5 Nome Jeans Camicia Gonna Struttura dell istruzione SELECT (2) SELECT [DISTINCT] ElencoAttributiDaVisualizzare OM ElencoTabelleDaUtilizzare [WHEE CondizioniDiTupla ]; 2007 olitecnico di Torino 6

Ordinamento del risultato (n.1) Ordinamento Trovare il codice dei prodotti e la loro taglia ordinando il risultato in ordine decrescente di taglia SELECT Cod, Taglia OM ODE BY Taglia DESC; 1 Maglia osso 40 Torino 3 Camicia Blu 48 oma 5 Gonna Blu 40 Milano 6 Bermuda osso 42 Torino Cod Taglia 2 48 3 48 4 44 6 42 1 40 5 40 Clausola ODE BY ODE BY NomeAttributo [ASC DESC] {, NomeAttributo [ASC DESC]} l ordinamento implicito è crescente senza DESC gli attributi di ordinamento devono comparire nella clausola SELECT anche implicitamente (come SELECT *) Ordinamento del risultato (n.2) Trovare tutte le informazioni sui prodotti ordinando il risultato in ordine crescente di nome e decrescente di taglia SELECT Cod, Nome, Colore, Taglia, Magazzino OM ODE BY Nome, Taglia DESC; 1 Maglia osso 40 Torino 3 Camicia Blu 48 oma 5 Gonna Blu 40 Milano 6 Bermuda osso 42 Torino Ordinamento del risultato (n.2) Trovare tutte le informazioni sui prodotti ordinando il risultato in ordine crescente di nome e decrescente di taglia SELECT Cod, Nome, Colore, Taglia, Magazzino OM ODE BY Nome, Taglia DESC; 6 Bermuda osso 42 Torino 3 Camicia Blu 48 oma 5 Gonna Blu 40 Milano 1 Maglia osso 40 Torino Ordinamento del risultato (n.2) Trovare tutte le informazioni sui prodotti ordinando il risultato in ordine crescente di nome e decrescente di taglia SELECT * OM ODE BY Nome, Taglia DESC; 6 Bermuda osso 42 Torino 3 Camicia Blu 48 oma 5 Gonna Blu 40 Milano 1 Maglia osso 40 Torino Ordinamento del risultato (n.3) Trovare il codice dei prodotti e la taglia espressa come taglia americana, ordinando il risultato in ordine crescente di taglia SELECT Cod, Taglia-14 AS TagliaUSA OM ODE BY TagliaUSA; 1 Maglia osso 40 Torino 3 Camicia Blu 48 oma 5 Gonna Blu 40 Milano 6 Bermuda osso 42 Torino Cod TagliaUSA 5 26 1 28 6 28 4 30 2 34 3 34 2007 olitecnico di Torino 7

Struttura dell istruzione SELECT (3) SELECT [DISTINCT] ElencoAttributiDaVisualizzare OM ElencoTabelleDaUtilizzare [WHEE CondizioniDiTupla ] [ODE BY ElencoAttributiDiOrdinamento ]; Trovare il nome dei fornitori che forniscono il prodotto 2 Cod Nome NSoci Sede 1 Andrea 2 Torino 2 Luca 1 Milano 3 Antonio 3 Milano 4 Gabriele 2 Torino 5 Matteo 3 Venezia DB forniture prodotti DB forniture prodotti rodotto cartesiano Cod Nome NSoci Sede 1 Andrea 2 Torino 2 Luca 1 Milano 3 Antonio 3 Milano 4 Gabriele 2 Torino 5 Matteo 3 Venezia 1 6 100 2 1 300 4 3 200 4 4 300 4 5 400 Trovare il nome dei fornitori che forniscono il prodotto 2 SELECT Nome OM, ; 2007 olitecnico di Torino 8

rodotto cartesiano.cod.nome.nsoci.sede.cod.cod.qta 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 6 100 1 Andrea 2 Torino 2 1 300 2 Luca 1 Milano 2 Luca 1 Milano 2 1 300 =.Cod.Nome.NSoci.Sede.Cod.Cod.Qta 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 6 100 1 Andrea 2 Torino 2 1 300 2 Luca 1 Milano 2 Luca 1 Milano 2 1 300 Trovare il nome dei fornitori che forniscono il prodotto 2 SELECT Nome OM, WHEE.Cod=.Cod Trovare il nome dei fornitori che forniscono il prodotto 2 SELECT Nome OM, WHEE.Cod=.Cod Condizione di join NomeTabella.NomeAttributo =.Cod.Nome.NSoci.Sede.Cod.Cod.Qta 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 6 100 1 Andrea 2 Torino 2 1 300 2 Luca 1 Milano 2 Luca 1 Milano 2 1 300.Cod.Nome.NSoci.Sede.Cod.Cod.Qta 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 6 100 2 Luca 1 Milano 2 1 300 2 Luca 1 Milano 3 Antonio 3 Milano 4 Gabriele 2 Torino 4 3 200 4 Gabriele 2 Torino 4 4 300 4 Gabriele 2 Torino 4 5 400 2007 olitecnico di Torino 9

Trovare il nome dei fornitori che forniscono il prodotto 2 SELECT Nome OM, WHEE.Cod=.Cod AND Cod='2';.Cod='2'.Cod.Nome.NSoci.Sede.Cod.Cod.Qta 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 6 100 2 Luca 1 Milano 2 1 300 2 Luca 1 Milano 3 Antonio 3 Milano 4 Gabriele 2 Torino 4 3 200 4 Gabriele 2 Torino 4 4 300 4 Gabriele 2 Torino 4 5 400.Cod.Nome.NSoci.Sede.Cod.Cod.Qta 1 Andrea 2 Torino 2 Luca 1 Milano 3 Antonio 3 Milano Trovare il nome dei fornitori che forniscono il prodotto 2 Nome Andrea Luca Antonio Trovare il nome dei fornitori che forniscono il prodotto 2 in algebra relazionale Trovare il nome dei fornitori che forniscono il prodotto 2 p.nome s Cod= 2 p.nome s Cod= 2 SELECT Nome OM, WHEE.Cod=.Cod AND Cod='2'; SELECT Nome OM, WHEE Cod='2' AND.Cod=.Cod; Il risultato e l efficienza sono indipendenti dall ordine dei predicati nella clausola WHEE 2007 olitecnico di Torino 10

Trovare il nome dei fornitori che forniscono il prodotto 2 SELECT Nome OM, WHEE.Cod=.Cod AND Cod='2'; SELECT Nome OM, WHEE.Cod=.Cod AND Cod='2'; Dichiaratività del linguaggio SQL in algebra relazionale si definisce l ordine in cui sono applicati gli operatori in SQL l ordine migliore è scelto dall ottimizzatore indipendentemente dall ordine delle condizioni nella clausola WHEE dall ordine delle tabelle nella clausola OM Il risultato e l efficienza sono indipendenti dall ordine delle tabelle nella clausola OM Trovare il nome dei fornitori che forniscono almeno un prodotto rosso SELECT Nome OM,, WHEE.Cod=.Cod AND.Cod=.Cod AND Colore='osso'; Clausola OM con N tabelle almeno N-1 condizioni di join nella clausola WHEE Join (n.2) AS X Cod Nome NSoci Sede 1 Andrea 2 Torino 2 Luca 1 Milano 3 Antonio 3 Milano 4 Gabriele 2 Torino 5 Matteo 3 Venezia D M BG Join (n.3) Trovare le coppie di codici dei fornitori tali che entrambi i fornitori abbiano sede nella stessa città SELECT X.Cod, Y.Cod OM AS X, AS Y WHEE X.Sede=Y.Sede; AS Y Cod Nome NSoci Sede 1 Andrea 2 Torino 2 Luca 1 Milano 3 Antonio 3 Milano 4 Gabriele 2 Torino 5 Matteo 3 Venezia Join (n.3) Trovare le coppie di codici dei fornitori tali che entrambi i fornitori abbiano sede nella stessa città Join (n.3) Trovare le coppie di codici dei fornitori tali che entrambi i fornitori abbiano sede nella stessa città SELECT X.Cod, Y.Cod OM AS X, AS Y WHEE X.Sede=Y.Sede; Sono presenti coppie di valori uguali permutazioni della stessa coppia di valori X.Cod 1 1 2 2 3 3 4 4 5 Y.Cod 1 4 2 3 2 3 1 4 5 SELECT X.Cod, Y.Cod OM AS X, AS Y WHEE X.Sede=Y.Sede AND X.Cod <> Y.Cod; Elimina le coppie di valori uguali X.Cod 1 1 2 2 3 3 4 4 5 Y.Cod 1 4 2 3 2 3 1 4 5 2007 olitecnico di Torino 11

Join (n.3) Trovare le coppie di codici dei fornitori tali che entrambi i fornitori abbiano sede nella stessa città Join (n.3) Trovare le coppie di codici dei fornitori tali che entrambi i fornitori abbiano sede nella stessa città SELECT X.Cod, Y.Cod OM AS X, AS Y WHEE X.Sede=Y.Sede AND X.Cod < Y.Cod; Elimina le permutazioni della stessa coppia di valori X.Cod 1 1 2 2 3 3 4 4 5 Y.Cod 1 4 2 3 2 3 1 4 5 SELECT X.Cod, Y.Cod OM AS X, AS Y WHEE X.Sede=Y.Sede AND X.Cod < Y.Cod; X.Cod 1 2 Y.Cod 4 3 Join: sintassi alternativa Join: sintassi alternativa ermette di specificare diversi tipi di join outer join ermette di distinguere condizioni di join condizioni di selezione sulle tuple Introdotta in SQL-2 recepita solo parzialmente nei prodotti commerciali SELECT [DISTINCT] Attributi OM Tabella TipoJoin JOIN Tabella ON CondizioneDiJoin [WHEE CondizioniDiTupla]; TipoJoin = < INNE [ULL LET IGHT] OUTE > INNE join OUTE join Trovare il nome dei fornitori che forniscono almeno un prodotto rosso SELECT Nome OM INNE JOIN ON.Cod=.Cod INNE JOIN ON.Cod=.Cod WHEE.Colore='osso'; Trovare il codice e il nome dei fornitori insieme al codice dei relativi prodotti forniti, visualizzando anche i fornitori che non hanno forniture SELECT.Cod, Nome, Cod OM LET OUTE JOIN ON.Cod=.Cod; 2007 olitecnico di Torino 12

OUTE join.cod.nome.cod 1 Andrea 1 1 Andrea 2 1 Andrea 3 1 Andrea 4 1 Andrea 5 1 Andrea 6 2 Luca 1 2 Luca 2 3 Antonio 2 4 Gabriele 3 4 Gabriele 4 4 Gabriele 5 5 Matteo NULL unzioni aggregate unzioni aggregate Una funzione aggregata opera su un insieme di valori produce come risultato un unico valore (aggregato) unzioni aggregate disponibili in SQL-2 COUNT: conteggio degli elementi in un attributo SUM: somma dei valori di un attributo AVG: media dei valori di un attributo MAX: massimo valore di un attributo MIN: minimo valore di un attributo unzioni aggregate Struttura dell istruzione SELECT (4) Una funzione aggregata opera su un insieme di valori produce come risultato un unico valore (aggregato) è indicata nella clausola SELECT SELECT ElencounzioniAggregateDaVisualizzare OM ElencoTabelleDaUtilizzare [WHEE Condizioni DiTupla ] [ODE BY ElencoAttributiDiOrdinamento ]; 2007 olitecnico di Torino 13

unzioni aggregate unzione COUNT Una funzione aggregata opera su un insieme di valori produce come risultato un unico valore (aggregato) è indicata nella clausola SELECT non si possono indicare anche attributi non aggregati possono essere richieste più funzioni aggregate contemporaneamente Conteggio del numero di elementi di un insieme righe di una tabella valori (eventualmente distinti) di uno o più attributi COUNT (<* [DISTINCT ALL] ListaAttributi >) unzione COUNT (n.1) unzione COUNT (n.2) Trovare il numero di fornitori SELECT COUNT(*) OM ; Cod Nome NSoci Sede 1 Andrea 2 Torino 2 Luca 1 Milano 3 Antonio 3 Milano 4 Gabriele 2 Torino 5 Matteo 3 Venezia 5 Trovare il numero di fornitori che hanno almeno una fornitura 1 6 100 2 1 300 4 3 200 4 4 300 4 5 400 SELECT COUNT(*) OM ; Conta il numero di forniture, non di fornitori 12 unzione COUNT (n.2) Trovare il numero di fornitori che hanno almeno una fornitura 1 6 100 2 1 300 4 3 200 4 4 300 4 5 400 SELECT COUNT(Cod) OM ; Conta il numero di forniture, non di fornitori 12 unzione COUNT (n.2) Trovare il numero di fornitori che hanno almeno una fornitura 1 6 100 2 1 300 4 3 200 4 4 300 4 5 400 SELECT COUNT(DISTINCT Cod) OM ; Conta il numero di fornitori diversi 4 2007 olitecnico di Torino 14

unzione COUNT unzioni aggregate e WHEE Conteggio del numero di elementi di un insieme righe di una tabella valori (eventualmente distinti) di uno o più attributi COUNT (<* [DISTINCT ALL] ListaAttributi >) Se l argomento della funzione è preceduto da DISTINCT, conta il numero di valori distinti dell argomento Trovare il numero di fornitori che forniscono il prodotto 2 1 6 100 2 1 300 4 3 200 4 4 300 4 5 400 SELECT COUNT(*) OM WHEE Cod='2'; 3 unzioni aggregate e WHEE Le funzioni aggregate sono valutate solo dopo l applicazione di tutti i predicati nella clausola WHEE unzioni SUM, MAX, MIN, AVG SUM, MAX, MIN e AVG ammettono come argomento un attributo o un espressione SUM e AVG ammettono solo attributi di tipo numerico o intervallo di tempo MAX e MIN richiedono che l espressione sia ordinabile possono essere applicate anche su stringhe di caratteri e istanti di tempo unzione SUM 1 6 100 2 1 300 4 3 200 4 4 300 4 5 400 Trovare la quantità totale di pezzi forniti per il prodotto 2 SELECT SUM(Qta) OM WHEE Cod='2'; 800 2007 olitecnico di Torino 15

aggruppamento aggruppamento er ogni prodotto, trovare la quantità totale di pezzi forniti 1 6 100 2 1 300 4 3 200 4 4 300 4 5 400 2 1 300 4 3 200 4 4 300 4 5 400 1 6 100 Cod 1 600 2 800 3 600 4 500 5 500 6 100 er ogni prodotto, trovare la quantità totale di pezzi forniti SELECT Cod, SUM(Qta) OM GOU BY Cod; Clausola di raggruppamento GOU BY GOU BY ElencoAttributiDiaggruppamento l ordine degli attributi di raggruppamento è ininfluente Nella clausola SELECT possono comparire solo attributi presenti nella clausola GOU BY funzioni aggregate GOU BY e WHEE er ogni prodotto, trovare la quantità totale di pezzi forniti da fornitori con sede a Milano Cod Nome NSoci Sede 1 Andrea 2 Torino 2 Luca 1 Milano 3 Antonio 3 Milano 4 Gabriele 2 Torino 5 Matteo 3 Venezia 1 6 100 2 1 300 4 3 200 4 4 300 4 5 400 GOU BY e WHEE er ogni prodotto, trovare la quantità totale di pezzi forniti da fornitori con sede a Milano SELECT... OM, WHEE.Cod=.Cod AND Sede='Milano'... GOU BY e WHEE er ogni prodotto, trovare la quantità totale di pezzi forniti da fornitori con sede a Milano.Cod.Nome.NSoci.Sede.Cod.Cod.Qta 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 Andrea 2 Torino 1 6 100 2 Luca 1 Milano 2 1 300 2 Luca 1 Milano 3 Antonio 3 Milano 4 Gabriele 2 Torino 4 3 200 4 Gabriele 2 Torino 4 4 300 4 Gabriele 2 Torino 4 5 400 2007 olitecnico di Torino 16

GOU BY e WHEE er ogni prodotto, trovare la quantità totale di pezzi forniti da fornitori con sede a Milano GOU BY e WHEE er ogni prodotto, trovare la quantità totale di pezzi forniti da fornitori con sede a Milano SELECT Cod, SUM(Qta) OM, WHEE.Cod=.Cod AND Sede='Milano' GOU BY Cod;.Cod.Qta 1 300 2 400 2 200.Cod 1 300 2 600 I prodotti senza forniture non sono inclusi nel risultato SELECT.Cod, Nome, SUM(Qta) OM, WHEE.Cod=.Cod GOU BY.Cod, Nome GOU BY e SELECT er ogni prodotto, trovare il codice, il nome e la quantità totale fornita Artificio sintattico gli attributi univocamente determinati da attributi già presenti nella clausola GOU BY possono essere aggiunti senza alterare il risultato Struttura dell istruzione SELECT (5) SELECT [DISTINCT] ElencoAttributiDaVisualizzare OM ElencoTabelleDaUtilizzare [WHEE CondizioniDiTupla ] [GOU BY ElencoAttributiDiaggruppamento ] [ODE BY ElencoAttributiDiOrdinamento ]; Condizione di selezione sui gruppi Trovare la quantità totale di pezzi forniti per i prodotti per cui sono forniti in totale almeno 600 pezzi la condizione è definita su valori aggregati Non è possibile utilizzare la clausola WHEE Trovare la quantità totale di pezzi forniti per i prodotti per cui sono forniti in totale almeno 600 pezzi 1 6 100 2 1 300 4 3 200 4 4 300 4 5 400 Condizione di selezione sui gruppi (n.1) 2 1 300 4 3 200 4 4 300 4 5 400 1 6 100 Cod 1 600 2 800 3 600 2007 olitecnico di Torino 17

Condizione di selezione sui gruppi (n.1) Condizione di selezione sui gruppi (n.2) Trovare la quantità totale di pezzi forniti per i prodotti per cui sono forniti in totale almeno 600 pezzi SELECT Cod, SUM(Qta) OM GOU BY Cod HAVING SUM(Qta)>=600; La clausola HAVING permette di specificare condizioni su funzioni aggregate Trovare il codice dei prodotti rossi forniti da più di un fornitore 1 Maglia osso 40 Torino 3 Camicia Blu 48 oma 5 Gonna Blu 40 Milano 6 Bermuda osso 42 Torino 1 6 100 2 1 300 4 3 200 4 4 300 4 5 400 Condizione di selezione sui gruppi (n.2) Trovare il codice dei prodotti rossi forniti da più di un fornitore SELECT.Cod OM, WHEE.Cod=.Cod AND Colore='osso' GOU BY.Cod HAVING COUNT(*)>1; Condizione di selezione sui gruppi (n.2) Trovare il codice dei prodotti rossi forniti da più di un fornitore.cod.cod.qta.cod.nome.colore.taglia.magazzino 1 Maglia osso 40 Torino 2 1 300 1 Maglia osso 40 Torino 1 6 100 6 Bermuda osso 42 Torino Cod 1 Struttura dell istruzione SELECT SELECT [DISTINCT] ElencoAttributiDaVisualizzare OM ElencoTabelleDaUtilizzare [WHEE CondizioniDiTupla ] [GOU BY ElencoAttributiDiaggruppamento ] [HAVING CondizioniSuAggregati ] [ODE BY ElencoAttributiDiOrdinamento ]; 2007 olitecnico di Torino 18