Brook Preloader

DDL, gestione dello schema

In italiano il “linguaggio per la definizione dei dati”, è l’insieme dei comandi SQL che permettono di definire le strutture in cui verranno immagazzinati i dati, le tabelle e le relazioni.

Il DDL viene utilizzato per impostare vincoli di dominio, sulle colonne, delle associazioni tra tabelle e vincoli di integrità nonché controlli relativi alla sicurezza.

Vediamo l’elenco dei comandi principali di questo insieme ricordando che viene preso in esame il dialetto MySQL. Una volta completata la lettura di questo articolo, approfondite la creazione di valori auto-incrementali per la gestione del SAFE UPDATE di MySQL.

 

Gestione del DATABASE

In MySQL un Database identifica un insieme di tabelle pertinenti alla stessa organizzazione o comunque pertinenti alla risoluzione della stessa tematica. In altre parole all’interno di un Database vengono gestite tutte le strutture dati che afferiscono ad una certa tematica, due tematiche come e-commerce e gestione scolastica hanno tematiche differenti quindi le tabelle di entrambi i temi non finiranno nello stesso database.

 


 

CREATE DATABASE (sinonimo di CREATE SCHEMA) e USE

I due comandi vengono spesso abbinati insieme nello stesso script SQL dato che il CREATE DATABASE <nome database> effettua la creazione del contenitore di tabelle e lo USE <nome database> si occupa di selezionare il Database e predisporre tutti gli script eseguiti successivamente sul database selezionato.

 

CREATE DATABASE lez1_persona;
USE lez1_persona;

Se proviamo ad eseguire due volte lo stesso script ovviamente riscontreremo un errore sul CREATE DATABASE poiché il Database lez1_persona è già presente nel Database File e non è possibile creare due database con lo stesso nome.

 


 

DROP DATABASE

Il comando DROP DATABASE <nome database> si utilizza per eliminare un database identificato da un certo nome, nota bene che la distruzione di un database ha come conseguenza l’eliminazione di tutte le tabelle ed i dati che in esse sono contenute.

 

DROP DATABASE lez1_persona;

Ovviamente anche l’esecuzione multipla di questa istruzione ha come conseguenza un errore di esecuzione. La prima volta si occupa dell’eliminazione del database, la seconda volta cerca di eliminare un database inesistente scaturendo un errore.

Una variante dell’istruzione introduce una condizione che non provoca l’esecuzione degli script successivi:

 

DROP DATABASE IF EXISTS lez1_persona;

In questo caso il DBMS verifica IF EXISTS il database lez1_persona e se esiste ne effettua l’eliminazione, se il database non esiste l’operazione non viene effettuata.

ATTENZIONE: Molte volte vediamo, soprattutto in fase di prima progettazione, la combinazione:

 

DROP DATABASE IF EXISTS lez1_persona;
CREATE DATABASE lez1_persona;
USE lez1_persona;

In questo caso, nell’esecuzione sequenziale di tutte e tre le istruzioni ci predisponiamo per la distruzione del database (nel caso esista), la ricreazione e l’utilizzo. Questa tipologia di approccio è consigliata solo nella fase iniziale poiché nel caso il DB contenga dei dati, essi verranno distrutti ogni volta che eseguiamo il codice.