I comandi DDL
CREATE TABLE
* La creazione di una tabella
CREATE TABLE nometabella
(nome_del_campo tipo_campo clausola);
Esempio
CREATE TABLE facolta
(cod_f int primary key,
nome char(10) not null,
sede char(10) );
Il tipo può essere: INT, DECIMAL, FLOAT, CHAR, SINGLE ecc...
Le clausole in dettaglio
-
la clausola NULL è da attribuire ad un campo che ha un valore non disponibile o non definito
-
la clausola NOT NULL è da attribuire ad un campo che obbligatoriamente deve essere riempito
-
la clausola DEFAULT definisce il valore da attribuire al campo al momento della creazione.
-
la clausola PRIMARY KEY definisce un campo chiave primaria
-
la clausola UNIQUE vieta la presenza in un campo di valori duplicati
-
la clausola REFERENCE definisce un vincolo di integrità referenziale.
-
la clausola NO ACTION è il valore predefinito se non viene specificata ON DELETE o ON UPDATE.
-
la clausola ON DELETE NO ACTION Specifica che se si tenta di eliminare una riga contenente una chiave a cui fanno riferimento chiavi esterne in righe esistenti in altre tabelle, verrà generato un errore e verrà eseguito il rollback dell'istruzione DELETE.
-
la clausola ON UPDATE NO ACTION Specifica che se si tenta di aggiornare un valore di chiave in una riga e alla chiave fanno riferimento chiavi esterne in righe esistenti in altre tabelle, verrà generato un errore e verrà eseguito il rollback dell'istruzione UPDATE.
-
la clausola Con CASCADE, SET NULL e SET DEFAULT, le eliminazioni o gli aggiornamenti di valori di chiave possono influire sulle tabelle con relazioni di chiave esterna tracciabili alla tabella in cui è stata eseguita la modifica. Se le operazioni referenziali di propagazione sono state definite anche nelle tabelle di destinazione, tali operazioni saranno inoltre valide per le righe eliminate o aggiornate. Non è possibile specificare la clausola CASCADE per le chiavi esterne o primarie che includono una colonna timestamp.
-
la clausola ON DELETE CASCADE Specifica che se si tenta di eliminare una riga contenente una chiave a cui fanno riferimento chiavi esterne in righe esistenti in altre tabelle, verranno inoltre eliminate tutte le righe contenenti tali chiavi esterne.
-
la clausola ON UPDATE CASCADE Specifica che se si tenta di aggiornare un valore di chiave in una riga e a tale valore fanno riferimento chiavi esterne in righe esistenti in altre tabelle, tutti i valori che compongono la chiave esterna verranno anch'essi aggiornati al nuovo valore specificato per la chiave.
-
la clausola ON DELETE SET NULL Specifica che se si tenta di eliminare una riga contenente una chiave a cui fanno riferimento chiavi esterne in righe esistenti in altre tabelle, tutti i valori che compongono la chiave esterna presenti nelle righe a cui si fa riferimento verranno impostati su NULL. Per l'esecuzione di questo vincolo è necessario che le colonne chiave esterna ammettano i valori Null.
-
la clausola ON UPDATE SET NULL Specifica che se si tenta di aggiornare una riga contenente una chiave a cui fanno riferimento chiavi esterne in righe esistenti in altre tabelle, tutti i valori che compongono la chiave esterna presenti nelle righe a cui si fa riferimento verranno impostati su NULL. Per l'esecuzione di questo vincolo è necessario che le colonne chiave esterna ammettano i valori Null.
-
la clausola ON DELETE SET DEFAULT Specifica che se si tenta di eliminare una riga contenente una chiave a cui fanno riferimento chiavi esterne in righe esistenti in altre tabelle, tutti i valori che compongono la chiave esterna presenti nelle righe a cui si fa riferimento verranno impostati sul relativo valore predefinito. Per l'esecuzione di questo vincolo è necessario che per tutte le colonne chiave esterna della tabella di destinazione sia disponibile una definizione predefinita. Se una colonna ammette valori Null e non viene impostato un valore predefinito esplicito, NULL diventa il valore predefinito implicito della colonna. Per mantenere la validità del vincolo di chiave esterna, è necessario che per i valori non Null impostati da ON DELETE SET DEFAULT esistano valori corrispondenti nella tabella primaria.
-
la clausola ON UPDATE SET DEFAULT Specifica che se si tenta di aggiornare una riga contenente una chiave a cui fanno riferimento chiavi esterne in righe esistenti in altre tabelle, tutti i valori che compongono la chiave esterna presenti nelle righe a cui si fa riferimento verranno impostati sul relativo valore predefinito. Per l'esecuzione di questo vincolo è necessario che per tutte le colonne chiave esterna della tabella di destinazione sia disponibile una definizione predefinita. Se una colonna ammette valori Null e non viene impostato un valore predefinito esplicito, NULL diventa il valore predefinito implicito della colonna. Per mantenere la validità del vincolo di chiave esterna, è necessario che per i valori non Null impostati da ON UPDATE SET DEFAULT esistano valori corrispondenti nella tabella primaria.
Per definire una chiave primaria si utilizza il termine PRIMARY KEY, mentre per definire una chiave esterna si usa il termine FOREIGN KEY.
Esempio
CREATE TABLE esame
( cod_e int primary key,
Foreign key (cod_f) REFERENCES facolta (cod_f));
PRATICA1
PRATICA2
ALTER TABLE
Operatore ALTER TABLE (permette di modificare una tabella)
-
Aggiungere un nuovo campo
ALTER TABLE <nome tabella>
ADD <nome colonna> tipo;
-
Cambiare la colonna con una nuova colonna e tipo
ALTER TABLE <nome tabella>
CHANGE <nome colonna> <nome colonna> tipo;
-
Eliminare una colonna
ALTER TABLE <nome tabella>
DROP <nome colonna>
DROP TABLE
Permette di eliminare una tabella
DROP TABLE nomeTabella
CREATE INDEX
L'istruzione CREATE INDEX viene usato per creare gli indici delle tabelle.
Gli indici permettono all'applicazione di database per trovare i dati più velocemente senza leggere l'intera tabella.
Un indice può essere creato in una tabella per trovare dati più rapidamente.
Gli utenti non possono vedere gli indici, che sono utilizzati solo per accelerare le ricerche / query.
Nota: Aggiornamento di una tabella con gli indici richiede più tempo di aggiornamento rispetto ad una tabella senza indici (perché gli indici anche bisogno di un aggiornamento).
Sintassi
sono consentiti valori duplicati
CREATE UNIQUE INDEX index_name
ON table_name (column_name)
non sono consentiti i valori duplicati
CREATE INDEX PIndex
ON Persons (LastName)