La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Corso di Informatica (Basi di Dati) Lezione 6 (15 gennaio 2009) Linguaggio SQL: Data Definition Language (DDL) Da: Atzeni, Ceri, Paraboschi, Torlone.

Presentazioni simili


Presentazione sul tema: "1 Corso di Informatica (Basi di Dati) Lezione 6 (15 gennaio 2009) Linguaggio SQL: Data Definition Language (DDL) Da: Atzeni, Ceri, Paraboschi, Torlone."— Transcript della presentazione:

1 1 Corso di Informatica (Basi di Dati) Lezione 6 (15 gennaio 2009) Linguaggio SQL: Data Definition Language (DDL) Da: Atzeni, Ceri, Paraboschi, Torlone - Basi di Dati Lucidi del Corso di Basi di Dati 1, Prof. Carlo Batini, Laurea in Informatica, AA

2 2 Introduzione Cosè SQL (Structured Query Language)? E un linguaggio che consente di gestire le Basi di Dati relazionali. Esso è contemporaneamente un: Data Definition Language (DDL), cioè consente di creare lo schema della Base di Dati (e delle relazioni) Data Manipulation Language (DML), cioè consente di manipolare le istanze della Base di Dati

3 3 Introduzione Vedremo, in questa lezione, come SQL (parte DDL) permetta di: definire un dominio (DOMAIN) creare uno schema di Base di dati (SCHEMA) creare uno schema di relazione (TABLE) effettuare modifiche degli schemi di Base di Dati e di relazione Nota Bene: in questa e nelle successive slide le parole scritte in maiuscolo (salvo indicazione contraria) sono parole appartenenti al linguaggio SQL

4 4 Definizione dei domini Un dominio è fondamentalmente un tipo di dato (data type). Il DDL di SQL prevede: domini elementari predefiniti domini definiti dallutente (di cui non ci occuperemo…) Nel seguito verranno presentati i domini elementari indicandone la sintassi SQL.

5 5 I domini elementari I domini elementari di SQL sono: CHAR(n) o CHARACTER(n) per stringhe di n caratteri (anche uno solo) VARCHAR(n) per stringhe di lunghezza variabile BIT(n) per stringhe di n bit (anche uno solo), usati per specificare una sequenza di n proprietà tramite flag (0 per proprietà falsa e 1 per proprietà falsa)

6 6 I domini elementari I domini elementari di SQL sono: BOOLEAN per singoli valori booleani (restrizione di BIT(n)) INTEGER e SMALLINT per gli interi DECIMAL(i,j) o NUMERIC(i,j) per i decimali; i il numero di cifre significative e j il numero di cifre dopo la virgola (es. se ho un dominio DECIMAL(5,1), corrisponde a 3453,2)

7 7 I domini elementari I domini elementari di SQL sono: FLOAT, DOUBLE PRECISION e REAL per i numeri in virgola mobile (mantissa + esponente) DATE per la data strutturata in YEAR, MONTH, DAY TIME per lora strutturata in HOUR, MINUTE, SECOND TIMESTAMP per data + ora

8 8 Creazione di uno schema di Base di Dati La sintassi SQL per creare uno schema di Base di Dati è la seguente: CREATE SCHEMA …seguito dalle definizioni delle tabelle (con domini e vincoli) che costituiscono la Base di Dati. è il nome che si vuole associare alla Base di Dati come identificatore.

9 9 Creazione di uno schema di Base di Dati NOTA: non è necessario però definire tutte le tabelle (domini e vincoli) insieme a CREATE SCHEMA. Infatti le tabelle si possono aggiungere in una fase successiva (cioè dopo avere eseguito il comando CREATE SCHEMA) con il comando ALTER (che però non vedremo…). Il comando CREATE SCHEMA da solo crea dunque una Base di Dati senza tabelle.

10 10 Creazione di uno schema di relazione Il comando SQL per definire uno schema di relazione è CREATE TABLE che: crea unistanza vuota della tabella (cioè senza ennuple) permette di specificare attributi, domini, valori di default e vincoli di integrità La sintassi di CREATE TABLE è riportata nelle slide successive.

11 11 Creazione di uno schema di relazione Definizione di una tabella con N attributi (e i relativi N domini) CREATE TABLE (, …, )

12 12 Creazione di uno schema di relazione Esempio di definizione di tabella con 5 attributi (e i relativi 5 domini) CREATE TABLE Impiegati( Matricola CHAR(6), Cognome CHAR(20), Nome CHAR(20), Dipartimento CHAR(15), Stipendio NUMERIC(9) )

13 13 Creazione di uno schema di relazione Leffetto del comando CREATE TABLE dellesempio precedente è di creare la tabella vuota avente schema: Matricola CognomeNomeDipartimento Stipendio Impiegati

14 14 Creazione di uno schema di relazione In CREATE TABLE per ogni attributo può essere specificato un valore di default nel seguente modo: CREATE TABLE ( [DEFAULT ], …, [DEFAULT ] ) DEFAULT tra parentesi quadre significa che è un elemento opzionale (i valori di default possono anche non essere specificati)

15 15 Creazione di uno schema di relazione Se per un attributo A di una relazione R è definito un valore di default, quando viene inserita una ennupla che non specifica un valore per A, viene assunto il valore di default di A. In caso contrario viene assunto il valore NULL.

16 16 Creazione di uno schema di relazione Esempio di creazione di tabella con un valore di default per lattributo Stipendio: CREATE TABLE Impiegati( Matricola CHAR(6), Cognome CHAR(20), Nome CHAR(20), Dipartimento CHAR(15), Stipendio NUMERIC(9) DEFAULT 0 )

17 17 Creazione di uno schema di relazione Leffetto del comando CREATE TABLE dellesempio precedente è di creare la tabella vuota avente schema: Matricola CognomeNomeDipartimento Stipendio Impiegati Il successivo inserimento della ennupla (2345, Rossi, Mario,, Vendite), che non specifica il valore dellattributo Stipendio, comporta leffettivo inserimento...

18 18 Creazione di uno schema di relazione … della ennupla (2345, Rossi, Mario, 0, Vendite) Matricola CognomeNomeDipartimento Stipendio Impiegati Mentre linserimento della ennupla (2346, Neri, Piero, 2000, ) che non specifica il valore dellattributo Dipartimento, comporta leffettivo inserimento RossiMarioVendite 0

19 19 Creazione di uno schema di relazione … della ennupla (2346, Neri, Piero, 2000, NULL), dal momento che per lattributo Dipartimento non è stato specificato un valore di default Matricola CognomeNomeDipartimento Stipendio Impiegati 2345 RossiMarioVendite NeriPieroNULL 2000

20 20 Creazione di uno schema di relazione In CREATE TABLE per ogni attributo può essere specificato il vincolo di valore non nullo nel seguente modo: CREATE TABLE ( [NOT NULL], …, [NOT NULL] ) NOT NULL tra parentesi quadre significa che è un elemento opzionale (se non viene specificato significa che si ammettono valori nulli per lattributo)

21 21 Creazione di uno schema di relazione Se per un attributo A di una relazione R è stato definito il vincolo di NOT NULL, per A non sono ammessi valori nulli. In tale caso si può inserire in R una ennupla che non specifica il valore per A solo se per A è stato definito anche un valore di DEFAULT. In caso contrario il valore di A va sempre specificato.

22 22 Creazione di uno schema di relazione Esempio di creazione di tabella con un vincolo NOT NULL per Cognome e Nome: CREATE TABLE Impiegati( Matricola CHAR(6), Cognome CHAR(20) NOT NULL, Nome CHAR(20) NOT NULL, Dipartimento CHAR(15), Stipendio NUMERIC(9) DEFAULT 0 )

23 23 Creazione di uno schema di relazione In CREATE TABLE possono essere specificati i vincoli di chiave nel seguente modo: CREATE TABLE ( [UNIQUE], …, [UNIQUE], [UNIQUE(K 1 )],... [UNIQUE(K M )] ) K 1,… K M sono i sottoinsiemi di almeno due attributi su cui si vogliono definire delle chiavi

24 24 Creazione di uno schema di relazione Esempio di creazione di tabella con un vincolo di chiave per Matricola e uno per (Cognome,Nome,Dipartimento): CREATE TABLE Impiegati( Matricola CHAR(6) UNIQUE, Cognome CHAR(20) NOT NULL, Nome CHAR(20), Dipartimento CHAR(15), Stipendio NUMERIC(9) DEFAULT 0, UNIQUE(Cognome,Nome,Dipartimento) )

25 25 Creazione di uno schema di relazione Attenzione! Il valore NULL è considerato sempre diverso nelle diverse ennuple. Quindi le due ennuple (NULL, Rossi, Mario) e (NULL, Rossi, Mario) sono considerate diverse!

26 26 Creazione di uno schema di relazione In CREATE TABLE può essere specificato un solo vincolo di chiave primaria nel seguente modo: CREATE TABLE ( [PRIMARY KEY], …, [PRIMARY KEY], [PRIMARY KEY(K)], ) K è il sottoinsieme di almeno due attributi su cui si vuole definire la chiave primaria.

27 27 Creazione di uno schema di relazione Esempio di creazione di tabella con un vincolo di chiave primaria su Matricola: CREATE TABLE Impiegati( Matricola CHAR(6) PRIMARY KEY, Cognome CHAR(20) NOT NULL, Nome CHAR(20), Dipartimento CHAR(15), Stipendio NUMERIC(9) DEFAULT 0 )

28 28 Creazione di uno schema di relazione Esempio di creazione di tabella con un vincolo di chiave primaria per (Cognome,Nome,Stipendio) e uno di chiave su Matricola: CREATE TABLE Impiegati( Matricola CHAR(6) UNIQUE, Cognome CHAR(20) NOT NULL, Nome CHAR(20), Dipartimento CHAR(15), Stipendio NUMERIC(9) DEFAULT 0, PRIMARY KEY(Cognome,Nome,Dipartimento) )

29 29 Creazione di uno schema di relazione In CREATE TABLE può essere specificato un qualsiasi numero di vincoli di chiave esterna nel seguente modo: CREATE TABLE ( [REFERENCES ( )], …, [REFERENCES ( )], [FOREIGN KEY( ) REFERENCES ( )], … [FOREIGN KEY( ) REFERENCES (attrMListM)] )

30 30 Creazione di uno schema di relazione Si supponga ad esempio di avere creato una Base di Dati con le seguenti tre relazioni: Auto(Provincia,Numero,Cognome,Nome) Vigili(Matricola,Cognome,Nome) Infrazioni(Codice,Data,Vigile,Provincia,Numero) e di aver già creato gli schemi per Auto e Vigili su cui sono state definite due chiavi primarie, rispettivamente (Provincia,Numero) e (Matricola). La slide successiva riporta un esempio di CREATE TABLE che crea lo schema di Infrazioni in cui vengono definite la chiave esterna sullattributo Vigile rispetto alla master Vigili (e alla sua chiave primaria Matricola) e la chiave esterna sullinsieme di attributi (Provincia,Numero) rispetto alla master Auto (e alla sua chiave primaria (Provincia,Numero)).

31 31 Creazione di uno schema di relazione Esempio di creazione di tabella con vincoli di chiave esterna su (Vigile) e (Provincia, Numero) CREATE TABLE Infrazioni( Codice CHAR(6) PRIMARY KEY, Data DATE NOT NULL, Vigile INTEGER NOT NULL REFERENCES Vigili(Matricola), Provincia CHAR(2), Numero CHAR(6), FOREIGN KEY(Provincia,Numero) REFERENCES Auto(Provincia,Numero) )


Scaricare ppt "1 Corso di Informatica (Basi di Dati) Lezione 6 (15 gennaio 2009) Linguaggio SQL: Data Definition Language (DDL) Da: Atzeni, Ceri, Paraboschi, Torlone."

Presentazioni simili


Annunci Google