3. Tipi di dato comuni
In questo capitolo vedremo i tipi di dato più comuni che MySQL ci fornisce per creare della applicazioni basiche. Nei capitoli successivi disporrete di una reference completa, inutile ora che stiamo cercando di imparare le basi che ci consentiranno poi di padroneggiare il linguaggio.
Di seguito una lista dei tipi più comuni:
- VARCHAR
- CHAR
- TEXT e derivati
- INT e derivati
- FLOAT, DOUBLE e DECIMAL
- BOOL
- ENUM
- DATE
- DATETIME
|
serve a memorizzare stringhe di lunghezza
variabile di cui non conosciamo a priori la lunghezza, come ad esempio il
cognome di un utente. ci consente di memorizzare stringhe (o un solo carattere) di lunghezza fissa. Utile per memorizzare il codice fiscale oppure una Partita IVA di cui conosciamo già l'esatta lunghezza. |
ci servirà per salvare stringhe molto più lunghe
della capienza di un semplice VARCHAR, come ad esempio il testo
di una news.
Vediamo di seguito TEXT e le sue utili varianti:
- TINYTEXT - 255 byte
- TEXT - 65.535 byte (64KB)
- MEDIUMTEXT - 16.777.215 byte (16MB)
- LONGTEXT - 4.294.967.295 byte (4GB)
memorizza numeri interi. Vediamo velocemente le sue specifiche:
- TINYINT da -128 a 127 (UNSIGNED da 0 a 255)
- SMALLINT da -32768 a 32767 (UNSIGNED da 0 a 65535)
- MEDIUMINT da -8388608 a 8388607 (UNSIGNED da 0 a 16777215)
- INT da -2147483648 a 2147483647 (UNSIGNED da 0 a 4294967295)
- BIGINT - da -9223372036854775808 a 9223372036854775807 (UNSIGNED da 0 a 18446744073709551615)
I tipi ,
e vengono usati per memorizzare numeri in
virgola mobile.
Innanzitutto quando dichiariamo un campo di questo tipo, MySQL ci consente
di specificare due parametri, il primo per la dimensione del dato, il secondo
per la precisione di quest ultimo.
Se quindi dichiarassimo un FLOAT(5,2) potremmo rappresentare
un numero in virgola del genere: 999,99.
La differenza fra FLOAT e DOUBLE sta nel numero
di byte massimo riservati alla precisione del numero. Quattro per il FLOAT e
otto per il DOUBLE.
Il tipo DECIMAL invece viene utilizzato per specificare con esattezza lo spazio riservato alla memorizzazione e per assicurarsi che venga mantenuta l'esatta precisione del dato, utile per memorizzare dati monetari.
Un DECIMAL(5,2) ci consentirà di gestire dati da -999,99 a 999,99.
Il tipo ci consente di gestire dati di
tipo booleano ossia un campo che possa assumere solo i valori
true e false.
Nella versione MySQL 5.1, questo tipo di dato non è supportato a livello nativo,
e sarà introdotto in una versione successiva.
Attualmente il tipo BOOL non è altro che un alias del tipo
TINYINT(1). Vi troverete quindi a leggere un semplice numero
intero, considerando lo 0 come false e il numero 1
come true.
Il tipo , invece,
ci consente di impostare a priori un set di valori predefinito che un dato
può assumere. Qualunque valore proposto che non è incluso nel nostro insieme
predefinito, genererà un errore.
ENUM ci tornerà quindi molto utile con campi che potranno
assumere un'insieme di valori non molto grande che conosciamo già, come ad
esempio il sesso di una persona.
Potremmo quindi modificare la tabella "utenti" del capitolo 3 aggiungendo il campo "sesso" di tipo ENUM, specificando i valori che potrà assumere attraverso la stessa query di modifica.
ALTER TABLE `utenti`
ADD `sesso` ENUM('M','F') CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL
|
In questo modo MySQL sa che il campo sesso potrà assumere solo i valori
o e agirà di conseguenza.
Vediamo infine gli ultimi due tipi di questo capitolo. |
Con DATE possiamo memorizzare tutte le date (giorno, mese e anno) che vanno dal primo gennaio 1000 (1000-01-01) fino al 31 dicembre 9999 (9999-12-31). Con DATETIME possiamo memorizzare le stesse date di DATE ma potremo tenere traccia anche dell'orario.
La data verrà espressa in questo formato YYYY-MM-DD, mentre l'orario sarà il classico HH:MM:SS.

