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



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

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

Informatica II Basi di Dati (07/08) Parte 2. 4 Accesso ai dati di un DB. Accesso ai dati di un DB. Accesso ai dati di un DB

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

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

SQL - Funzioni di gruppo

Interrogazioni in SQL SQL. Interrogazioni in SQL. Sintassi. Significato dell interrogazione. Notazione

Join in SQL (primo modo) Informatica. Interrogazione 4a. Tabella Dipartimento. Per formulare interrogazioni che coinvolgono.

Query. Query (Interrogazioni) SQL SQL. Sintassi. Interrogazioni in SQL

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

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

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

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

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

Operazioni sui database

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

Istruzioni DML di SQL

Esercitazione su SQL

SQL IL LINGUAGGIO DI INTERROGAZIONE

SQL prima 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 2011/12

SQL come linguaggio di interrogazione. Basi di dati. Interrogazioni SQL. Interpretazione algebrica delle query SQL

SQL (STRUCTURED QUERY LANGUAGE)

4 SQL : Interrogazioni nidificate

Interrogazioni in SQL SQL. Interrogazioni in SQL. Cenni sull implementazione

Linguaggi per basi di dati

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

DDL DML. Tipi di linguaggi per basi di dati. Si distinguono due categorie:

Basi di dati. L Algebra Relazionale. K. Donno - L Algebra Relazionale

MAX, SUM, AVG, COUNT)

OSSIF WEB. Manuale query builder

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia:

Introduzione all Algebra Relazionale

Sistemi per la gestione di database: MySQL ( )

Il linguaggio SQL: query innestate

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

Cardinalità e identificatori. Informatica. Generalizzazioni. Generalizzazioni. Generalizzazioni. Generalizzazioni

Gli operatori relazionali

Linguaggio SQL seconda parte

Interrogazioni complesse. SQL avanzato 1

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

SQL/OLAP. Estensioni OLAP in SQL

Per visualizzare e immettere i dati in una tabella è possibile utilizzare le maschere;

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

Il linguaggio SQL: viste e tabelle derivate

Interrogazione della base di dati

L istruzione SELECT di SQL

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

Basi di Dati. Programmazione e gestione di sistemi telematici

Structured Query Language parte 1

Il linguaggio SQL. ing. Alfredo Cozzi 1

Definizione di domini

Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf

Capitolo 13. Interrogare una base di dati

Basi di Dati e Sistemi Informativi. SQL come linguaggio di manipolazione dei dati

Vincoli di integrità

Interrogazioni su più tabelle. Interrogazioni su più tabelle. Clausola where. Interrogazioni su più tabelle

SQL: Concetti Base -Prima Parte-

Documentazione SQL. Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema}

Queries su più tabelle

Database Lezione 1. Sommario. - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro) ESERCIZIO 3


Lezione V. Aula Multimediale - sabato 29/03/2008

Istruzioni SQL 1. Query di selezione 2 Istruzione SELECT 2 Istruzione SELECT DISTINCT 2 ORDER BY 3 WHERE 3 La condizione LIKE 4 BETWEEN AND 5

Il linguaggio SQL: le basi. Versione elettronica: SQLa-basi.pdf

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Basi Di Dati, 09/12/2003

DBMS (Data Base Management System)

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

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

Elaborazione Automatica dei Dati. SQL come Query Language. Enrico Cavalli. Anno Accademico Il linguaggio SQL

Informatica. Il modello relazionale: Relazioni e tabelle. Relazioni con attributi

Capitolo 4. Soluzione: Soluzione: Create domain STRING as character varying (256) default sconosciuto not null

Il Domino Character Il domino CHARACTER permette di definire attributi che contengono un singolo carattere o stringhe di caratteri di lunghezza

Modello Relazionale dei DBMS - Vincoli Tradizionalmente, esistono quattro modelli logici: Gerarchico Reticolare Relazionale A oggetti XML I modelli

Structured Query Language. Informatica Generale - SQL Versione 1.0, aa p.1/172

ALGEBRA RELAZIONALE RIEPILOGO

Associazioni. Informatica. Associazioni. Associazioni. Associazioni. Attributi. Possono esistere associazioni diverse che coinvolgono le stesse entità

Corso di Laboratorio di Basi di Dati

Basi di Dati: Corso di laboratorio

Modello Relazionale. Modello Relazionale. Relazioni - Prodotto Cartesiano. Relazione: tre accezioni. Es. Dati gli insiemi

Corso di Informatica (Basi di Dati)

Il linguaggio SQL: le basi

Basi di Dati. Esercitazione SQL. Ing. Paolo Cappellari

MODELLO RELAZIONALE. Introduzione

SQL. Structured Query Language

SQl come DML. Angelo Chianese,, Vincenzo Moscato, Antonio Picariello,, Lucio Sansone

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

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"

Domini Numerici Esatti (1) I domini numerici esatti permettono di definire attributi che contenegono valori esatti interi o con parte frazionaria.

Create la tabella Dipendenti:

User Tools: DataBase Manager

Basi di dati 9 febbraio 2010 Compito A

Algebra Relazionale e Calcolo Relazionale. L. Vigliano

Introduzione. Elenco telefonico Conti correnti Catalogo libri di una biblioteca Orario dei treni aerei

IL LINGUAGGIO SQL. Caratteristiche generali. Il comando Select. Le basi di dati ed il linguaggio SQL A.Lorenzi D.Rossi - ATLAS. Pag.

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

Ricorsione in SQL-99. Introduzione. Idea di base

Introduzione ai database relazionali

Informatica per le discipline umanistiche 2 lezione 10

Transcript:

Informatica Basi di dati parte 4 SQL Lezione 13 Laurea magistrale in Scienze della mente Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 2012 2013 1 Interrogazioni in SQL Non esiste un unico standard SQL standard Formulazione di interrogazioni (query) è parte del Data Manipulation Language, DML Anche usato neldata DeclarationLanguage Language, DDL (per esempio, per dichiarare vincoli di integrità) Paradigma dichiarativo: si specifica la descrizione dell obiettivo e non il modo con cui ottenerlo Sintassi Esistono, in generale, più modi per effettuare un interrogazione: scelta basata sulla leggibilità (più che sull efficienza ) Struttura essenziale (introdurremo le variazioni di volta in volta): select ListaAttributi (target list) ListaTabelle (clausola ) [ Condizione] (clausola ) Le parentesi quadre [ ]: indicano che il termine all interno è opzionale Può non comparire o comparire Significato dell interrogazione Si considerano la tabella/le tabelle della clausola Si selezionano i record che soddisfano la condizione della clausola (opzionale) Si danno in ouput i valori degli attributi elencati nella target list ( select ) Tabella Impiegato Impiegato(Matricola, Nome, Cognome, Dipart, Ufficio, Stipendio, Città) Impiegato Matricola Nome Cognome Dipart Ufficio Stipendio Città 45 Amministr 10 15 Milano 46 Prod 20 12 Torino 47 Giuseppe Verdi Amministr 20 13 Roma 48 Franco Neri Distrib 16 15 Napoli 49 Direzione 14 Milano 50 Lorenzo Lanzi Direzione 7 21 Genova 51 Paola Burroni Ammistr 75 13 Venezia 52 Marco Franco Prod 20 14 Roma 1

Interrogazione 1 Interrogazione 2 Cognome = * significa tutti gli attributi select Stipendio Cognome = Matricola Nome Cognome Dipart Ufficio Stipendio Città 45 Amministr 10 15 Milano 49 Direzione 14 Milano Stipendio 15 Interrogazione 2bis Interrogazione 3 select Stipendio as Salario Cognome = Salario 15 alias select Stipendio/12 as StipendioMensile Cognome = espressione StipendioMensile 1 Join in SQL (primo modo) Per formulare interrogazioni che coinvolgono più tabelle occorre fare un join In SQL un modo è: elencare le tabelle di interesse nella mettere nella le condizioni necessarie per mettere in relazione fra loro gli attributi di interesse Tabella Dipartimento Dipartimento(Nome, Indirizzo, Città) Dipartimento Nome Indirizzo Città Amministr Via Tito Livio Milano Prod P.le Lavater 3 Torino Distrib Via Segre 9 Roma Direzione Via Tito Livio Milano Ricerca Via Morone 6 Milano 11 12 2

Interrogazione 4a Interrogazione 4a Prodotto cartesiano delle due tabelle: ogni riga di una tabella in relazione con tutte le righe dell altra tabella Nome Cognome Dipart Ufficio Stipendio Città Nome Indirizzo Città Amministr 10 15 Milano Amministr Via Tito Livio Milano Amministr 10 15 Milano Prod P.le Lavater 3 Torino Amministr 10 15 Milano Distrib Via Segre 9 Roma Amministr 10 15 Milano Direzione Via Tito Livio Milano Impiegato,Dipartimento Amministr 10 15 Milano Ricerca Via Morone 6 Milano Prod 20 12 Torino Amministr Via Tito Livio Milano Prod 20 12 Torino Prod P.le Lavater 3 Torino Prod 20 12 Torino Distrib Via Segre 9 Roma Prod 20 12 Torino Direzione Via Tito Livio Milano Prod 20 12 Torino Ricerca Via Morone 6 Milano da Impiegato da Dipartimento 13 14 Interrogazione 4b Risultato interrogazione 4b Restituire tutta l informazione rispetto agli impiegati/dipartimenti (usando gli attributi Dipart e Dipartimento.Nome per mettere in relazione le due tabelle) Impiegato,Dipartimento Dipart = Dipartimento.Nome Nome Cognome Dipart Ufficio Stipendio Città Nome Indirizzo Città Amministr 10 15 Milano Amministr Via Tito Livio Milano Prod 20 12 Torino Prod P.le Lavater 3 Torino Giuseppe Verdi Amministr 20 13 Roma Amministr Via Tito Livio Franco Neri Distrib 16 15 Napoli Distrib Via Segre 9 Roma Direzione 14 Milano Direzione Via Tito Livio Lorenzo Lanzi Direzione 7 21 Genova Direzione Via Tito Livio Paola Burroni Ammistr 75 13 Venezia Amministr Via Tito Livio Milano Milano Milano Milano Marco Franco Prod 20 14 Roma Prod P.le Lavater 3 Torino Per collegare tra di loro tabelle tramite i valori uguali degli attributi La notazione punto serve per disambiguare da Impiegato da Dipartimento 15 16 Interrogazione 4c Restituire nome e cognome degli impiegati e le città in cui lavorano select Impiegato.Nome,Cognome, Dipartimento.Città Impiegato,Dipartimento Dipart = Dipartimento.Nome Suggerimento (ordine della scrittura dell interrogazione):,, target list 17 Risultato interrogazione 4c Impiegato.Nome Cognome Dipartimento.Città Milano Torino Giuseppe Verdi Milano Franco Neri Roma Milano Lorenzo Lanzi Milano Paola Burroni Milano Marco Franco Torino 18 3

Join esplicito Interrogazione 5 (join esplicito) Abbiamo visto un modo di fare il join mettendo le condizioni di join nella clausola Si può utilizzare esplicitamente un operatore di join select Impiegato.Nome, Cognome, Dipartimento.Città Impiegato,Dipartimento Dipart = Dipartimento.Nome select Impiegato.Nome, Cognome, Dipartimento.Città Impiegato join Dipartimento On (Dipart = Dipartimento.Nome) 19 20 Outer join Tabelle Guidatore e Automobile Fino ad adesso abbiamo visto inner join Parliamo adesso di outer join (joinesterno) Serve quando il join non è completo Completo: dato R1 join R2 on ( ), per ciascuna tupla di R1 esiste almeno una tupla di R2 che si combina con essa, e viceversa per R2 se si vuole mantenere l informazione anche per quelle tuple che non partecipano al join Nome Cognome Marco Neri AP 4544442R Marco Neri AP 4544442R Targa Marca Modello BB 421 JJ Uno MI 2020030U 21 22 Inner join ( normale ) Outer left join (interrogazione 6) select Nome,Cognome,Guidatore., Guidatore join Automobile on (Guidatore.=Automobile.) select Nome,Cognome,Guidatore., Guidatore left join Automobile on (Guidatore.=Automobile.) Nome Cognome Guidatore. Targa Marca Modello Nome Cognome Guidatore. Targa Marca Modello Marco Neri AP 4544442R Join non completo 23 24 4

Outer right join (interrogazione 7) Outer full join (interrogazione 8) select Nome,Cognome,Guidatore., Guidatore right join Automobile on (Guidatore.=Automobile.) select Nome,Cognome,Guidatore., Guidatore full join Automobile on (Guidatore.=Automobile.) Nome Cognome Guidatore. Targa Marca Modello BB 421 JJ Uno Nome Cognome Guidatore. Marco Neri AP 4544442R Targa Marca Modello BB 421 JJ Uno 25 26 Join naturale (interrogazione 9) select Nome,Cognome,, Guidatore natural join Automobile Nome Cognome Targa Marca Modello Sulla clausola Ammette come argomento un espressione booleana Predicati semplici combinati con not, and, or (not ha la precedenza, consigliato l uso di parentesi()) Ciascun predicato usa operatori: =, <>, <, >, <=, >= Confronto tra valori di attributi, costanti, espressioni Attributo comune: 28 Interrogazione 10 Interrogazioni 11 e 12 select Nome,Cognome Impiegato Ufficio = 20 and Dipart = Amministr Nome Giuseppe Cognome Verdi select Nome, Cognome Dipart= Prod or Dipart= Amministr select Nome Cognome= and (Dipart= Prod or Dipart= Amministr ) Nome Paola Marco Giuseppe Cognome Burroni Franco Verdi Nome 29 30 5

Operatore like Usato per i confronti con stringhe _ = carattere arbitrario % = stringa di lunghezza arbitraria (anche 0) di caratteri arbitrari Esempi: like ab%ba_ = tutte le stringhe che cominciano con ab e che hanno ba come coppia di caratteri prima dell ultima posizione (es. abjjhhdhdbak,abbap) Interrogazione 13 Cognome like _o%i or Cognome like _u%i Matricola Nome Cognome Dipart Ufficio Stipendio Città 45 Amministr 10 15 Milano 49 Direzione 14 Milano 51 Paola Burroni Ammistr 75 13 Venezia 31 32 Gestione dei valori i Campo con valore o significa: non applicabile a una certa tupla, o valore sconosciuto, o non si sa a SQL offre il predicato is : Attributo is [not] Stipendio>13: cosa succede se l attributo Stipendio è o? Controllo esplicito, ad esempio: Stipendio > 13 or Stipendio is Ordinamento Per ordinare le righe del risultato di un interrogazione, si può usare la clausola order by Esempi: Impiegati order by Matricola asc Impiegati order by Matricola desc ordine crescente ordine decrescente 33 34 Operatori aggregati SQL offre degli operatori che lavorano su più di una tupla alla volta: count,sum,max,min,avg Interrogazione 14 select count(*) Dipart = Prod count(<* [distinct all]listaattributi>) valori diversi tra loro non 35 36 6

Interrogazioni 15, 16 Gli operatori aggregati si applicano sulle tuple selezionate dalla clausola (se c è) count(<* [distinct all]listaattributi>) Numero di stipendidiversidiversi select count(distinct Stipendio) Numero di righe che hanno nome non o sum, max, min, avg Accettano solo espressioni rappresentanti valori numerici o intervalli di tempo distinct e all stesso significato di prima Altri operatori a seconda delle versioni di SQL (solitamente operatori statistici) select count(all Nome) 37 38 Interrogazioni 17, 18 Somma stipendi di Amministrazione select sum(stipendio) Dipart = Amministr i Stipendi min, max, medio degli Impiegati select min(stipendio), max(stipendio), avg(stipendio) Interrogazione 19 Max stipendio tra impiegati che lavorano in un dipartimento a Milano select max(stipendio), Dipartimento Dipart = Dipartimento.Nome and Dipartimento.Citta = Milano 39 40 Interrogazione 20 Raggruppamento con group by: Estrarre la somma degli stipendi di tutti gli impiegati dello stesso dipartimento select Dipart, sum(stipendio) Interrogazione 20 (cont.) È come se prima si facesse la query select Dipart, Stipendio ottenendo la tabella 41 42 7

Interrogazione 20 (cont.) Interrogazione 20 (cont.) Dipart Stipendio Amministrazione 22.500 Produzione 18.000 Distribuzione 22.500 Direzione 40.000 Direzione 36.500 Produzione 23.000 43 Poi le tuple si raggruppano in sottoinsiemi in base allo stesso valore dell attributo Dipart Dipart Stipendio Amministrazione 22.500 Produzione 18.000 Produzione 23.000 Distribuzione 22.500 Direzione 40.000 Direzione 36.500 44 Interrogazione 20 (cont.) Poi le tuple si raggruppano in sottoinsiemi in base allo stesso valore dell attributo Dipart Interrogazione 20 (cont.) Infine l operatore sum viene applicato separatamente a ogni sottoinsieme Dipart Stipendio Amministrazione 22.500 Produzione 18.000 Produzione 23.000 Distribuzione 22.500 Direzione 40.000 Direzione 36.500 45 Dipart sum(stipendio) Amministrazione 62.500 Produzione 41.000 Distribuzione 22.500 Direzione 76.500 46 Interrogazione non corretta Interrogazione 21 (versione scoretta) select Ufficio A ogni valore dell attributo Dipart corrisponderanno diversi valori dell attributo Ufficio Dopo l esecuzione del raggruppamento, invece, ogni sottoinsieme di righe deve corrispondere a una sola riga nella tabella risultato della interrogazione Dipartimenti, il numero di impiegati di ciascun dipartimento, e la città sede del dipartimento select Dipart, count(*), D.citta, Dipartimento Impiegato.Dipart=Dipartimento.Nome scorretta! 47 48 8

Interrogazione 21 (versione coretta) Predicati sui gruppi Dipartimenti, il numero di impiegati di ciascun dipartimento, e la città sede del dipartimento select Dipart, count(*), D.Citta I, Dipartimento D I.Dipart=D.Nome, D.Citta group by: le tuple vengono raggruppate in sottoinsiemi Si potrebbe volere considerare solo sottoinsiemi che soddisfano una certa condizione clausola : applicata alle singole righe clausola having: applicata al risultato della group by ogni sottoinsieme di tuple della group by viene selezionato se il predicato di having è soddisfatto corretta! 49 50 Interrogazione 22 Dipartimenti che spendono più di 50 talleri in stipendi select Dipart, sum(stipendio) having sum(stipendio) > 50 Predicati sui gruppi Consigli di buon uso Having è da usare con group by Senza group by: l intero insieme di righe è trattato come un unico raggruppamento Sela condizione nonè soddisfatta il risultato sarà vuoto Usare solo predicati in cui ci sono operatori aggregati nella clausola having 51 52 Interrogazione 23 Dipartimenti per cui la media degli stipendi degli impiegati che lavorano nell ufficio 20 è > di 12.500 talleri select Dipart Ufficio = 20 having avg(stipendio) > 12.500 53 9