2 Sigda - Database

Post on 05-Dec-2014

721 views 4 download

description

 

Transcript of 2 Sigda - Database

SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA

dott. ing. Francesco Guerrafrancesco.guerra@unimore.it

dott. ing. Francesco Guerra 2SIS

TEM

I IN

FORM

ATIV

I PER L

A G

ESTIO

NE D

ELL

’AZIE

ND

A

2 DB

Introduzione al linguaggio SQL

dott. ing. Francesco Guerra 3SIS

TEM

I IN

FORM

ATIV

I PER L

A G

ESTIO

NE D

ELL

’AZIE

ND

A

2 DB

Il linguaggio SQL

SQL e’ il linguaggio di riferimento per le basi di dati relazionali.Il linguaggio SQL contiene al suo interno le funzionalità di:

DDL (Data Definition Language): insieme di comandi per la definizione dello schema di una base di dati relazionaleDML (Data Manipulation language): insieme di comandi per la modifica e l’interrogazione dell’istanza di una base di datiDCL (Data Control Language): insieme di comandi per la gestione degli utenti e dei privilegi di accesso.

dott. ing. Francesco Guerra 4SIS

TEM

I IN

FORM

ATIV

I PER L

A G

ESTIO

NE D

ELL

’AZIE

ND

A

2 DB

Il linguaggio SQL: tipi di dato

Il linguaggio SQL mette a disposizione 6 famiglie di domini elementari:

CaratteriBitTipi numerici esattiTipi numerici approssimatiData e oraIntervalli temporali

Nuove versioni dello standard (SQL:1999) hanno introdotto nuovi domini:

Boolean, BLOB, CLOB

dott. ing. Francesco Guerra 5SIS

TEM

I IN

FORM

ATIV

I PER L

A G

ESTIO

NE D

ELL

’AZIE

ND

A

2 DB

Il linguaggio SQL: definizione di tabella

Una tabella e’ costituita da una collezione di attributi e da un insieme (eventualmente) vuoto di attributi:

create table NomeTabella(NomeAttributo Dominio [Valore Default] [Vincoli]{, NomeAttributo Dominio [Valore Default] [Vincoli]}Altri Vincoli

)Vincoli intrarelazionali: check, not null, unique, primary keyVincoli interrelazionali: foreign key

dott. ing. Francesco Guerra 6SIS

TEM

I IN

FORM

ATIV

I PER L

A G

ESTIO

NE D

ELL

’AZIE

ND

A

2 DB

Il linguaggio SQL: interrogazioni

SQL esprime le interrogazioni in modo dichiarativo, ovvero viene specificato l’obiettivo dell’interrogazione e non il modo in cui ottenerlo.L’interrogazione viene passata all’ottimizzatore, un componente del DBMS che analizza l’interrogazione e formula una interrogazione nel linguaggio procedurale interno utilizzato dal DBMS (il linguaggio procedurale specifica i passi necessari per ottenere il risultato).In generale, esistono diversi modi per esprimere la stessa interrogazione.

dott. ing. Francesco Guerra 7SIS

TEM

I IN

FORM

ATIV

I PER L

A G

ESTIO

NE D

ELL

’AZIE

ND

A

2 DB

Il linguaggio SQL: interrogazioni (2)

Sintassi per l’interrogazione:Select <lista select>From <lista from>[Where <condizione>][Order by <lista order>]

Clausola select: specifica gli elementi dello schema della tabella risultatoClausola from: indica le tabelle sulle quali effettuare l’interrogazioneClausola where: specifica le condizioni sulle quali verificare l’interrogazioneClausola order by: specifica un’ordinamento del risultato

dott. ing. Francesco Guerra 8SIS

TEM

I IN

FORM

ATIV

I PER L

A G

ESTIO

NE D

ELL

’AZIE

ND

A

2 DB

Il linguaggio SQL: clausola select

E’ possibile selezionare tutti gli attributi attraverso un unico simbolo *Possono comparire delle generiche espressioni sul valore degli attributi di ciascuna riga selezionata:Select stipendio/12 as stipendio_mensile

dott. ing. Francesco Guerra 9SIS

TEM

I IN

FORM

ATIV

I PER L

A G

ESTIO

NE D

ELL

’AZIE

ND

A

2 DB

Il linguaggio SQL: clausola where predicati semplici

Predicati semplici: operatori =,<>,>, >=, <, <=pag 142/143 [BERGAMASCHI]

Nel caso in cui i predicati sono separati dall’operatore and, sono selezionate solo le righe nelle quali tutti i predicati sono veri.Quando i predicati sono separati dall’operatore or, sono selezionate solo le righe per cui almeno uno dei predicati risulta vero.L’operatore logico not è unario e inverte il valore di verita’del predicato.Se si esprime una relazione con l’uso di and e or, conviene esplicitare l’ordine di valutazione mediante l’uso delle parentesi.

Selezionare gli studenti iscritti al primo anno di corso e che risiedano a Modena o a Reggio Emilia

dott. ing. Francesco Guerra 10SIS

TEM

I IN

FORM

ATIV

I PER L

A G

ESTIO

NE D

ELL

’AZIE

ND

A

2 DB

Il linguaggio SQL: clausola where predicati semplici

Uso del like: nel confronto tra stringhe l’operatore likepermette di utilizzare dei caratteri speciali _ per rappresentare il confronto con un carattere arbitrario e % per una stringa di un numero arbitrario (eventualmente nullo) di caratteri arbitrari.

dott. ing. Francesco Guerra 11SIS

TEM

I IN

FORM

ATIV

I PER L

A G

ESTIO

NE D

ELL

’AZIE

ND

A

2 DB

Il linguaggio SQL: gestione dei duplicati

E’ possibile che una interrogazione restituisca più volte uno stesso valore (anni di corso degli studenti che abitano a Modena).

L’eliminazione dei duplicati è specificata con la parola chiave distinct.Se la clausola select contiene una primary key per ogni tabella che compare nella clausola from, il risultato non contiene dei duplicati

dott. ing. Francesco Guerra 12SIS

TEM

I IN

FORM

ATIV

I PER L

A G

ESTIO

NE D

ELL

’AZIE

ND

A

2 DB

Il linguaggio SQL

Operatori quantificati: pag 143 [BERGAMASCHI]ANY | ALL

Operatore di confronto con valori NULL:Attributo is [not] null

Ordinamento del risultato: pag 143 [BERGAMASCHI]Order by Attributo [asc | desc] {, Attributo [asc | desc]}

dott. ing. Francesco Guerra 13SIS

TEM

I IN

FORM

ATIV

I PER L

A G

ESTIO

NE D

ELL

’AZIE

ND

A

2 DB

Il linguaggio SQL: prodotto cartesiano e join

pag 144/151 [BERGAMASCHI]Sintassi:Select attrFrom Tabella [[as] Alias]

{[TipoJoin] join Tabella [[as] Alias] on CondizionediJoin}

TipoJoin:Inner default, si puo’ omettereRight outer

Left outerFull outer

dott. ing. Francesco Guerra 14SIS

TEM

I IN

FORM

ATIV

I PER L

A G

ESTIO

NE D

ELL

’AZIE

ND

A

2 DB

Il linguaggio SQL: interrogazioni innestate

Una interrogazione e’ innestata se la sua condizione e’formulata utilizzando il risultato di un’altra interrogazione, chiamata subquery:

Operatori quantificatiOperatori di setQuantificatore esistenziale

pag 152/158 [BERGAMASCHI]

dott. ing. Francesco Guerra 15SIS

TEM

I IN

FORM

ATIV

I PER L

A G

ESTIO

NE D

ELL

’AZIE

ND

A

2 DB

Il linguaggio SQL: operatori aggregati

Gli operatori aggregati sono gestiti come una estensione delle normali interrogazioni: prima viene eseguita l’interrogazione e poi viene applicato l’operatore aggregato.Ci sono 5 operatori aggregati:

CountSumMaxMinAvg

pag 159/160 [BERGAMASCHI]

dott. ing. Francesco Guerra 16SIS

TEM

I IN

FORM

ATIV

I PER L

A G

ESTIO

NE D

ELL

’AZIE

ND

A

2 DB

Bibliografia

Atzeni, Ceri, Paraboschi, Torlone: Basi di dati: Modelli e linguaggi di interrogazione, McGraw-HillBeneventano, Bergamaschi, Guerra, Vincini: Progetto di basi di dati relazionali, Pitagora Editrice Bologna, 2007

dott. ing. Francesco Guerra 17SIS

TEM

I IN

FORM

ATIV

I PER L

A G

ESTIO

NE D

ELL

’AZIE

ND

A

2 DB

Schema di esempioS(Matr,SNome,Citta,ACorso)C(CC,CNome,CD)

FK: CD REFERENCES D

D(CD,CNome,Citta)E(Matr,CC,Data,Voto)

FK: Matr REFERENCES SFK: CC REFERENCES C