Brook Preloader

DDL, gestione delle TABELLE

Le tabelle sono la struttura base di immagazzinamento dati, sono composte da colonne regolate da vincoli sia interni che esterni. Si definisce vincolo interno una tipologia di vincolo che corrisponde al dato contenuto nella struttura, un vincolo esterno invece si occupa di gestire le regole di interazione con le altre tabelle, quindi con i dati che sono all’esterno della tabella selezionata.

 


 

CREATE TABLE

Comando di creazione di una tabella, vediamo prima un esempio per poi illustrare le diverse caratteristiche di dominio:

 

CREATE TABLE Persona (
    nome VARCHAR(250) NOT NULL,
    cognome VARCHAR(250) NOT NULL,
    cod_fis VARCHAR(16) NOT NULL,
    PRIMARY KEY(cod_fis)
);

Il comando CREATE TABLE <nome tabella> contiene all’interno delle parentesi tonde “()” tutte le caratteristiche di un record, esse devono rispettare il formalismo <nome colonna> <dominio> <vincoli>.

Nella riga 2 viene definita la colonna nome con una tipologia di dominio sequenza di caratteri con una lunghezza massima di 250 caratteri (compreso gli spazi). Il vincolo NOT NULL è introdotto per evitare che l’utente (o il software che interagisce con il DBMS) imposti un valore nullo in quel campo.

ATTENZIONE: Un valore nullo ed una stringa vuota sono due cose totalmente diverse, dire che un campo è nullo implica che il valore non è assegnato, al contrario immettere una sequenza di caratteri di lunghezza zero, ad esempio una stringa delimitata dall’apice ” corrisponde comunque ad allocare in memoria una sequenza di caratteri.

Ecco il risultato della tabella appena creata:

 

----------------------------
| nome | cognome | cod_fis |
----------------------------
|      |         |         |
----------------------------

 

PRIMARY KEY

Una delle caratteristiche principali nello script illustrato è la PRIMARY KEY(<nome colonna>), viene utilizzata per identificare univocamente un dato relativo alla colonna selezionata (nel nostro caso il cod_fis) all’interno della tabella.

È buona norma immettere all’interno di una tabella una chiave primaria per identificare univocamente uno ed un solo record. Il limite da rispettare è l’impossibilità di dichiarare più di una chiave primaria in una singola tabella.

Un altro modo più compatto di dichiarare una PRIMARY KEY è quello di introdurlo subito dopo il dominio:

 

CREATE TABLE Persona (
    nome VARCHAR(250) NOT NULL,
    cognome VARCHAR(250) NOT NULL,
    cod_fis VARCHAR(16) NOT NULL PRIMARY KEY
);

 


 

DROP TABLE

Per eliminare una singola tabella e tutti i dati presenti al suo interno possiamo utilizzare il comando:

 

DROP TABLE Persona;

 

 

ALTER TABLE, le operazioni sulle colonne.

Il comando di ALTER <nome tabella> <tipo di alterazione> <campo da modificare> viene utilizzato per modificare una tabella già esistente. Questo importante strumento ci aiuterà nella modifica di tabelle preesistenti con dei dati già presenti al loro interno.

Vediamo quali sono i principali comandi di alterazione di una tabella:

 


 

1. ADD COLUMN

 

ALTER TABLE Persona ADD COLUMN num_tel VARCHAR(100);

Viene utilizzato per aggiungere alla tabella Persona una nuova colonna chiamata num_tel con dominio VARCHAR(100).

La nuova tabella sarà composta in questo modo:

 

--------------------------------------
| nome | cognome | cod_fis | num_tel |
--------------------------------------
|      |         |         |         |
--------------------------------------

Come possiamo vedere il nuovo campo viene appeso ovvero viene inserito nell’ultimo posto in tabella, per scegliere la posizione della nuova colonna vediamo il prossimo comando.

 


 

2. ADD COLUMN … AFTER …

 

ALTER TABLE Persona ADD COLUMN num_tel VARCHAR(100) AFTER cognome;

Aggiungerà alla tabella Persona la colonna num_tel subito dopo la colonna cognome. Attenzione, non è possibile sequenzialmente aggiungere due colonne con lo stesso identificativo, o utilizziamo questo comando o quello precedente.

La nuova tabella sarà composta in questo modo:

 

--------------------------------------
| nome | cognome | num_tel | cod_fis |
--------------------------------------
|      |         |         |         |
--------------------------------------

 


 

3. DROP COLUMN

 

ALTER TABLE Persona DROP COLUMN num_tel;

Esattamente come i suoi predecessori, il comando DROP elimina la colonna selezionata, tutti i dati presenti nella colonna saranno irrimediabilmente persi lasciando intatte tutte le altre caratteristiche dei record.

La nuova tabella sarà composta in questo modo:

 

----------------------------
| nome | cognome | cod_fis |
----------------------------
|      |         |         |
----------------------------

 


 

4. MODIFY COLUMN

 

ALTER TABLE Persona MODIFY COLUMN cognome VARCHAR(500) NOT NULL;

Utilizzato per modificare il dominio ed i vincoli rispetto alla colonna, in questo caso abbiamo impostato il limite massimo alla sequenza di caratteri ammissibili a 500.

 

 

I valori AUTO_INCREMENT

In un DBMS MySQL possiamo utilizzare i valori auto-incrementali per definire in maniera automatica degli identificatori univoci, vediamo come viene modificato il DDL della tabella:

 

CREATE TABLE Persona (
    personaID INTEGER PRIMARY KEY AUTO_INCREMENT
    nome VARCHAR(250) NOT NULL,
    cognome VARCHAR(250) NOT NULL,
    cod_fis VARCHAR(16) NOT NULL
);

In questo modo la tabella creata ha le seguenti caratteristiche, il primo dato verrà popolato in automatico dal sistema come numero INTEGER (intero) sempre crescente.

 

--------------------------------------------------
| personaID | nome | cognome | num_tel | cod_fis |
--------------------------------------------------
|         1 |  ... |     ... |     ... |     ... |
|         2 |  ... |     ... |     ... |     ... |
|         3 |  ... |     ... |     ... |     ... |
--------------------------------------------------