Database parte 2. Database azienda

Documenti analoghi
QL (Query Language) Alice Pavarani

Structured Query Language

Principi di Progettazione del Software a.a Il linguaggio SQL. Il Linguaggio SQL

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"

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

IL LINGUAGGIO SQL LE BASI

Caratteristiche dei linguaggi per Database

Corso di Basi di Dati

Basi di Dati: Corso di laboratorio

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

Basi di Dati: Corso di laboratorio

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

Sistemi di Elaborazione delle Informazioni

Basi di Dati: Corso di laboratorio

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

Linguaggio SQL seconda parte

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

Manuale Comandi SQL SQL. Sito per esercitarsi (on line) SQL

Basi di dati - Laboratorio

Informatica Grafica. Basi di dati parte 2

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

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

Gestione delle informazioni. Tot. h 10. Base di Dati. Tot. h 56. Grafica in C# - Laboratorio- Tot. h 40. Dipartimento Informatica Materia Informatica

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

SQL: le funzioni di aggregazione

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

Basi di Dati: Corso di laboratorio

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

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

Gestione di basi di dati relazionali con SQL (parte I) Linguaggi per basi di dati

Select From Where...

Le implementazioni nei vari DBMS relazionali commerciali

Prof. Alberto Postiglione Dipartimento di Scienze della Comunicazione Università degli Studi di Salerno

Linguaggi per basi di dati. Linguaggi per basi di dati e SQL. Linguaggi di interrogazione per basi di dati relazionali. Linguaggi di interrogazione

Linguaggi per basi di dati e SQL

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

Corso di Informatica Linguaggio SQL prima parte

<Nome Tabella>.<attributo>

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. SQL come Data Manipulation Language - (SELECT FROM WHERE ORDER BY)

Laboratorio di. Docenti: Alberto Belussi e Carlo Combi

E possibile ordinare le righe del risultato di una interrogazione attraverso la clausola order by, a chiusura di una interrogazione.

Il linguaggio SQL - Interrogazioni -

Manuale SQL. Manuale SQL - 1 -

Operatori aggregati. Gli operatori di aggregazione NON sono rappresentabili in Algebra Relazionale. conteggio, minimo, massimo, media, somma

ALGEBRA'RELAZIONALE'

PRODOTTO CARTESIANO Caso Generale

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

Sommario. Introduzione... 13

SQL DDL. Create database. Alter database. Drop database

Lezioni di Laboratorio sui Data Base

Queries su più tabelle

SQL e algebra relazionale

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

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 formato di base di un interrogazione in SQL è: SELECT R i1.c 1, R i2.c 2,..., R in.c n FROM R 1, R 2,..., R k WHERE F;

SQL - Structured Query Language

Corso di Informatica Medica

Linguaggio SQL. Prof. Giuseppe Tandoi

Basi di Dati: Corso di laboratorio

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

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

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

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

SQL /10/2016 Basi di dati - SQL 1

Linguaggio SQL: fondamenti D B M G

SQL - Sottointerrogazioni

4.SQL QUERY. Fare una query significa fare delle ricerche sul nostro database.

SQL: "storia" 31/05/2006 2

Lezione 6. Algebra e Calcolo Relazionale

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

(Lezione SQL 3) Barbara Di Camillo Dipartimento di Ingegneria dell Informazione. Università degli Studi di Padova

Archivi e basi di dati - ing. M. Cossentino. Settore. Traccia 1. Traccia 200. Settore non polarizzato

Interrogazioni semplici

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

DATABASE PER IL WEB. Programmazione Web 1

Interrogazioni complesse. SQL avanzato 1

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

Fondamenti di Informatica A. A / 1 9

Corso di. Basi di Dati I. 9. Esercitazioni in SQL: Check, asserzioni, viste

Elena Baralis 2007 Politecnico di Torino 1

Idoneita Informatica. Sistemi per la gestione di basi di Dati

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

SQL - Structured Query Language

Monday, January 24, 2011 SQL

SQL - Sottointerrogazioni correlate

Operatori derivati dagli insiemi. Algebra Relazionale. Unione. Operatori derivati dagli insiemi

MODULO 2. Query normali e parametriche Query di:

Linguaggi per Basi di Dati - 1. Algebra Relazionale. Algebra Relazionale. Linguaggi per Basi di Dati - 2. Operatori Insiemistici.

PROGETTAZIONE DI DATABASE Linguaggio SQL

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

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

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

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

Basi di Dati. Dettagli e Approfondimenti SQL-92 25/02/2004. Dettagli e Approfondimenti. DDL: Tabelle. DML: Aggiornamenti.

Transcript:

Database parte 2 Esercizio azienda SQL Ing. Lucia Vaira lucia.vaira@unisalento.it Database azienda L azienda è organizzata in dipartimenti Ciascun dipartimento ha un codice, un nome e un impiegato che lo gestisce (si deve tener traccia della data in cui viene dato l incarico al manager) Ciascun dipartimento controlla un certo numero di progetti Ciascun progetto ha un codice, un nome ed è sviluppato in una sola sede Per ciascun impiegato verrà memorizzato il codice fiscale, il nome, l indirizzo, lo stipendio, il sesso e la data di nascita Un impiegato è assegnato ad un solo dipartimento ma può lavorare su molti progetti, non necessariamente controllati dallo stesso dipartimento Bisogna tener traccia del numero di ore settimanali lavorate da un impiegato su ciascun progetto e del diretto supervisore di ciascun impiegato Si registreranno a scopi assicurativi le persone a carico di ciascun impiegato memorizzando il loro nome di battesimo, il sesso, la data di nascita e il rapporto di parentela con l impiegato stesso 1

Database azienda Costruire il diagramma ER e il modello relazionale SQL (Structured Query Language) Rappresenta lo standard tra i linguaggi per la gestione di basi di dati relazionali È un linguaggio dichiarativo (non-procedurale) à non specifica la sequenza di operazioni da compiere per ottenere il risultato È relazionalmente completo, nel senso che ogni espressione dell algebra relazionale può essere tradotta in SQL 2

SQL (Structured Query Language) Il linguaggio SQL consente di accedere ai dati, descriverli, definirli, manipolarli e interrogarli. Contiene dunque funzionalità di : Data Definition Language DDL Data Manipulation Language DML Data Control Language DCL Data Query Language DQL SQL (Structured Query Language) Data Definition Language DDL insieme di istruzioni dedicate alla definizione di dati e tabelle Command CREATE ALTER DROP Description Creates a new table, a view of table, or other objects in database Modifies an existing database object, such as a table or a column Deletes an entire table, a view of a table or other objects in the database 3

SQL (Structured Query Language) Data Manipulation Language DML insieme di istruzioni dedicate alla manipolazione di dati, include istruzioni per l'inserimento, la cancellazione e la modifica di dati. Command INSERT UPDATE DELETE Description Creates a record Modifies records Deletes records SQL (Structured Query Language) Data Control Language DCL insieme di istruzioni dedicate all accesso ai dati Command GRANT REVOKE Description Gives a privilege to user Takes back privileges granted from user 4

SQL (Structured Query Language) Data Query Language DQL insieme di istruzioni dedicate all interrogazione dei dati Command SELECT Description Retrieves certain records from one or more tables Il valore NULL Rappresenta l assenza di informazione è compatibile con ogni tipo di dato non va confuso con lo 0 o con, non sono la stessa cosa, anche se internamente possono avere la stessa rappresentazione utilizzato nelle espressioni aritmetiche, restituisce sempre il valore NULL 5

Il valore NULL Possiamo avere tre interpretazioni distinte: 1. Valore sconosciuto (valore che esiste ma che non è noto) Es. una persona ha una data di nascita, ma non è nota 2. Valore non disponibile (valore che esiste ma che è nascosto) Es. una persona ha un numero di telefono, ma non vuole che sia visualizzato 3. Attributo non applicabile (tipo di dato non definito per una certa tuple) Es. attributo ultimalaurea può essere NULL per persone che non hanno frequentato l università Il valore NULL Confronti con NULL: per verificare se un valore è NULL, occorre l operatore IS NULL o IS NOT NULL, non l operatore di uguaglianza Se A vale NULL, in SQL A = 0 è falsa A > 0 è falsa A < 0 è falsa A!= 0 è vera A = NULL è falsa A IS NULL è vera 6

Interrogazione base in SQL SELECT ListaAttributi FROM ListaTabelle [ WHERE Condizione] ListaAttributi (cosa si vuole come risultato) è la lista delle colonne da estrarre, l ordine e il nome ListaTabelle (da dove si prende) è la lista delle tabelle sulle quali verranno estratti i dati Condizione (che condizioni deve soddisfare) definisce una condizione su cui verranno filtrati i record da estrarre Interrogazione base in SQL SELECT Cosa FROM Dove lo trovo [ WHERE A queste condizioni ] Cosa intende i nomi degli attributi che si intendono ottenere dalla ricerca In caso di ambiguità (se lo stesso nome di attributo è presente in più tabelle dello stesso database) bisogna chiarire a quale ci si riferisce usando la forma tabella.attributo Per selezionare tutti gli attributi di una tabella si può usare la forma tabella.* 7

Interrogazione base in SQL SELECT Cosa FROM Dove lo trovo [ WHERE A queste condizioni ] Dove lo trovo intende l insieme delle tabelle che contengono gli attributi elencati nella clausola SELECT ( cosa ) o utilizzati in quella che specifica le condizioni Interrogazione base in SQL SELECT Cosa FROM Dove lo trovo [ WHERE A queste condizioni ] Le condizioni possono essere divise in semantiche (correlate al significato della ricerca) di join (correlate alla necessità di chiarire le relazioni fra le tabelle) Si possono (devono) combinare con operatori booleani (es. le condizioni di join devono essere in AND tra di loro) 8

Clausola SELECT Definisce le colonne da visualizzare nel risultato della query e permette anche di rinominare colonne e di generarne di nuove Corrisponde ad un operazione di proiezione L operatore * permette di recuperare tutti gli attributi della tabella specificata nella clausola FROM L operatore DISTINCT consente di rimuovere i duplicati (ALL è di default) Es. tabella persona(idpersona, CodiceFiscale, Nome,Cognome, DataNascita) La seguente query permette di recuperare l intero contenuto di persona che equivale a Clausola FROM Specifica la tabella o le tabelle su cui si fa la query Costruisce la tabella intermedia a partire da una o più tabelle, su cui operano le altre clausole (SELECT, WHERE...) La tabella intermedia è il risultato del prodotto cartesiano delle tabelle elencate Pseudonimo (alias), non obbligatorio, si usa per abbreviare la scrittura 9

Clausola WHERE Permette di filtrare le tuple in base ad una condizione In generale è costituita da un espressione logica di predicati Viene usata la logica a tre valori I predicati possono essere combinati usando gli operatori logici (AND, OR, NOT), di comparazione, matematici e operatori sulle stringhe È opzionale! Una tupla soddisfa la clausola WHERE se e solo se l espressione risulta vera per tale tupla Logica a tre valori SQL ricorre alla logica dei predicati a tre valori: Vero (V) Falso (F) sconosciuto(unknown, indicato con?) Fanno eccezione i predicati IS NULL e IS NOT NULL, il cui valore è sempre o vero o falso, anche se il valore di confronto è sconosciuto Estensione degli operatori booleani 10

Clausola ORDER BY Si usa per ordinare il risultato di una query secondo i valori di una o più colonne Per ogni colonna si specifica se l'ordinamento è per valori ascendenti (operatore ASC, di default) o discendenti (operatore DESC) Operatori Operatori sulle stringhe (e.g. LIKE) Operatori di confronto (e.g. BETWEEN, IN, NOT IN) Operatori sui valori NULL (e.g. IS NULL, IS NOT NULL) 11

Funzioni di aggregazione Elaborano un insieme di tuple ma restituiscono un unico risultato Ad eccezione di COUNT, ignorano i NULL COUNT(*) ritorna come risultato il numero di tuple che produce la SELECT, compresi i valori NULL e i valori duplicati COUNT(attributo) ritorna come risultato il numero di tuple che produce la SELECT, esclusi i valori NULL COUNT(DISTINCT attributo) ritorna come risultato il numero di tuple che produce la SELECT, esclusi i valori NULL e i duplicati Ammettono come argomento un attributo o un espressione (ma non *) SUM e AVG: argomenti numerici o tempo MAX e MIN: argomenti su cui è definito un ordinamento Clausola GROUP BY Consente di realizzare l operazione di aggregazione o raggruppamento secondo certi criteri Clausola che segue la WHERE e precede la ORDER BY (ove presente) 12

Clausola HAVING Può essere usata correttamente solo in combinazione con la clausola GROUP BY Permette di specificare condizioni sui gruppi di tuple generati dalla clausola GROUP BY in modo da selezionare solo i gruppi che rispettano certi criteri Clausola che segue la GROUP BY e precede la ORDER BY (ove presente) HAVING vs. WHERE WHERE: pone condizioni sulle colonne selezionate HAVING: pone condizioni sui gruppi creati dalla clausola GROUP BY 13

SQL Join L operazione di Join permette di correlare dati presenti in tabelle diverse Le colonne devono rappresentare lo stesso insieme di entità (devono appartenere allo stesso dominio) È espressa in SQL tramite un prodotto cartesiano a cui sono applicati uno o più predicati di join Il predicato di join esprime una relazione che deve essere verificata dalle tuple risultato della query SQL Join L operazione di join si interpreta nel seguente modo: Nella clausola FROM si genera il prodotto Cartesiano delle tabelle coinvolte Nella clausola WHERE si applicano i predicati Nella clausola SELECT si estraggono le colonne specificate nella Target List Tipi di JOIN: INNER JOIN LEFT JOIN RIGHT JOIN FULL JOIN SELF JOIN CROSS JOIN 14

Equi-Join La forma più utile e immediata della operazione di join è la equijoin tra due tabelle Questa operazione realizza l operazione di giunzione naturale definita nell algebra relazionale Restituisce una terza tabella le cui righe sono tutte e sole quelle ottenute dalle righe delle due tabelle di partenza in cui i valori delle colonne (attributi) in comune sono uguali Inner Join Per la inner-join la condizione di join non deve necessariamente essere una condizione di uguaglianza È possibile effettuare join tra colonne espresse sullo stesso dominio, seppure utilizzate per rappresentare informazioni non esplicitamente correlate. NOTA: la equi-join è un caso particolare di Inner Join 15

Self Join È il join di una tabella con se stessa occorre rinominare le tabelle in FROM Esempio: trovare per ogni impiegato il nome del suo responsabile. Il risultato non appartiene allo schema della tabella, ma al prodotto della tabella con se stessa Join espliciti Negli esempi visti finora abbiamo utilizzato la forma tradizionale di scrittura di una join mediante l uso di predicati di join nella clausola WHERE Nelle ultime revisioni allo standard sono stati introdotti, per specificare il tipo di join, dei costrutti ad hoc (non sono supportati da tutti i DBMS commerciali) Tipi di join espliciti sono: INNER JOIN CROSS JOIN (prodotto Cartesiano) OUTER JOIN 16

Inner Join Cross Join L operazione di prodotto tra due tabelle, definita nell algebra relazionale, si ottiene mediante una operazione di join espressa in maniera tradizionale in cui non venga specificata la condizione di join. Se le due tabelle sono composte rispettivamente da n e da m righe, la nuova tabella conterrà n x m righe, ottenute accodando ciascuna riga della prima tabella con ciascuna riga della seconda. 17

Outer Join Il join esterno prevede che tutte le tuple diano un contributo al risultato, estendendo con valori nulli le tuple che non hanno una corrispondenza La outer-join può mantenere i valori per cui non esiste corrispondenza per una, per l altra o per entrambe le tabelle; i tre casi vengono rispettivamente definiti 1. outer-join sinistra 2. outer-join destra 3. outer-join completa 1. Il join sinistro estende le tuple del primo operando 2. Il join destro estende le tuple del secondo operando 3. Il join completo le estende tutte Outer Join In SQL l operatore di OUTER JOIN può essere introdotto esplicitamente nella clausola FROM del comando SELECT utilizzando i costrutti: opzionale 18

19

Inner Join Rappresenta l insieme intersezione tra A e B Serve per estrarre gli elementi in comune Inner Join: Left Join 20

Right Join Full Outer Join 21

Esempio pratico tab1 tab2 NUMID NUMID 12 13 14 15 10 11 11 12 tab2 tab1 10 11 13 14 12 15 22

Esempio pratico inner join tab1 tab2 10 11 13 14 12 15 select * from tab1 inner join tab2 on tab1.numid = tab2.numid Risultato? [11, 12] Esempio pratico left join tab1 tab2 10 11 13 14 12 15 select * from tab1 left join tab2 on tab1.numid = tab2.numid Risultato? [10, 14, 11, 12] 23

Esempio pratico left join E se non volessimo considerare l intersezione? tab1 tab2 10 11 13 select * from tab1 left join tab2 on tab1.numid = tab2.numid where tab2.numid IS NULL 14 12 15 Risultato? [10, 14] Esempio pratico right join tab1 tab2 10 11 13 14 12 15 select * from tab1 right join tab2 on tab1.numid = tab2.numid Risultato? [11, 12, 13, 15] 24

Esempio pratico right join E se non volessimo considerare l intersezione? tab1 tab2 10 11 13 select * from tab1 right join tab2 on tab1.numid = tab2.numid where tab1.numid IS NULL 14 12 15 Risultato? [13, 15] Esempio pratico full join tab1 tab2 10 11 13 14 12 15 select * from tab1 full join tab2 on tab1.numid = tab2.numid Risultato? [10, 14, 11, 12, 13, 15] 25

Esempio pratico full join E se non volessimo considerare l intersezione? tab1 tab2 10 11 13 14 12 15 select * from tab1 full join tab2 on tab1.numid = tab2.numid where tab1.numid IS NULL OR tab2.numid IS NULL Risultato? [10, 14, 13, 15] 26

Database azienda - Queries 1. Selezionare il nome e l indirizzo di tutti gli impiegati che lavorano per il dipartimento Research 2. Per ogni impiegato, recuperare il nome e il cognome dell impiegato stesso e del suo immediato supervisore 3. Ottenere una lista di tutti i numeri dei progetti per i quali è coinvolto l impiegato avente cognome Smith, sia come lavoratore, sia come manager del dipartimento che controlla il progetto 4. Per ogni dipartimento, selezionare il numero di dipartimento, il numero di impiegati che ci lavorano e il loro stipendio medio 5. Per ogni dipartimento che ha più di 5 impiegati, selezionare il numero di dipartimento e il numero di impiegati che guadagnano più di 40.000 euro 27