QL (Query Language) Alice Pavarani

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "QL (Query Language) Alice Pavarani"

Transcript

1 QL (Query Language) Alice Pavarani

2 QL Query Language Linguaggio di interrogazione dei dati, permette di: Interrogare la base di dati per estrarre informazioni Elaborare i dati Il risultato di un interrogazione è sempre una tabella Il comando di interrogazione dei dati riflette la natura dichiarativa del linguaggio SQL: le interrogazioni sul database sono eseguite specificando solo cosa si vuole ottenere, senza preoccuparsi di problemi di rappresentazione e memorizzazione dei dati.

3 Struttura di base: SELECT-FROM-WHERE La struttura più semplice di interrogazione di una base di dati è composta da 3 clausole: SELECT FROM WHERE Permette di estrapolare le informazioni, prese da una o più tabelle, che rispettano determinate condizioni SELECT Attributi FROM Tabelle WHERE Condizioni

4 PROIEZIONE (taglio verticale) Esempi Si usa una, (virgola) per separare più attributi da visualizzare nella clausola SELECT SELECT Cognome, Nome, Residenza Si ottiene l elenco con Cognome, Nome, Residenza di tutti gli Impiegati SELECT Cognome, Nome, Residenza WHERE Dipartimento = Prod Si ottiene l elenco con Cognome, Nome, Residenza di tutti gli Impiegati del Dipartimento con codice Prod SELECT IDImpiegato, Cognome, Nome WHERE Dipartimento = Prod AND Residenza = Torino Si ottiene l elenco con ID, Cognome, Nome di tutti gli Impiegati del Dipartimento con codice Prod e che risiedono a Torino SELEZIONE (taglio orizzontale) SELECT * WHERE Residenza = Roma Si ottiene l elenco completo di tutte le informazioni degli Impiegati residenti a Roma

5 SELECT La clausola SELECT richiede che venga specificata la lista degli attributi (colonne) da elencare Se sono necessari tutti gli attributi delle tabelle indicate, è sufficiente scrivere SELECT * Predicati ALL (di default) impone che nel risultato vengano incluse tutte le righe che soddisfano alle condizioni contenute nel comando DISTINCT riduce ad un unica riga tutte le righe duplicate ottenute come risultato di un interrogazione

6 Calcolo di espressioni Si utilizza la clausola AS per rinominare una colonna Con il comando SELECT si può anche richiedere il calcolo di espressioni sugli attributi dell interrogazione La tabella risultante contiene una colonna aggiuntiva con i risultati del calcolo ottenuto per ogni riga Il calcolo di espressioni non modifica il valore dell attributo in tabella SELECT Cognome, Nome, Stipendio AS Attuale, Stipendio*1.05 AS Nuovo WHERE Dipartimento = Mag Si ottiene una tabella composta da 4 colonne: Cognome, Nome, Attuale, Nuovo dove, per ogni riga, viene visualizzato sia lo Stipendio memorizzato nella tabella Impiegato (Attuale), sia il nuovo stipendio se il precedente fosse aumentato del 5% per tutti gli impiegati del dipartimento Mag (Nuovo)

7 Condizioni di ricerca: WHERE I criteri di selezione delle righe vengono determinati in base ad una o più condizioni (Vero/Falso) Nella scrittura di una condizione sono leciti i simboli: Operatori di confronto =, <, >, <=, >=, <> Connettivi logici AND, OR, NOT Altri predicati Ordine di precedenza: NOT AND OR BETWEEN / NOT BETWEEN controlla se un valore è compreso in un intervallo, estremi inclusi IN / NOT IN controlla se un valore appartiene o meno (NOT IN) ad un insieme di valori precisato dopo il predicato LIKE / NOT LIKE confronta il valore di un attributo di tipo carattere con un modello di stringa eventualmente composto da caratteri jolly IS NULL / IS NOT NULL confronta il valore di una colonna con NULL L uso di questo predicato il solo modo per controllare la presenza del valore NULL in una colonna

8 In Access: _? % * Il predicato LIKE Caratteri jolly (metacaratteri): _ (underscore) indica uno e un solo carattere qualsiasi in quella posizione della stringa % (percento) indica una sequenza di zero o più caratteri in quella posizione della stringa Esempi Il predicato LIKE utilizzato con un modello di stringa che non contiene caratteri jolly è equivalente all operatore = Attr LIKE xyz% tutti gli attributi che iniziano con xyz Attr LIKE %xyz tutti gli attributi che finiscono con xyz Attr LIKE %xyz% tutti gli attributi che comprendono xyz Attr LIKE _xyz tutti gli attributi che iniziano con un carattere e poi xyz

9 Esempi SELECT Cognome, Nome, Residenza WHERE Stipendio BETWEEN AND SELECT IDImpiegato, Cognome, Nome WHERE Residenza IN ( Roma, Milano, Torino ) SELECT IDImpiegato, Cognome, Nome WHERE Residenza NOT IN ( Roma, Milano ) SELECT IDImpiegato, Cognome, Nome WHERE Residenza IS NULL Si ottiene l elenco con Cognome, Nome, Residenza di tutti gli Impiegati aventi Stipendio compreso tra e (equivale a >= AND <=) Si ottiene l elenco con IDImpiegato, Cognome, Nome di tutti gli Impiegati con Residenza a Roma, Milano o Torino (equivale al connettivo OR tra le condizioni di uguaglianza) Si ottiene l elenco con IDImpiegato, Cognome, Nome di tutti gli Impiegati tranne quelli con Residenza a Roma o a Milano (equivale al connettivo AND tra le condizioni di disuguaglianze) Si ottiene l elenco con ID, Cognome, Nome di tutti gli Impiegati di cui non è nota la Residenza

10 JOIN Grazie al comando SELECT è possibile operare su più tabelle: operazione di JOIN Per realizzare un collegamento tra due tabelle occorre specificare nella clausola WHERE una condizione che coinvolga un attributo comune: chiave primaria chiave esterna SELECT *, Dipartimento WHERE Impiegato.Dipartimento = Dipartimento.Codice Si ottiene l elenco di tutti gli Impiegati con i dati del Dipartimento in cui lavorano Se la condizione è di uguaglianza si chiama equi-join

11 INNER JOIN La versione SQL adottata da Access prevede un altra istruzione per realizzare il JOIN tra due tabelle, del tutto equivalente alla precedente ma con una sintassi diversa SELECT * INNER JOIN Dipartimento ON Impiegato.Dipartimento = Dipartimento.Codice Se si utilizza l INNER JOIN la condizione di collegamento è scritta nella clausola FROM, dopo la parola chiave ON

12 SELF JOIN Viene chiamata SELF JOIN quella particolare operazione che collega una tabella con sé stessa Occorre utilizzare un alias per il nome della tabella, per evitare ambiguità nei ruoli dell associazione Esempio: PERSONA (CF, Cognome, Nome, Coniuge) in cui il campo Coniuge è chiave esterna riferita al campo CF di Persona SELECT Marito.Cognome, Marito.Nome, Moglie.Cognome, Moglie.Nome FROM Persona AS Marito, Persona AS Moglie WHERE Marito.CF = Moglie.Coniuge Si ottiene l elenco con Cognome e Nome di ogni coppia di Coniugi

13 JOIN esterni A A A B B B Generalmente, l equi-join NON include nella selezione risultante quelle righe di una delle due tabelle che non trovano corrispondenza nell altra (valori nulli) Esistono tre diverse forme di JOIN, detti join esterni, per rispondere a questa esigenza Left-join FROM TabellaA LEFT JOIN TabellaB ON ChiaveA = ChiaveB Right-join FROM TabellaA RIGHT JOIN TabellaB ON ChiaveA = ChiaveB Full-join FROM TabellaA FULL JOIN TabellaB ON ChiaveA = ChiaveB

14 Esempio: Left-join SELECT Descrizione, Nome, Cognome FROM Dipartimento LEFT JOIN Impiegato ON Dipartimento.Codice = Impiegato.Dipartimento Seleziona la Descrizione di tutti i Dipartimenti e, se noti, il Nome ed il Cognome degli Impiegati che vi lavorano SELECT Descrizione, Nome, Cognome FROM Dipartimento LEFT JOIN Impiegato ON Dipartimento.Codice = Impiegato.Dipartimento WHERE Cognome IS NULL Seleziona la Descrizione di tutti i Dipartimenti senza Impiegati

15

16 Ordinamenti La clausola ORDER BY consente l ordinamento dei risultati di un interrogazione, secondo una o più colonne in senso: ASC (default) = crescente per i numeri, alfabetico per le stringhe (dalla A alla Z) DESC = decrescente per i numeri, alfabetico inverso per le stringhe (dalla Z alla A) SELECT Cognome, Nome WHERE Dipartimento = Mag ORDER BY Cognome SELECT Cognome, Stipendio WHERE Dipartimento = Mag ORDER BY DESC Stipendio Seleziona Cognome e Nome degli Impiegati del Dipartimento Mag in ordine alfabetico per Cognome Seleziona Cognome e Stipendio degli Impiegati del Dipartimento Mag in ordine decrescente di Stipendio Il valore NULL compare, di norma, all inizio delle sequenze crescente e alla fine delle sequenze decrescenti

17 Funzioni di aggregazione Le funzioni di aggregazione agiscono sui valori di una singola colonna e restituiscono un unico valore (il massimo, il minimo, la somma, ) Le righe considerate per l aggregazione sono quelle prodotte dall interrogazione, cioè rispettano le eventuali condizioni (clausola WHERE) Possono essere utilizzate solo nella clausola SELECT oppure nella clausola HAVING

18 Ovviamente su attributi di tipo numerico Anche su attributi di tipo carattere (seguendo l ordine alfabetico) Funzioni di aggregazione COUNT conta il numero di righe risultanti dall interrogazione SUM calcola la somma dei valori contenuti nella colonna AVG calcola la media dei valori contenuti nella colonna MIN / MAX restituisce il minimo/massimo tra i valori della colonna Si può specificare il nome dell attributo o il carattere *: nel primo caso non vengono conteggiate le righe con valore NULL nell attributo specificato SELECT COUNT (*) WHERE Residenza = Milano SELECT SUM (Stipendio) WHERE Dipartimento = Amm SELECT AVG (Stipendio) WHERE Dipartimento = Amm SELECT MAX (Stipendio) Restituisce il numero di Impiegati residenti a Milano Restituisce la somma degli Stipendi degli Impiegati del Dipartimento Amm Restituisce la media degli Stipendi degli Impiegati del Dipartimento Amm Restituisce lo Stipendio massimo tra tutti gli Impiegati NB: L unica funzione di aggregazione che considera anche i valori NULL è COUNT(*)

19 Raggruppamenti Le funzioni di aggregazione condensano le informazioni di una tabella in un solo valore (il numero di righe, la somma, il massimo, ) Spesso è necessario sintetizzare i valori per classi omogenee secondo opportuni criteri di raggruppamento Per tale scopo si utilizza la clausola GROUP BY

20 GROUP BY La clausola GROUP BY permette di raggruppare un insieme di righe aventi lo stesso valore nelle colonne indicate dalla clausola Produce una riga di risultati per ogni raggruppamento NOTA BENE: Quando si utilizza una clausola GROUP BY, tutti gli attributi che compaiono nella lista della clausola SELECT devono essere inclusi nella clausola GROUP BY oppure devono essere argomenti di una funzione di aggregazione

21 Esempio: GROUP BY Elenca il codice dei dipartimenti (Dipartimento) in cui lavorano gli Impiegati, la somma degli stipendi (Stipendi) ed il numero di impiegati (NumDipendenti) per ogni Dipartimento SELECT Dipartimento, COUNT (ID) AS NumDipendenti, SUM (Stipendio) AS Stipendi GROUP BY Dipartimento L istruzione viene eseguita per passi: Le righe sono raggruppate per Dipartimento (clausola GROUP BY) Le funzioni di aggregazione sono applicate singolarmente su ogni raggruppamento

22 HAVING La clausola HAVING permette di imporre condizioni sui gruppi, creati precedentemente tramite la clausola GROUP BY Permette di visualizzare i soli raggruppamenti che soddisfano alle condizioni della clausola HAVING Specifica una condizione che, generalmente, controlla il valore restituito dalle funzioni di aggregazione SELECT Dipartimento, COUNT (ID) AS NumDipendenti, SUM (Stipendio) AS Stipendi GROUP BY Dipartimento HAVING COUNT (ID) >= 2 Elenca il codice dei dipartimenti in cui lavorano almeno 2 Impiegati, la somma degli stipendi (Stipendi) ed il numero di impiegati (NumDipendenti) per ogni Dipartimento

23 Comando SELECT SELECT FROM WHERE GROUP BY HAVING ORDER BY Elenco colonne da mostrare Tabelle da cui estrarre i record Condizioni che i record devono verificare Campi da considerare per i raggruppamenti Condizioni sui raggruppamenti Ordinamenti sulle colonne elencate

Linguaggio SQL seconda parte

Linguaggio SQL seconda parte Linguaggio SQL seconda parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright Istituto Italiano Edizioni Atlas Le condizioni di ricerca 2 Le condizioni di ricerca Usate nelle

Dettagli

Structured Query Language

Structured Query Language IL LINGUAGGIO SQL Structured Query Language Contiene sia il DDL sia il DML, quindi consente di: Definire e creare il database Effettuare l inserimento, la cancellazione, l aggiornamento dei record di un

Dettagli

SQL: le funzioni di aggregazione

SQL: le funzioni di aggregazione SQL: le funzioni di aggregazione funzioni predefinite che agiscono sui valori contenuti in insiemi di righe della tabella: Conteggi Somme Medie Massimi, minimi Funzione Count La funzione COUNT conta il

Dettagli

Caratteristiche dei linguaggi per Database

Caratteristiche dei linguaggi per Database IL LINGUAGGIO Caratteristiche dei linguaggi per Database I linguaggi per basi di dati relazionali possiedono i comandi per: definizione del data base; manipolazione dei dati; associazione tra tabelle diverse;

Dettagli

Select From Where...

Select From Where... Select From Where... SELECT Le colonne che saranno mostrate e in che ordine. Calcoli su colonne FROM La tabella o le tabelle usate dall interrogazione WHERE Condizione che deve essere soddisfatta dalle

Dettagli

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

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati Basi di Dati Matteo Longhi Structured Query Language Introduzione Standard creato nel 1976 da IBM Aggiornato (versione 2 nel 1992 (ANSI X3.135 e ISO 9075 Consente di: DDL: definire la struttura del DB

Dettagli

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

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013) SQL quick reference piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013) I tipi dei dati di SQL sono: delimitatori delle costanti: TEXT(n) stringa di caratteri

Dettagli

Manuale SQL. Manuale SQL - 1 -

Manuale SQL. Manuale SQL - 1 - Manuale SQL - 1 - Istruzioni DDL Creazione di una tabella : CREATE TABLE Il comando CREATE TABLE consente di definire una tabella del database specificandone le colonne, con il tipo di dati ad esse associate,

Dettagli

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA 3. Panoramica su SQL Prof. Mauro Giacomini Sommario Introduzione Istruzione SELECT Tipi di Join Subquery Comandi DML Creazione delle tabelle Introduzione

Dettagli

<Nome Tabella>.<attributo>

<Nome Tabella>.<attributo> Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno : SQL (2) Tabelle mult., variabili, aggreg, group Prof. Alberto

Dettagli

CORSO ACCESS 2000 PARTE VI

CORSO ACCESS 2000 PARTE VI Le Query Le Query selezionano dati, da una o più tabelle in un database, che soddisfano determinati requisiti e visualizzano i risultati in un foglio dati. I dati richiesti vengono visualizzati in un recordset

Dettagli

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

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi Informatica della Facoltà di Lingue e Letterature dell Università degli Studi di Torino. Qualsiasi altro Query (Interrogazioni) SQL Materiale aggiuntivo per il corso di laurea in Lingue e Culture per il

Dettagli

Il linguaggio SQL: raggruppamenti

Il linguaggio SQL: raggruppamenti Il linguaggio SQL: raggruppamenti Sistemi Informativi T Versione elettronica: 04.3.SQL.gruppi.pdf Informazioni di sintesi Quanto sinora visto permette di estrarre dal DB informazioni che si riferiscono

Dettagli

Linguaggio SQL: fondamenti D B M G

Linguaggio SQL: fondamenti D B M G Linguaggio SQL: fondamenti Istruzione SELECT: fondamenti Struttura di base Clausola WHERE Ordinamento del risultato Join Funzioni aggregate Operatore GROUP BY 2 Istruzione SELECT: esempio Trovare il codice

Dettagli

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

Il linguaggio SQL: raggruppamenti. Versione elettronica: SQLb-gruppi.pdf Il linguaggio SQL: raggruppamenti Versione elettronica: SQLb-gruppi.pdf Informazioni di sintesi Quanto sinora visto permette di estrarre dal DB informazioni che si riferiscono a singole tuple (eventualmente

Dettagli

Operatori aggregati. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni con raggruppamento

Operatori aggregati. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni con raggruppamento Operatori aggregati In algebra relazionale le espressioni vengono valutate sulle singole tuple in successione. Talvolta però possono essere necessarie informazioni derivabili dall esame di tutte le tuple

Dettagli

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

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor Contesto didattico Il seguente materiale didattico è

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 4 Raffaella Gentilini 1 / 46 Sommario 1 Join di Tabelle Join Naturale Theta Join Join Esterno 2 3 Funzioni d aggregazione La Clausola GROUP BY La Clausola HAVING

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 3 Raffaella Gentilini 1 / 52 Sommario 1 Il DML di SQL: Interrogazione di una BD 2 / 52 Data Manipulation Language (DML) Istruzioni del DML Le istruzioni del DML

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 5 Raffaella Gentilini 1 / 22 Sommario 1 Gruppi 2 / 22 Raggruppamenti Gruppi Quanto sinora visto permette di estrarre dal DB informazioni che si riferiscono a

Dettagli

SQL - Structured Query Language

SQL - Structured Query Language SQL - Structured Query Language Lab 05 Alessandro Lori Università di Pisa 27 Aprile 2012 Riepilogo esercitazione precedente Operatori insiemistici (UNION, INTERSECT, EXCEPT) Riepilogo esercitazione precedente

Dettagli

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

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni SQL [2] Concetti avanzati di SQL 2 Esempi di interrogazioni 3 Esempi di interrogazioni 4 Esempi di interrogazioni 5 Confronti che coinvolgono NULL NULL può voler dire: valore sconosciuto (esiste ma non

Dettagli

Interrogazioni complesse. SQL avanzato 1

Interrogazioni complesse. SQL avanzato 1 Interrogazioni complesse SQL avanzato Classificazione delle interrogazioni complesse Query con ordinamento Query con aggregazione Query con raggruppamento Query binarie Query annidate SQL avanzato 2 Esempio

Dettagli

Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2007 Politecnico di Torino 1 Linguaggio SQL: fondamenti Struttura di base Clausola WHEE Ordinamento del risultato Join unzioni aggregate Operatore GOU BY Istruzione SELECT: esempio di BD forniture prodotti Istruzione SELECT: esempio

Dettagli

Tipi di sottoquery SQL

Tipi di sottoquery SQL 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

Dettagli

Esempi SQL con Access. Orazio Battaglia

Esempi SQL con Access. Orazio Battaglia con Access Orazio Battaglia Consideriamo la base di dati in figura. 2 Interrogazione 1: Selezioniamo tutti gli impiegati, vogliamo Cognome, Nome e Posizione SELECT Impiegati.Cognome, Impiegati.Nome, Impiegati.Posizione

Dettagli

SQL - Sottointerrogazioni correlate

SQL - Sottointerrogazioni correlate SQL - Sottointerrogazioni correlate negli esempi visti ogni subquery viene eseguita una volta per tutte ed il valore (o insieme di valori) è usato nella clausola WHERE della query esterna è possibile definire

Dettagli

Interrogazioni Interrogazioni in SQL } L'istruzione base dell'sql per costruire interrogazioni di complessita arbitraria e lo statement SELECT } Sinta

Interrogazioni Interrogazioni in SQL } L'istruzione base dell'sql per costruire interrogazioni di complessita arbitraria e lo statement SELECT } Sinta Interrogazioni } L'istruzione base dell'sql per costruire interrogazioni di complessita arbitraria e lo statement SELECT } Sintassi di base: SELECT [DISTINCT ALL] FROM [WHERE

Dettagli

ESERCITAZIONI ACCESS

ESERCITAZIONI ACCESS ESERCITAZIONI ACCESS MS Access 2000 Struttura di riferimento: Studente (Matricola, Cognome, Nome) Esame (Matricola, Materia, Voto, Data) CREARE LE TABELLE IN SQL: Create table STUDENTE ( matricola char(6)

Dettagli

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

Linguaggio SQL. studenti matricola nome cognome citta anno 11 marco bini bologna 1985 13 laura sicuro rimini 1984 esami codice Linguaggio SQL Il linguaggio SQL (Structured Query Language) è il linguaggio standard per la definizione, manipolazione e interrogazione delle basi di dati relazionali sostenuti codice matricola anno voto

Dettagli