SQL01
SQL01
SQL
Cos'è SQL?
• Linguaggio di riferimento per le basi di dati
relazionali
• acronimo di Structured Query Language
• comprende sia un DDL che un DML
• un po' di storia
– prima proposta SEQUEL (1974);
– prime implementazioni in SQL/DS e Oracle (1981)
– dal 1983 ca. "standard de facto" dei linguaggi per basi
di dati relazionali
– ANSI-ISO standard (1986, 1989, 1992, 1999)
• recepito solo in parte (!!)
Dott.ssa Francesca A. Lisi
3
Pre-requisiti ed obiettivi
• Linguaggi per basi di dati
• Modello relazionale dei dati
• Esperienze di programmazione
Testi consigliati
• “Basi di dati - Modelli e linguaggi di
interrogazione”
di P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone
edito da McGraw-Hill, 2002
• “Guida ad SQL”
di P.J. Pratt
edito da Apogeo, 2001
• Dispense a cura del docente
– www.di.uniba.it/˜lisi/courses/basi-dati/
– biblioteca (I piano Dipartimento di Informatica)
Sommario (I parte)
• Definizione dei dati in SQL
– I domini elementari
– Definizione di domini
– Definizione di tabelle
– Vincoli intrarelazionali ed interrelazionali
Riferimenti
– cap. 4, in particolare 4.1, di Atzeni et al.
– capp. 1-2 di Pratt
Domini elementari
Definizione di domini
• Istruzione CREATE DOMAIN:
– definisce un dominio (semplice), utilizzabile in
definizioni di relazioni, anche con vincoli e valori di
default
Definizione di tabelle
• Istruzione CREATE TABLE:
– definisce uno schema di relazione e ne crea un’istanza vuota
– specifica attributi, domini e vincoli
• Istruzione ALTER:
– consente di modificare dominii e schemi di tabelle
• Istruzione DROP:
– consente di rimuovere componenti dello schema
Vincoli intrarelazionali
• NOT NULL
• UNIQUE definisce le chiavi di una relazione
• PRIMARY KEY definisce la chiave primaria di
una relazione (implica NOT NULL)
• CHECK esprime vincoli di integrità (ne parleremo
più avanti)
Matricola CHAR(6),
…,
PRIMARY KEY (Matricola)
• Sono equivalenti!
Vincoli interrelazionali
• REFERENCES e FOREIGN KEY permettono di
definire vincoli di integrità referenziale
• di nuovo due sintassi
– per singoli attributi
– su più attributi
• E' possibile definire politiche di reazione alla
violazione dell‘integrità referenziale
• CHECK, vedremo più avanti
Infrazioni
Codice Data Vigile Prov Numero
34321 1/2/95 3987 MI 39548K
53524 4/3/95 3295 TO E39548
64521 5/4/96 3295 PR 839548
73321 5/2/98 9345 PR 839548
Infrazioni
Codice Data Vigile Prov Numero
34321 1/2/95 3987 MI 39548K
53524 4/3/95 3295 TO E39548
64521 5/4/96 3295 PR 839548
73321 5/2/98 9345 PR 839548
Esercizi
• Dare le definizioni SQL delle relazioni
Rappresentanti(CodRappr, Cognome, Nome, Via, Citta, Provincia,
TotProvvigioni,PercentProvv)
Clienti (CodCliente, Cognome, Nome, Via, Citta, Provincia, Saldo,
Fido, CodRappr)
Ordini (NroOrdine, Data, CodCliente)
DettOrdini (NroOrdine, NroArt, Qta, Prezzo)
Articoli(NroArt, Descrizione, Giacenza, Categoria, PrezzoUnitario)
dimensionando opportunamente gli attributi ed indicando i
vincoli sia intrarelazionali che interrelazionali