top of page

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)

 

 

 

 

 

 

bottom of page