Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 6 di 58
  • livello intermedio
Indice lezioni

Creazione e gestione di database e tabelle

Creiamo il nostro primo database MySQL e la sua struttura a tabelle, grazie alle istruzioni SQL messe a disposizione dal DBMS .
Creiamo il nostro primo database MySQL e la sua struttura a tabelle, grazie alle istruzioni SQL messe a disposizione dal DBMS .
Link copiato negli appunti

Iniziamo con questa lezione MySQL a costruire un database. Il lavoro verrà essenzialmente svolto impartendo ordini al DBMS attraverso il linguaggio SQL.

Per eseguire gli esempi presentati qui e nelle lezioni successive, si può utilizzare il client testuale mysql. Se ne è già parlato in precedenza, pertanto ricordiamo solo che è sufficiente, da riga di comando, invocarlo fornendo nome utente e password:

mysql -u root -p

Per i nostri scopi useremo l'account root, mentre la password sarà richiesta interattivamente.

I comandi SQL verranno impartiti direttamente nel prompt del client mysql dopo l'autenticazione o, in caso di comandi troppo lunghi come la creazione di tabelle, si potrà preparare un file ed inviarlo direttamente al client con l'operatore '<':

mysql -u root -p < test.sql;

MySQL: create database

Il primo passo da affrontare è la creazione di un database. Dal prompt di mysql possiamo innanzitutto vedere quanti database abbiamo già a disposizione, tramite il comando seguente:

show databases;

Se non ne abbiamo mai creati, probabilmente verranno mostrati solo alcuni database "di servizio", che occorrono allo stesso MySQL per svolgere il suo lavoro.

Ecco come creare un database con SQL

CREATE DATABASE nuovodb;

dove nuovodb è il nome che è stato scelto per il database da creare.

Conviene puntualizzare che anche questo comando deve terminare con un punto e virgola (;). Inoltre, sebbene CREATE DATABASE è stato scritto interamente in maiuscolo per rispettare le consuetudini e migliorare la leggibilità, MySQL non è case-sensitive per quanto riguarda il nome dei comandi. In altre parole, scrivere CReaTe DaTAbaSE nuovodb avrebbe avuto lo stesso effetto.

La prova che il database è stato creato si può quindi ottenere tramite SHOW DATABASES.

Il nuovo database non diventa però automaticamente quello attivo (cioè quello su cui i comandi SQL saranno indirizzati). Per potervi iniziare a lavorare è dunque necessario selezionare il nostro database, tramite il comando USE:

USE nuovodb;

In alternativa a mysql, si può utilizzare il manager universale da riga di comando, mysqladmin.

Anche in questo caso dovremo fornire credenziali di accesso da riga di comando e successivamente utilizzare il comando CREATE seguito dal nome del nuovo database:

mysqladmin -u root -p CREATE nuovodatabase

Per verificare l'esito del comando impartito, si può di nuovo usare SHOW DATABASES, oppure un altro programma a disposizione del DBMS, mysqlshow. Ci si dovrà far riconoscere con le opzioni -u e -p come di consueto, e tanto sarà sufficiente a vedere l'elenco dei database gestiti al momento.

mysqlshow -u root -p

Creare tabelle MySQL

Il database fornisce il contesto alla creazione del nostro progetto ma i veri nodi che costituiranno la sua rete di informazioni sono le tabelle. Di seguito impareremo a crearle, tramite un'opzione che può sembrare un'operazione semplice in molti casi, soprattutto con l'aiuto di strumenti visuali, ma che invece è un lavoro delicato e molto importante.

L'esempio proposto può essere svolto all'interno del client mysql dopo aver creato un database ed aver dichiarato di volerlo usare (direttiva USE).

CREATE TABLE `Persone` (
`id` INT NOT NULL AUTO_INCREMENT,
`nome` VARCHAR(45) NULL,
`cognome` VARCHAR(45) NULL,
`dataDiNascita` DATE NULL,
`sesso` ENUM('M','F') NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;

Il codice precedente crea una tabella denominata Persone con cinque campi di vario tipo. Durante la scrittura di un comando così lungo, nel prompt di mysql si può andare a capo; sarà poi il punto e virgola (;) a segnalare la fine dell'istruzione.

La sintassi mostra che CREATE TABLE, seguito dal nome della nuova tabella, è il comando che esegue l'operazione.

Tra le parentesi tonde vengono specificati i campi che la compongono; per ognuno di essi si indica:

  • nome del campo: nell'esempio i nomi sono, rispettivamente, id, nome, cognome, dataDiNascita, sesso;
  • tipo di dato del campo: il formato dell'informazione che vi verrà inserita. I tipi di dato saranno oggetto di approfondimento in una lezione futura della guida; al momento si consideri che quelli mostrati sono alcuni dei tipi più comuni. INT serve a specificare un numero intero, VARCHAR si utilizza per le stringhe, DATE per le date ed ENUM definisce un tipo di dato personalizzato che contempla l'assegnazione di un elemento di un limitato insieme di valori (in questo caso, si è deciso di specificare M ed F per indicare, rispettivamente, maschio e femmina);
  • parametri che seguono il tipo di dato e possono specificare vincoli attribuiti al campo: NULL indica che il campo può essere lasciato vuoto; NOT NULL, viceversa, obbliga ad assegnare un valore; AUTO_INCREMENT indica che il numero del campo può essere generato in autonomia dal DBMS in ordine progressivo.

Infine si vede che è stato specificato il campo id come chiave primaria, mediante il comando PRIMARY KEY. Una chiave primaria, argomento approfondito nel seguito, indica un valore composto da uno o più campi che individua univocamente il record in cui è collocato.

Tabelle temporanee in MySQL

È possibile anche creare una tabella temporanea utilizzando il comando CREATE TEMPORARY TABLE specificando i campi come di consueto. Questo tipo di tabelle esiste per il tempo di una sessione, il che permette a più utenti collegati, appartenenti quindi a sessioni diverse, di poter utilizzare le stesse tabelle. La loro utilità si esplica per lo più nell'immagazzinamento di dati temporanei a supporto di elaborazioni lunghe.

Altro aspetto molto utile da considerare è che se chiediamo di creare una tabella che già esiste, viene restituito un errore. Si può quindi ordinare a MySQL di creare la tabella solo nel caso in cui non ne esista già una omonima:

CREATE TABLE IF NOT EXISTS Persone
(
...
...
)

Ti consigliamo anche