disign | Tipi di dati in MySql | a digital sign for a best design!
A digital sign for a best design

Articolo stampato da http://disign.improntedigitali.it/tipi-di-dati-in-mysql-183-2-1.html

© Luca Frassineti

Programmazione 3.059 visualizzazioni

Tipi di dati in MySql

20/06/2011

Progettare un database significa costruire tabelle 'adatte' a contenere dati di tipo diverso, dimensionarle in modo sufficiente ma non esagerato.
Per farlo occorre prima di tutto conoscere quali tipi di dati possiamo impostare e con quali caratteristiche.
Ecco una breve, non esaustiva, carrellata sui tipi di dati di MySql.
Esistono poi altri tipi di dati; per la descrizione di questi tipi vi rimando alla guida ufficiale.

    Dati Numerici
    Date e Tempo
    Stringhe
    Dati Geometrici


In MySQL, tutti i tipi di colonne possono contenere (se dichiarato nella loro definizione) il valore NULL, previsto dallo standard SQL per indicare un 'non valore' (cosa diversa dal valore '0'!).

I dati Numerici

 1 BIT           [(M)]
 2 TINYINT    [(M)]      [UNSIGNED] [ZEROFILL]
 3 SMALLINT  [(M)]      [UNSIGNED] [ZEROFILL]
 4 MEDIUMINT[(M)]      [UNSIGNED] [ZEROFILL]
 5 INT           [(M)]      [UNSIGNED] [ZEROFILL]
 6 BIGINT      [(M)]       [UNSIGNED] [ZEROFILL]
 7 FLOAT       [(M,D)]    [UNSIGNED] [ZEROFILL]
 8 DOUBLE     [(M,D)]    [UNSIGNED] [ZEROFILL]
 9 DECIMAL    [(M[,D])] [UNSIGNED] [ZEROFILL]


L'opzione UNSIGNED specifica che il numero è senza segno, mentre l’opzione ZEROFILL fa memorizzare i valori numerici con degli zeri davanti nel caso in cui la lunghezza sia inferiore a quella massima prevista.

I dati di tipo TINYINT, SMALLINT, MEDIUMINT, INT e BIGINT rappresentano numeri interi composti rispettivamente da 1 (da -128 a 127, oppure da 0 a 255), 2 (da -32768 a 32767, oppure da 0 a 65535), 3 , 4 (da -2147483648 a 2147483647, oppure da 0 a 4294967295) e 8 (da -9223372036854775808 a 9223372036854775807, oppure da 0 to 18446744073709551615) bytes.
I tipi FLOAT e DOUBLE rappresentano i numeri in virgola mobile.
Il tipo DECIMAL rappresenta i numeri 'esatti', con M cifre totali di cui D decimali.

La precisione dei numeri in virgola mobile è affidabile fino (circa) alla settima cifra decimale per i FLOAT e alla quindicesima per i DOUBLE. Una colonna FLOAT occupa 4 byte, una DOUBLE ne occupa 8.

INTEGER equivale a INT.
DOUBLE PRECISION equivale a DOUBLE.
REAL equivale a DOUBLE.
FLOAT(p) è un numero in virgola mobile la cui precisione in bit è indicata da p.

BOOL e BOOLEAN equivalgono  a TINYINT(1).


Stringhe

 1 [NATIONAL] CHAR(M)      [BINARY | ASCII | UNICODE]
 2 [NATIONAL] VARCHAR(M)   [BINARY]
 3            BINARY(M)
 4            VARBINARY(M)
 5            TINYBLOB
 6            TINYTEXT
 7            BLOB         [(M)]
 8            TEXT         [(M)]
 9            MEDIUMBLOB
10            MEDIUMTEXT
11            LONGBLOB
12            LONGTEXT
13            ENUM         ('valore1','valore2',...)
14            SET          ('valore1','valore2',...)


Il tipo CHAR è una stringa di lunghezza fissa (M) riempita con spazi a destra al momento della memorizzazione. La lunghezza prevista va da 0 a 255 caratteri. L'opzione NATIONAL indica che la stringa deve usare il set di caratteri di default. L’attributo BINARY indica che deve essere usata la collation binaria del set di caratteri utilizzato. Il tipo CHAR BYTE equivale a CHAR BINARY.
Il tipo VARCHAR è una stringa di lunghezza variabile da 0 a 65.535 caratteri.
I tipi BINARY e VARBINARY corrispondono a CHAR e VARCHAR, ma memorizzano stringhe di byte invece che di caratteri.
I tipi BLOB e TEXT sono utilizzati rispettivamente per valori binari e di testo. La lunghezza massima è 255 caratteri per TINYBLOB e TINYTEXT, 65535 per BLOB e TEXT, 16.777.215 per MEDIUMBLOB e MEDIUMTEXT, 4 gigabyte per LONGBLOB e LONGTEXT.
Il tipo ENUM può contenere uno dei valori elencati nella definizione, oppure NULL o una stringa vuota.
Un tipo SET, come la ENUM, prevede un insieme di valori possibili (fino a 64).


Date e Tempo

1 DATE
2 DATETIME
3 TIMESTAMP[(M)]
4 TIME
5 YEAR     [(2|4)]


Il tipo DATE può contenere date da '1000-01-01' (1 gennaio 1000) a '9999-12-31' (31 dicembre 9999).
Il tipo DATETIME contiene una data e un'ora, con lo stesso range visto per DATE.
Il tipo TIMESTAMP contiene i valori corrispondenti al timestamp Unix.
Il tipo TIME contiene un valore di tempo (ore, minuti e secondi) che va da '-838:59:59' a '838:59:59'.
Il tipo year  è un dato di 1 byte, usato per scrivere l'anno nella forma '2001' o '01'.

Invia una domanda o un commento sull'articolo

I campi obbligatori sono segnalati *

*

*



 


Questo sito è totalmente privo di pubblicità, se volete sostenere questa inziativa, potete scegliere di fare una piccola donazione libera:


© 2009 - 2024 Impronte digitali di Luca Frassineti. Tutti i diritti riservati.