English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

数据类型 MySQL

Definire il tipo dei campi dei dati in MySQL è molto importante per l'ottimizzazione del tuo database.

MySQL supporta molti tipi di dati, che possono essere raggruppati in tre categorie principali: numerici, data/ora e stringa (caratteri).

Tipi di dati numerici

MySQL supporta tutti i tipi di dati numerici standard SQL.

Questi tipi includono i tipi di dati numerici rigorosi (INTEGER, SMALLINT, DECIMAL e NUMERIC), nonché i tipi di dati numerici approssimativi (FLOAT, REAL e DOUBLE PRECISION).

La parola chiave INT è sinonimo di INTEGER, mentre la parola chiave DEC è sinonimo di DECIMAL.

Il tipo di dati BIT memorizza i valori dei campi bit e supporta le tabelle MyISAM, MEMORY, InnoDB e BDB.

Come estensione dello standard SQL, MySQL supporta anche i tipi di dati interi TINYINT, MEDIUMINT e BIGINT. La tabella seguente mostra la memoria e l'intervallo necessarie per ogni tipo di intero richiesto.

tipodimensioneRange (signed)Range (unsigned)utilizzo
TINYINT1 byte(-128, 127)(0, 255)小整数值
SMALLINT2 byte(-32 768, 32 767)(0, 65 535)大整数值
MEDIUMINT3 byte(-8 388 608, 8 388 607)(0, 16 777 215)大整数值
INT o INTEGER4 byte(-2 147 483 648, 2 147 483 647)(0, 4 294 967 295)大整数值
BIGINT8 byte(-9223 372 036 854 775 808, 9 223 372 036 854 775 807)(0, 18 446 744 073 709 551 615)极大整数值
FLOAT4 byte(-3.402 823 466 E+38, -1.175 494 351 E-38), 0, (1.175 494 351 E-38, 3.402 823 466 351 E+38)0, (1.175 494 351 E-38, 3.402 823 466 E+38)Single precision
valore a virgola mobile
DOUBLE8 byte(-1.797 693 134 862 315 7 E+308, -2.225 073 858 507 201 4 E-308), 0, (2.225 073 858 507 201 4 E-308, 1.797 693 134 862 315 7 E+308)0, (2.225 073 858 507 201 4 E-308, 1.797 693 134 862 315 7 E+308)double precision
valore a virgola mobile
DECIMALper DECIMAL(M,D), se M>D, è M+2 altrimenti è D+2dipende dai valori di M e Ddipende dai valori di M e Dvalore decimale

tipi di data e ora

I tipi di data e ora che rappresentano i valori di tempo sono DATETIME, DATE, TIMESTAMP, TIME e YEAR.

Ogni tipo di tempo ha un intervallo di valori validi e un valore 'zero', che viene utilizzato quando si specifica un valore non legittimo che MySQL non può rappresentare.

Il tipo TIMESTAMP ha una caratteristica di aggiornamento automatico speciale, che verrà descritta in seguito.

tipodimensione
(bytes)
intervalloformatoutilizzo
DATE31000-01-01/9999-12-31YYYY-MM-DDvalore della data
TIME3'-838:59:59'/'838:59:59'HH:MM:SSvalore del tempo o della durata
YEAR11901/2155YYYYvalore dell'anno
DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SSvalori misti di data e ora
TIMESTAMP4

1970-01-01 00:00:00/2038

l'ora di fine è il 2147483647 secondi, ora di Pechino 2038-1-19 11:14:07,ora Greenwich 2038-01-19 alle 03:14:07 del mattino

YYYYMMDD HHMMSSvalori misti di data e ora, timestamp

tipi di stringa

i tipi di stringa sono CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM e SET. Questa sezione descrive come funzionano questi tipi e come vengono utilizzati nelle query.

tipodimensioneutilizzo
CHAR0-255 bytesstringa di lunghezza fissa
VARCHAR0-65535 bytesstringa variabile
TINYBLOB0-255 bytesstringa binaria di lunghezza non superiore a 255 caratteri
TINYTEXT0-255 bytesstringa testuale corta
BLOB0-65 535 bytesdati testuali di lunghezza lunga in forma binaria
TEXT0-65 535 bytesdati testuali di lunghezza lunga
MEDIUMBLOB0-16 777 215 bytesdati testuali di lunghezza media in forma binaria
MEDIUMTEXT0-16 777 215 bytesdati testuali di lunghezza media
LONGBLOB0-4 294 967 295 bytesdati testuali di lunghezza massima in forma binaria
LONGTEXT0-4 294 967 295 bytesDati di testo estremamente grandi

AttenzioneIn char(n) e varchar(n), il numero n tra parentesi quadre rappresenta il numero di caratteri, non il numero di byte, ad esempio CHAR(30) può memorizzare 30 caratteri.

CHAR e VARCHAR sono simili, ma conservano e recuperano in modo diverso. La loro lunghezza massima e se i spazi in coda vengono conservati sono diversi. Non si esegue la conversione di maiuscole e minuscole durante il processo di archiviazione o recupero.

BINARY e VARBINARY sono simili a CHAR e VARCHAR, ma differiscono nel fatto che contengono stringhe binarie invece di stringhe non binarie. Questo significa che contengono stringhe di byte invece di stringhe di caratteri. Questo indica che non hanno un set di caratteri, e l'ordinamento e la comparazione si basano sul valore numerico dei byte del valore della colonna.

BLOB è un oggetto grande binario, che può contenere una quantità variabile di dati. Ci sono 4 tipi di BLOB: TINYBLOB, BLOB, MEDIUMBLOB e LONGBLOB. La differenza tra loro sta nella gamma di archiviazione che possono contenere.

Ci sono 4 tipi di TEXT: TINYTEXT, TEXT, MEDIUMTEXT e LONGTEXT. Corrispondono a questi 4 tipi di BLOB, la lunghezza massima che possono memorizzare è diversa, e possono essere selezionati in base alla situazione reale.