Breve corso di SQL - DDL
Ricordiamo che la sigla DDL sta per "Data Definition Language" ed è la parte del linguaggio SQL dedita alla creazione e gestione della struttura del database.
I (pochi) comandi base per la
definizione del database servono più per effettuare piccole modifiche al
database stesso che a progettare e creare tutta la struttura della base dati.
A questo scopo quasi tutte le società che forniscono DBMS hanno creato
strumenti visuali per la creazione e manutenzione del database stesso,
lasciando al linguaggio SQL l'incarico di aggiornare e modificare le
strutture del DB all'interno di programmi. Il comando CREATE TABLE
Il comando SQL-DDL più conosciuto è sicuramente il
comando CREATE TABLE, che viene utilizzato ovviamente per la creazione
di nuove tabelle. La sintassi è:
CREATE TABLE NomeTabella (Field1 Type1 [(dimensioni)] [NOT NULL] [index1], ....)
I primi tre sono parametri obbligatori (anche se è possibile a volte creare tabelle senza alcun campo):
NomeTabella è il nome della tabella che si vuole creareGli altri sono parametri facoltativi: dimensioni indica la lunghezza del tipo (es. String (50) )NOTA: Per chiarezza e semplicità sorvolo volutamente su ulteriori parametri dei comandi SQL-DDL come indici multicampo, vincoli (CONSTRAINT) assegnazione di chiavi primarie e secondarie, rimando quindi ad una buon manuale di SQL o ai vari manuali dei DBMS per un approfondimento. Esempio: Vediamo un semplice esempio di comando CREATE TABLE: CREATE TABLE Anagrafica (Nome as String (30), Cognome as String (50) NOT NULL, Età as Integer)
Crea la tabella di nome
Anagrafica, con i campi:
Nome Il comando ALTER TABLE
Altrettanto utile e forse maggiormente utilizzato è il
comando ALTER TABLE che permette di modificare la struttura di una
tabella esistente. ATTENZIONE! L'utilizzo improprio di questo comando può
portare alla perdita irreparabile di parte dei dati contenuti nel Database.
Sintassi: ALTER TABLE NomeTabella {ADD {COLUMN Field1 Type1 [(dimensioni)] [NOT NULL], DROP {COLUMN Field2 }
Il subcommand ADD
permette di aggiungere un campo alla tabella, mentre DROP elimina un
campo esistente. Ad esempio, rifacendosi alla tabella Anagrafica creata in precedenza: ALTER TABLE Anagrafica ADD COLUMN Sesso String(1) NOT NULL, DROP COLUMN Età
Trasforma la struttura della
tabella nella seguente:
NomeOvviamente tutti i dati eventualmente presenti nel campo Età sono andati persi. Il comando CREATE INDEX
Un indice è una struttura ausiliaria che permette di
velocizzare alcuni tipi di operazioni sulle tabelle di un database. Per
esempio se io so che farò spesso ricerche per Cognome sulla mia tabella
anagrafica mi torna utile creare un indice sul campo Cognome, in
modo da velocizzare il recupero dei dati. Sintassi: CREATE INDEX indice ON NomeTabella (Field1 [ASC|DESC][, ...])
Per creare l'indice appena
descritto dovrò inserire il comando SQL-DDL:
CREATE INDEX IndiceCognome ON Anagrafica (Cognome ASC)
ASC sta ovviamente per
ASCENDENT (crescente) mentre DESC sta per decrescente.
Il comando DROP
Il comando DROP, altrettanto potente e utile quanto
pericoloso, permette di cancellare tabelle e indici dal
database. ATTENZIONE! Questo comando comporta la perdita di dati, quindi utilizzatelo con cautela. Sintassi: DROP {TABLE NomeTabella | INDEX indice ON NomeTabella}
I comandi possibili sono
quindi due, il drop di un indice e il drop di una tabella, quasi tutti i DBMS
non permettono la cancellazione di una tabella se sono presenti indici
agganciati, quindi per eliminare la tabella Anagrafica dovremo
procedere come segue:
DROP INDEX IndiceCognome ON Anagrafica
Che elimina l'indice che
avevamo associato al campo Cognome e quindi:
DROP TABLE Anagrafica
Che elimina la tabella dal
database, portando alla perdita dei dati ivi contenuti.
Conclusioni
Questo
breve articolo non ha la pretesa di essere esaustivo, ma è nato dall'esigenza
di introdurre le persone alla conoscenza del linguaggio SQL, che spesso
sembra più complesso di quanto sia in realtà.
Solo l'utilizzo frequente e la creazione di un gran numero di esempi può portare alla padronanza del linguaggio stesso. Rimando ad un buon manuale di SQL per una trattazione più approfondita.
|
||||||||||||||||||||||||||||||