Il Data Description Language

Il DDL è il linguaggio usato per descrivere la struttura del Data Base. Con questo linguaggio possiamo quindi creare nuovi DB, e all'interno di questi creare nuove tabelle e modificarne la struttura.

Creare un DataBase

L'istruzione SQL per creare un nuovo DB è:
CREATE DATABASE nome;

Creare una tabella

Per creare una tabella, bisogna aver selezionato un Data Base tra quelli disponibili, all'interno del quale la tabella verrà, creata. L'istruzione è:
CREATE TABLE nome-tabella (nome-dato tipo(dimensione), ....);
Tra le parentesi compare un elenco delle colonne della tabella: per ognuna bisogna specificare il nome, il tipo di dato e la lunghezza massima prevista.

Es: CREATE TABLE alunni (
cognome CHAR(25),
nome CHAR(20),
classe CHAR(3) );

Specificare le chiavi

Nella creazione della tabella è possibile aggiungere delle clausole per creare degli indici (chiavi).
Anzi, la creazione della chiave primaria è, da considerarsi obbligatoria, anche se MySQL consente anche di creare tabelle senza indici, che possono essere aggiunti successivamente.

Sono possibili le seguenti clausole:

PRIMARY KEY (colonna/e)
consente di creare la chiave primaria, sulla colonna o elenco di colonne indicate
UNIQUE (colonna/e)
allo stesso modo, crea una chiave univoca secondaria
INDEX (colonna/e)
crea una chiave secondaria che può anche essere duplicata

Es: CREATE TABLE prova (
id TINYINT UNSIGNED AUTO_INCREMENT,
chiave_unica CHAR (20),
chiave CHAR (50),
PRIMARY KEY(id),
UNIQUE(chiave_unica),
INDEX(chiave) ) ;

Specificare le chiavi esterne

N.B.: Le chiavi esterne non esistono nelle tabelle di tipo MySql, ma solo in quelle di tipo InnoDB.
Per dichiarare una chiave esterna si usa la clausola:
FOREIGN KEY (colonna/e)
REFERENCES nome_tabella (colonna/e)
ON DELETE opzione
ON UPDATE opzione
dove l'opzione indica il vincolo di integrità referenziale e può essere scelta tra le seguenti:

CASCADE
l'operazione compiuta sulla chiave primaria si propaga a tutte le chiavi esterne collegate
SET NULL
se la chiave primaria viene modificata o cancellata, le chiavi esterne collegate diventano nulle
RESTRICT
l'operazione viene negata se ci sono chiavi esterne collegate

Modificare la struttura di una tabella

Modificare la struttura della tabella può voler dire aggiungere altre colonne, o degli indici (chiavi). L'istruzione da usare è:
ALTER TABLE nome ADD COLUMN nome-dato tipo(dimensione);
N.B.: si può specificare alla fine la clausola opzionale: FIRST oppure AFTER nome-dato, in modo da posizionare la colonna dove si desidera
ALTER TABLE nome ADD INDEX nome-indice (nome-dato, ...);
N.B.: se la chiave è composta, compare più di un nome-dato.

E' possibile anche eliminare colonne o indici:
ALTER TABLE nome DROP COLUMN nome-dato;
ALTER TABLE nome DROP INDEX nome-indice;

Il Data Manipulation Language

Inserire una nuova riga in una tabella

L'istruzione per aggiungere una nuova istanza dell'entità è:
INSERT INTO tabella (nome-dato, ...) VALUES ('valore', ...);
Per ogni dato specificato, ci deve essere il valore corrispondente. Non è obbligatorio inserire tutte le colonne, solo quelle per cui è stata specificata la clausola NOT NULL

Cancellare una riga in una tabella

L'istruzione di cancellazione è la seguente:
DELETE FROM tabella WHERE chiave='valore';
La clausola WHERE specifica quale riga deve essere cancellata. Specificando il valore di una chiave univoca si cancella solo una riga, ma con una condizione più generica si possono cancellare contemporaneamente anche più righe, tutte quelle che soddisfano la condizione.
ATTENZIONE: se la clausola WHERE non è specificata, viene cancellato il contenuto dell'intera tabella.

Modificare i dati in una tabella

L'istruzone per aggiornare una o più colonne della tabella è:
UPDATE tabella SET nome-dato='valore', ... WHERE chiave='valore'; E' possibile modificare contemporaneamente più di una colonna (al posto dei ...)
Anche qui la clausola WHERE indica quale riga o quali righe si desidera modificare, se la clausola WHERE non è specificata, le modifiche vengono applicate a tutte le righe della tabella


Riferimenti:
MySQL Reference Manual