Per stampare: Clicca qui oppure seleziona File » Stampa nel menù del tuo browser.

        -----------------------------------------------------------------------------------------------
        Questo intervento è stato stampato da Guide di Dada.Net
        raggiungibile a http://guide.dada.net
        -----------------------------------------------------------------------------------------------

By Database di Andrea Silvestri
URL: http://guide.dada.net/database/interventi/2001/03/34766.shtml

Database di Andrea Silvestri guida dal 29-12-2000

Creazione di tabelle. Seconda parte (CREATE TABLE)

Iniziamo ad analizzare una nuova istruzione, la CREATE TABLE.

L'istruzione sql che permette di creare una tabella e' la CREATE TABLE.
In fase di creazione vengono definite le colonne che la compongono, eventuali constraint o vincoli (ma che possono essere definiti anche successivamente, con un'altra istruzione), informazioni varie sulla memorizzazione dei dati sul file system (se non specificati vengono utilizzati quelli di default) piu' tutta un'altra serie di informazioni che vedremo piu' avanti (cluster,partizioni ecc.).
Come primo esempio proviamo a creare la tabella impiegati, utilizzata nell'introduzione all'istruzione select:

CREATE TABLEimpiegati(
matricolaVARCHAR2(4) NOT NULL,
nomeVARCHAR2(20) NOT NULL,
cognomeVARCHAR2(20) NOT NULL,
superioreVARCHAR2(4),
data_assDATE,
salario NUMBER(9),
sedeNUMBER);

In questo modo abbiamo creato una tabella di nome impiegati, con 7 colonne e i cui unici constraint sono i NULL/NOT NULL (da notare che non e' necessario specificare il null).
Ricreiamola specificando qualche vincolo in piu', per fare questo, dato che non possono esistere due tabelle con lo stesso nome, dobbiamo prima eliminare la tabella creata, per farlo si utilizza l'istruzione DROP TABLE:

DROP TABLE impiegati;

CREATE TABLEimpiegati(
matricolaVARCHAR2(4) NOT NULL PRIMARY KEY,
nomeVARCHAR2(20) NOT NULL,
cognomeVARCHAR2(20) NOT NULL,
superioreVARCHAR2(4) REFERENCES impiegati(matricola),
data_assDATE,
salario NUMBER(9),
sedeNUMBER NOT NULL REFERENCES sedi(sede));

Sono stati definiti tre constraint, una primary key sul campo id, una foreign key sul campo sede che referenzia la colonna sede della tabella sedi e una foreign key sul campo superiore che referenzia un campo che si trova sulla tabella stessa.
Per quanto riguarda la primary key c'e' da dire che per definizione questo tipo di vincolo impone che il campo (o i campi) che lo compongono non siano nulli e quindi il NOT NULL e' superfluo.
Le due foreign key invece possono anche essere nulle, questo torna comodo in particolare nel caso della colonna superiore, visto che e' possibile che esista almeno una persona senza un capo e quindi in questo caso il valore del campo superiore sara' null. Nel caso della sede invece, se vogliamo evitare di avere dipendenti che non sono associati ad alcuna sede, lo si deve specificare immettendo un not null. Nel prossimo intervento vedremo come definire un constraint su piu' colonne (ad esempio uno unique su nome e cognome) e come dare un nome ad ogni constraint.