Oltre ai tipi numerici, visti nella passata lezione, è necessario ricordare un altro fondamentale tipo di dato supportato da MySQL: i dati stringa. Come per i valori numerici, anche per le stringhe, MySQL offre diverse tipologie tra cui scegliere quella più adatta. Vediamole in una tabella riepilogativa:
Tipi di dati per le stringhe
Tipo | Dimensioni massime | Memoria occupata |
---|---|---|
CHAR(n) | 255 byte | n byte |
VARCHAR(n) | 255 byte | LEN + 1 byte |
TINYTEXT | 255 byte | LEN + 1 byte |
TINYBLOB | 255 byte | LEN + 2 byte |
TEXT | 65535 byte | LEN + 2 byte |
BLOB | 65535 byte | LEN + 3 byte |
MEDIUMTEXT | 1.6 Mb | LEN + 3 byte |
MEDIUMBLOB | 1.6 Mb | LEN + 3 byte |
LONGTEXT | 4.2 Mb | LEN + 4 byte |
LONGBLOB | 4.2 Mb | LEN + 4 byte |
I tipi CHAR e VARCHAR sono sicuramente i tipi più utilizzati. La differenza tra questi due tipi è data dal fatto che mentre VARCHAR ha lunghezza variabile, CHAR ha lunghezza fissa. Questo significa che in una colonna CHAR(10) tutti i valori memorizzati saranno lunghi 10 byte anche se costituiti da 3 soli caratteri (cosa che assolutamente non accade con VARCHAR essendo la memoria occupata pari alla lunghezza del testo + 1).
I tipi TEXT e BLOB (Binary Large OBject) consentono di memorizzare grandi quantità di dati: TEXT è utilizzato per dati di tipo testuale, mentre BLOB è utilizzato per ospitare dati binary (ad esempio il sorgente di un’immagine).
I modificatori per i campi di tipo stringa
L’unico modificatore che può essere utilizzato per i campi destinati ad ospitare dati stringa è BINARY il quale può essere utilizzato con CHAR o VARCHAR qualora questi campi siano destinati ad ospitare dati binari (pur non rendendosi necessario utilizzare un campo della famiglia BLOB).
Modificatori universali (sia per campi numerici che testuali)
Alcuni modificatori possono essere utilizzati tanto con campi numerici quanto con campi di tipo stringa. Questi sono:
- DEFAULT – Può essere utilizzato con tutti i tipi di dati ad eccezzione di TEXT e BLOB. Serve per indicare un valore di default per il campo qualora questo venga lasciato vuoto.
- NULL / NOT NULL – Può essere utilizzato con tutti i tipi di campi e serve per definire se un dato campo può avere un valore NULL oppure no.
- UNIQUE – Con UNIQUE si imposta una regola di unicità, questo significa che nessun dato contenuto nella colonna può essere ripetuto: ogni dato deve, quindi, essere unico e se si cerca di inserire un dato duplicato si riceve un errore.
Oltre a questi devono essere segnalati altri due modificatori:
- PRIMARY KEY – Può essere utilizzato con tutti i tipi di dati (numerici e stringa) ed è una sorta di variante di UNIQUE che consente di creare un indice primario sulla tabella.
- INDEX – E’ utilizzato per creare un’indice nella tabella ai fini di migliorare le performances di accesso ai dati.
Di questi ultimi due modificatori parleremo diffusamente nella lezione dedicata agli indici.