2 Sigda - Database

17
SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA dott. ing. Francesco Guerra [email protected]

description

 

Transcript of 2 Sigda - Database

Page 1: 2 Sigda - Database

SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA

dott. ing. Francesco [email protected]

Page 2: 2 Sigda - Database

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

Page 3: 2 Sigda - Database

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.

Page 4: 2 Sigda - Database

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

Page 5: 2 Sigda - Database

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

Page 6: 2 Sigda - Database

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.

Page 7: 2 Sigda - Database

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

Page 8: 2 Sigda - Database

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

Page 9: 2 Sigda - Database

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

Page 10: 2 Sigda - Database

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.

Page 11: 2 Sigda - Database

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

Page 12: 2 Sigda - Database

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]}

Page 13: 2 Sigda - Database

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

Page 14: 2 Sigda - Database

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]

Page 15: 2 Sigda - Database

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]

Page 16: 2 Sigda - Database

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

Page 17: 2 Sigda - Database

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