Linguaggio SQL [DB2]

[Lezione 2] - DDL (Data Definition Language)

14/02/2017


Insieme di istruzioni per la definizione e la modifica di database, tabelle e indici e per l’assegnazione delle autorizzazioni a gestirla:

ALTER TABLE

Questo comando modifica la struttura fisica di una tabella.

sintassi del comando

 ALTER TABLE nome_tabella 
 ADD nome-colonna | DROP nome-colonna



Altre clausole possibili in DB2 sono :

- PRIMARY KEY (nomi-colonne)
- FOREIGN KEY (nomi-colonne) REFERENCES nome-tabella
- DROP PRIMARY KEY
- DROP FOREIGN KEY

esempio

 ALTER TABLE tb_clienti 
 ADD CELLULARE CHAR(18)



Il DB2 inserirà un valore nullo in tutte le righe della colonna aggiunta, infatti, nell’istruzione precedente, non è possibile specificare NOT NULL ma è possibile invece utilizzare NOT NULL WITH DEFAUL.



ALTER INDEX

Questo comando modifica un indice precedentemente creato.



ALTER STOGROUP

...



ALTER TABLESPACE

Questo comando modifica un tablespace precedentemente creato.



COMMENT ON

...



CREATE DATABASE

Questo comando crea un database nuovo.



CRATE TABLE

Questo comando ricopre un compito molto importante e cioè quello di definire le componenti strutturali e le regole di integrità del modello relazionale.
I caratteri utilizzabili per il nome di una tabella sono :
   - Lettere
   - Numeri
   - Caratteri @,#,$ oppure _

sintassi del comando

 CREATE TABLE nome_tabella 
 ( nome-colonna tipo-colonna(dimensione) NOT NULL,
 ...
 PRIMARY KEY (nome-colonna, nome-colonna),
 FOREIGN KEY (nome-colonna) REFERENCES nome-tabella-esterna,
 FOREIGN KEY (nome-colonna) REFERENCES nome-tabella-esterna)
 IN DATABASE nome-database



esempio

 CREATE TABLE tb_clienti 
 (CODICE INTEGER NOT NULL PRIMARY KEY,
 NOME     CHAR(30) NOT NULL,
 COGNOME  CHAR(30) NOT NULL UNIQUE,
 TELEFONO CHAR(18))
 IN DATABASE db_prova



La clausola NOT NULL sta a significare che per quella colonna non sono consentiti valori nulli. Se si usasse la clausola NOT NULL WITH DEFAULT il DB2 inserirebbe un valore predefinito nel caso in cui non venga immesso nessun valore. Il valore scelto dal DB2 dipenderebbe dal tipo di dato della colonna. I valori possibili sono : 0, spazio, CURRENT DATE, CURRENT TIME, CURRENT TIMESTAMP.
La clausola UNIQUE sta a significare che per quella colonna non dovranno esistere valori duplicati all’interno della tabella.
La clausola PRIMARY KEY può essere specificata come nell’esempio solamente se la chiave è rappresentata da una sola colonna.
La chiave primaria della tabella dovrà essere unica all’interno della tabella e le colonne che la compongono non dovranno contenere valori nulli. Il DB2 obbliga ad assicurarae questa unicità definendo per la tabella un indice unico(CREATE INDEX), specificando la chiave primaria come chiave indice, altrimenti questa potrebbe anche assumere valori uguali all’interno della tabella stessa.
Se una tabella ha una o più chiavi esterne (FOREIGN KEY) questa viene detta tabella dipendente mentre la tabella che ha come chiave primaria (PRIMARY KEY) questa chiave esterna viene detta tabella genitore.



CREATE INDEX

La crazione di un indice comporta un più veloce accesso ai dati in quanto questi vengono organizzati sottoforma di una struttura ad alberoche indirizza in modo ascendente o discendente le righe di una tabella.

sintassi del comando

 CREATE [UNIQUE] INDEX nome_indice
 ON nome-tabella (colonne-indice [ASC | DESC],… ) 



La clausola UNIQUE indica l’univocità di tutte le colonne che compongono l’indice.



CREATE STOREGROUP



CREATE SYNONYM

Questo comando serve a creare un sinonimo per un nome di una tabella o di una vista.

sintassi del comando

 CREATE SYNONYM nome_sinonimo FOR utente.nome-tabella 





CREATE TABLESPACE

...



CREATE VIEW

La Vista può essere definita come una tabella logica che deriva da una o più tabelle o viste. I comandi di INSERT, UPDATE e DELETE si possono usare solamente i casi particolari (es. la vista è creata da una sola tabella sotto determinate condizioni).

sintassi del comando

 CREATE VIEW nome_vista
    (colonne-vista, … )
 AS SELECT nomi-colonne
    FROM nome-tabella 
    WHERE condizione





DROP DATABASE

Questo comando cancella fisicamente la tabella.

sintassi del comando

 DROP TABLE nome_tabella 





DROP INDEX

Elimina un indice associato ad una tabella precedentemente creato.



DROP STOGROUP

...



DROP SYNONYM

Elimina un sinonimo precedentemente creato per un nome di una tabella o di una vista.



DROP TABLE

Elimina fisicamente una tabella e tutti i suoi dati.



DROP TABLESPACE

Elimina fisicamente una tabelspace.



DROP VIEW

Elimina fisicamente una vista precedentemente creata.



DECLARE TABLE

...



DESCRIBE

...



INCLUDE

...



LABEL ON

...


< lezione precedente      lezione successiva >