Tipi di sottoquery SQL

Похожие документы
SQL - Sottointerrogazioni

Interrogazioni nidificate

Linguaggio SQL seconda parte

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

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

Basi di Dati: Corso di laboratorio

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

Caratteristiche dei linguaggi per Database

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

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

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

Eprogram ITIS V anno Unità 4 - Il linguaggio SQL

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

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

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

<Nome Tabella>.<attributo>

Esercizi di SQL 1- SELEZIONI SEMPLICI 1 2- SELEZIONI CON PROIEZIONI 1 3- FUNZIONI DI INSIEME 2 4- FUNZIONI DI AGGREGAZIONE 2 5- HAVING 3

Corso di Basi di Dati A.A. 2015/2016

Istruzioni DML di SQL

Interrogazioni nidificate

Oracle Database 10g: Introduction to SQL - LVC

VARIABILI, ASSEGNAZIONE, DECISIONI

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

Esempi SQL con Access. Orazio Battaglia

ESERCIZI SQL. Esercizio 1

Il linguaggio SQL: query innestate

Interrogazioni complesse. SQL avanzato 1

ACCESS Esercitazione (query complesse) Ing. Cosimo Orlacchio

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

Oracle Database 11g: Introduzione a SQL Release 2

LEFT JOIN - RIGHT JOIN - SELF JOIN - CROSS JOIN

Basi di dati II prova intermedia 16 Marzo 2006 Compito 1

Microsoft Access. Microsoft Access. Maurizio Rebaudengo, Paolo Garza 1. Microsoft Access. Creazione base di dati. Apertura di una base dati

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

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

BASI DATI: algebra relazionale

Le interrogazioni annidate

Interrogare una base di dati: Algebra relazionale e SQL. Alessandro Bardine Alessandro Ciaramella Vincenzo Galella Rudy Manganelli

DISPENSA ACCESS (OFFICE 2010 BETA)

Basi di Dati. S Q L Lezione 4

DATABASE PER IL WEB. Programmazione Web 1

Basi di dati I 27 gennaio 2016 Esame Compito A Tempo a disposizione: un ora e quarantacinque minuti. Libri chiusi.

ASP e Database. A cura di Michele Cavalieri

Basi di Dati Corso di Laura in Informatica Umanistica

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

SQL - Funzioni di gruppo

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

Esercizi di SQL. 3) cognome e nome dei clienti che abitano a Rimini e guadagnano più di 3000;

CONCETTO DI ANNIDAMENTO

SQL e algebra relazionale

Corso di Laboratorio di Basi di Dati

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

Spiegazioni esercizio Gestione Tabella con PHP e MySQL

SQL Avanzato. Interrogazioni e il valore NULL. Interrogazioni complesse, trigger, viste e modifiche dello schema. Giorgio Giacinto 2015

OR true null false true true true true null true null null false true null false NOT

CORSO ACCESS 2000 PARTE VI

Basi di Dati: Corso di laboratorio

ESERCIZIO 1 (12 punti) Dato il seguente schema relazionale, che modella i dati di società di assicurazioni che erogano polizze sanitarie.

SQL/OLAP. Estensioni OLAP in SQL

Elena Baralis 2007 Politecnico di Torino 1

Il linguaggio SQL: query innestate

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

DATABASE CLIENTIRAPPRESENTANTI

Query in Access. Criteri, Valori Univoci, Operatori e Colonna Calcolata. Query (Interrogazione)

SISTEMI OPERATIVI, RETI, INTERNET

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

Concettuale. Giuseppe Amato

Indice Introduzione Elementi di base dei database Il linguaggio SQL (Structured Query Language)

ESERCITAZIONE 4 Giovedì 13 novembre 2014 (3 ore) SQL

Basi di dati I 19 settembre 2016 Tempo a disposizione: un ora e 45 minuti.

Basi di Dati Corso di Laura in Informatica Umanistica

Il linguaggio SQL. ing. Alfredo Cozzi 1

MICROSOFT EXCEL FORMULE E FUNZIONI

Create la tabella Dipendenti:

Excel 3. Master Universitario di II livello in MANAGER NELLE AMMINISTRAZIONI PUBBLICHE A.A Prof.ssa Bice Cavallo

Guida a SacramentiWeb 1.2

Persona(CodiceFiscale, Cognome, Nome, DataDiNascita, LuogoDiNascita, Indirizzo)

Laboratorio di Informatica

Sommario. Introduzione... 13

Università degli Studi di Milano. Esercizi Corso SIT. Basi di dati

Contare quante volte si presenta un valore singolo utilizzando una funzione

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Basi di dati I Prova di autovalutazione 30 ottobre 2014

Le query di comando e di servizio in Access

MAX, SUM, AVG, COUNT)

Транскрипт:

Tipi di sottoquery SQL È possibile specificare subquery in numerose posizioni: Con le parole chiave IN e NOT IN. Con operatori di confronto. Con le parole chiave ANY, SOME e ALL. Con le parole chiave EXISTS e NOT EXISTS Sottoquery con IN Il risultato di una sottoquery introdotta dalla parola chiave IN (o NOT IN) è un elenco di zero o più valori. I risultati restituiti dalla sottoquery vengono utilizzati dalla query esterna. Nella seguente query vengono trovati i nomi di tutti i prodotti con nome "Ruote" WHERE codicecategoria IN WHERE nome = 'Ruote'); Sottoquery con NOT IN Le sottoquery introdotte dalla parola chiave NOT IN restituiscono un elenco di zero o più valori. La query seguente trova i nomi dei prodotti che non sono biciclette finite. WHERE codicecategoria NOT IN WHERE nome = 'Mountain Bikes' OR nome = 'Road Bikes' OR nome = 'Touring Bikes') Sottoquery con operatori di confronto 1

Le sottoquery possono essere introdotte da uno dei seguenti operatori di confronto =, < >, >, > =, <,! >,! < o < =. In modo analogo alle sottoquery introdotte da IN, le sottoquery introdotte da un operatore di confronto non modificato, ovvero non seguito dalla parola chiave ANY o ALL, devono restituire un solo valore anziché un elenco di valori. Se una sottoquery di questo tipo restituisce più valori, in SQL Server viene visualizzato un messaggio di errore. Per utilizzare una sottoquery introdotta da un operatore di confronto non modificato, è necessario aver acquisito una certa familiarità con i dati e la natura del problema in modo da sapere che la sottoquery restituirà un solo valore. Esempio : Si supponga, ad esempio, che ogni venditore copra una sola zona di vendita e che si desideri trovare i clienti che risiedono nella zona coperta da Mario Rossi. In questo caso è possibile scrivere un'istruzione con una sottoquery introdotta dall'operatore di confronto =. Clienti(codiceFiscale, nome, cognome, telefono, tipo, codicezona, codicevenditore) Venditori(codice, nome, cognome, email, telefono, codicezona) SELECT codicefiscale, nome, cognome FROM Clienti WHERE codicezona = Zona FROM Venditori WHERE nome= Mario AND cognome= Rossi ) NB : posso utilizzare l operatore = perché per ipotesi Mario Rossi copre solo una zona, se i venditori coprono più di una zona (in questo caso il database sarebbe diverso) si doveva utilizzare l operatore IN al posto di = Le sottoquery introdotte da un operatore di confronto non modificato spesso includono funzioni di aggregazione, in quanto tali funzioni restituiscono un solo valore. L'istruzione seguente consente ad esempio di individuare i nomi di tutti i prodotti il cui prezzo di listino è superiore a quello medio. WHERE prezzo > (SELECT AVG (prezzo) FROM prodotti) 2

Poiché le sottoquery introdotte da un operatore di confronto non modificato devono restituire un solo valore, non è possibile includervi clausole GROUP BY o HAVING, a meno che tali clausole non restituiscano un solo valore. La query seguente consente, ad esempio, di individuare i prodotti il cui prezzo è maggiore rispetto al prodotto di prezzo più basso nella categoria 14. WHERE prezzo > (SELECT MIN (prezzo) FROM prodotti GROUP BY codicecategoria HAVING codicecategoria = 14) Operatori di confronto modificati da ANY o ALL Gli operatori di confronto che introducono una sottoquery possono essere modificati tramite le parole chiave ALL o ANY. Le sottoquery introdotte da un operatore di confronto modificato restituiscono un elenco di zero o più valori e possono includere una clausola GROUP BY o HAVING. Tali sottoquery possono essere riformulate con EXISTS (vedi più avanti). Utilizzando l'operatore di confronto > come esempio, >ALL indica maggiore di qualsiasi valore, ovvero maggiore del valore massimo. Ad esempio, >ALL (1, 2, 3) significa maggiore di 3. >ANY significa maggiore di almeno un valore, ovvero, maggiore del valore minimo. >ANY (1, 2, 3) significa maggiore di 1. Una riga di una sottoquery che include >ALL rispetta la condizione specificata nella query esterna se il valore della colonna che introduce la sottoquery è maggiore di tutti i valori dell'elenco restituito dalla sottoquery. In modo analogo, quando si utilizza >ANY, una riga rispetta la condizione specificata nella query esterna se il valore della colonna che introduce la sottoquery è maggiore di almeno uno dei valori dell'elenco restituito dalla sottoquery. La query seguente, in cui viene illustrata una sottoquery introdotta da un operatore di confronto modificato da ANY, trova i prodotti con un prezzo di listino maggiore o uguale al prezzo di listino massimo di tutte le sottocategorie di prodotto. WHERE prezzo >= ANY (SELECT MAX (prezzo) 3

FROM prodotti GROUP BY codicecategoria) Per ogni sottocategoria di prodotto, la query interna trova il prezzo di listino massimo. La query esterna esamina tutti i valori e determina quali prezzi di listino di singoli prodotti sono maggiori o uguali al prezzo di listino massimo delle sottocategorie di prodotto. Se ANY viene sostituito da ALL, la query restituirà unicamente i prodotti con un prezzo di listino maggiore o uguale a tutti i prezzi di listino restituiti dalla query interna. Se la sottoquery non restituisce valori, anche la query non restituisce alcun valore. L'operatore =ANY equivale a IN. WHERE codicecategoria IN WHERE nome = 'Ruote'); Tale query è equivalente a: WHERE codicecategoria = ANY WHERE nome = 'Ruote'); Sottoquery con EXISTS Le sottoquery introdotte dalla parola chiave EXISTS fungono da test di esistenza dei dati. La clausola WHERE della query esterna verifica l'esistenza delle righe restituite dalla sottoquery. La sottoquery non restituisce dati, ma TRUE o FALSE. La query seguente individua i nomi di tutti i prodotti nella categoria Ruote : WHERE codicecategoria EXISTS (SELECT * C INNER JOIN Prodotti P WHERE C.nome = 'Ruote'); 4

Per determinare i risultati di questa query, è necessario considerare di volta in volta se nel nome di ogni prodotto la sottoquery restituisce almeno una riga, in altri termini, se il test di esistenza restituisce TRUE. Sottoquery con NOT EXISTS La parola chiave NOT EXISTS funziona in modo analogo a EXISTS, con la differenza che la clausola WHERE in cui è specificata viene soddisfatta se la sottoquery non restituisce alcuna riga. Per trovare, ad esempio, i nomi dei prodotti che non fanno parte della sottocategoria ruote : WHERE codicecategoria NOT EXISTS (SELECT * C INNER JOIN Prodotti P WHERE C.nome = 'Ruote'); 5

ALTRI ESEMPI 6

7