English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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).
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.
tipo | dimensione | Range (signed) | Range (unsigned) | utilizzo |
---|---|---|---|---|
TINYINT | 1 byte | (-128, 127) | (0, 255) | 小整数值 |
SMALLINT | 2 byte | (-32 768, 32 767) | (0, 65 535) | 大整数值 |
MEDIUMINT | 3 byte | (-8 388 608, 8 388 607) | (0, 16 777 215) | 大整数值 |
INT o INTEGER | 4 byte | (-2 147 483 648, 2 147 483 647) | (0, 4 294 967 295) | 大整数值 |
BIGINT | 8 byte | (-9223 372 036 854 775 808, 9 223 372 036 854 775 807) | (0, 18 446 744 073 709 551 615) | 极大整数值 |
FLOAT | 4 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 |
DOUBLE | 8 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 |
DECIMAL | per DECIMAL(M,D), se M>D, è M+2 altrimenti è D+2 | dipende dai valori di M e D | dipende dai valori di M e D | valore decimale |
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.
tipo | dimensione (bytes) | intervallo | formato | utilizzo |
---|---|---|---|---|
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | valore della data |
TIME | 3 | '-838:59:59'/'838:59:59' | HH:MM:SS | valore del tempo o della durata |
YEAR | 1 | 1901/2155 | YYYY | valore dell'anno |
DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | valori misti di data e ora |
TIMESTAMP | 4 | 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 HHMMSS | valori misti di data e ora, timestamp |
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.
tipo | dimensione | utilizzo |
---|---|---|
CHAR | 0-255 bytes | stringa di lunghezza fissa |
VARCHAR | 0-65535 bytes | stringa variabile |
TINYBLOB | 0-255 bytes | stringa binaria di lunghezza non superiore a 255 caratteri |
TINYTEXT | 0-255 bytes | stringa testuale corta |
BLOB | 0-65 535 bytes | dati testuali di lunghezza lunga in forma binaria |
TEXT | 0-65 535 bytes | dati testuali di lunghezza lunga |
MEDIUMBLOB | 0-16 777 215 bytes | dati testuali di lunghezza media in forma binaria |
MEDIUMTEXT | 0-16 777 215 bytes | dati testuali di lunghezza media |
LONGBLOB | 0-4 294 967 295 bytes | dati testuali di lunghezza massima in forma binaria |
LONGTEXT | 0-4 294 967 295 bytes | Dati 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.