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

Tipi di dati MySQL

Le seguenti sezioni descrivono i tipi di dati supportati da MySQL.

Tipi di dati MySQL

MySQL supporta tre tipi di tipi di dati:,Numeri,EData/oraIl tipo di dati.

Il tipo di dati stringa

I tipi di dati stringa sono comunemente utilizzati per memorizzare nomi, indirizzi, descrizioni o qualsiasi valore che contiene lettere e numeri, inclusi dati binari come immagini o file audio.

Il tipo CHAR e VARCHAR

Il tipo di dati CHAR permette di memorizzare stringhe di lunghezza fissa fino a 255 caratteri. Il tipo di dati VARCHAR permette di memorizzare stringhe di lunghezza variabile fino a 65,535 caratteri (prima di MySQL 5.0.3 era limitato a 255 caratteri).

La lunghezza dichiarata del tipo di dati CHAR e VARCHAR rappresenta il numero massimo di caratteri che si desidera memorizzare. Ad esempio, CHAR(5) può contenere al massimo 5 caratteri.

La principale differenza tra i tipi di dati CHAR e VARCHAR è il modo in cui memorizzano i dati. Quando i valori vengono memorizzati nella colonna CHAR, vengono riempiti con spazi vuoti di lunghezza specificata, ma quando i valori vengono memorizzati nella colonna VARCHAR, non vengono riempiti. Questo significa che se il valore “ab” viene memorizzato in una colonna CHAR(4) e in una colonna VARCHAR(4), il valore verrà memorizzato come “ab”, mentre lo stesso valore verrà memorizzato come “ab”.

Suggerimento:Usare il tipo di dati CHAR per memorizzare valori di lunghezza fissa, ad esempio il codice del paese/regione. Per valori di lunghezza variabile come i nomi o i titoli, VARCHAR può risparmiare spazio.

Attenzione:La lunghezza massima valida di VARCHAR è limitata dalla dimensione massima della riga (65,535 byte, condivisa da tutte le colonne) e dal set di caratteri utilizzato.

Il tipo BINARY e VARBINARY

Il tipo BINARY e VARBINARY è simile al tipo CHAR e VARCHAR, la differenza è che contengono stringhe binarie invece di stringhe non binarie.   La lunghezza massima permessa per BINARY e VARBINARY è la stessa di quella per CHAR e VARCHAR, la differenza è che la lunghezza di BINARY e VARBINARY è misurata in byte invece che in caratteri.

TEXT e BLOB tipi

I tipi di dati TEXT e BLOB sono specificamente utilizzati per memorizzare dati di grandi dimensioni. Il tipo di dati TEXT viene utilizzato per memorizzare stringhe lunghe, come descrizioni, commenti di blog, ecc.

BLOB è un oggetto binario grande che può contenere una quantità variabile di dati. Questa funzionalità è particolarmente utile quando si ha bisogno di archiviare file di media binari nel database (ad esempio, immagini o file audio).

I quattro tipi di BLOB sono TINYBLOB, BLOB, MEDIUMBLOB e LONGBLOB. La differenza tra loro è solo nel lunghezza massima dei valori che possono contenere. Allo stesso modo, questi quattro tipi di testo sono TINYTEXT, TEXT, MEDIUMTEXT e LONGTEXT. Questi corrispondono ai quattro tipi di BLOB, con la stessa lunghezza massima e richieste di spazio di archiviazione.

La tabella seguente elenca i tipi di dati di stringa MySQL che appaiono in coppia. Indipendentemente dal tipo di dati binari o non binari, la lunghezza massima è espressa in byte.

Tipi di dati binariTipi di dati non binariLunghezza massima
BINARYCHAR255
VARBINARYVARCHAR65,535
TINYBLOBTINYTEXT255
BLOBTEXT65,535
MEDIUMBLOBMEDIUMTEXT16,777,215
LONGBLOBLONGTEXT4,294,967,295

Attenzione:Per i tipi di dati di stringa non binari, il valore della lunghezza della colonna è solitamente chiamato numero di caratteri invece di numero di byte. Questo significa che la lunghezza massima del numero di caratteri della stringa contenente caratteri multibyte è inferiore.

ENUM tipo

Il tipo di dati ENUM consente di specificare un elenco dei valori possibili che possono essere memorizzati nella colonna. Ad esempio, specificato come sesso ENUM('male', 'female') NOT Le colonne NULL possono avere i seguenti valori: '' (stringa vuota), 'male' o 'female'. È possibile specificare fino a 65,535 valori diversi nell'elenco ENUM. Se si inserisce un valore non valido nell'intervallo ENUM (cioè, una stringa che non esiste nell'elenco di valori consentiti), verrà inserata una stringa vuota.

SET tipo

Il tipo di dati SET consente di specificare l'elenco dei valori da inserire nella colonna, come l'enumerazione. Tuttavia, a differenza del tipo di dati ENUM che permette di selezionare solo un valore, il tipo di dati SET permette di selezionare più valori dall'elenco specificato.

Ad esempio, le colonne specificate come SET('one', 'two') NOT NULL possono memorizzare i seguenti valori: 'one', 'two' o 'one,two'. I valori multipli separati da virgola (,). Per i tipi di dati SET, è possibile specificare fino a 64 valori diversi.

I tipi di dati numerici

I tipi di dati numerici sono utilizzati per memorizzare dati come prezzi, stipendi, ecc.

Tipi INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT

MySQL supporta i tipi di dati interi standard SQL INTEGER (o INT) e SMALLINT. MySQL supporta anche i tipi di dati interi TINYINT, MEDIUMINT e BIGINT come estensione dello standard SQL. La tabella seguente mostra l'intervallo di ciascun tipo di dati interi.

Tipo di datiIntervallo (con segno)Intervallo (senza segno)
TINYINTDa -128 a 127Da 0 a 255
SMALLINTDa -32768 a 32767Da 0 a 65535
MEDIUMINTDa -8388608 a 8388607Da 0 a 16777215
INTDa -2147483648 a 2147483647Da 0 a 4294967295
BIGINTDa -9223372036854775808 a 9223372036854775807Da 0 a 18446744073709551615

I tipi di dati numerici hanno l'attributo aggiuntivo SIGNED (simbolo) e UNSIGNED (senza simbolo). I tipi di dati numerici sono in genere segnati per impostazione predefinita, con un intervallo che va dai numeri negativi ai numeri positivi. L'aggiunta dell'attributo UNSIGNED alla colonna numerica non consente l'uso di numeri negativi e sposta l'intervallo, in modo che il valore minimo inizi da 0 invece di un numero negativo.

Tipi DECIMAL, NUMERIC

I tipi di dati DECIMAL e NUMERIC sono utilizzati per memorizzare valori numerici precisi. Questi tipi di dati sono anche chiamati 'tipi a virgola fissa' o 'tipi di valori precisi' e sono utilizzati di solito quando è necessario mantenere una precisione accurata, come nel caso di memorizzare dati monetari come i prezzi dei prodotti. In MySQL, NUMERIC viene implementato come DECIMAL.

Quando si dichiara una colonna DECIMAL o NUMERIC, è possibile specificare la precisione e il numero di cifre decimali, ad esempio DECIMAL (P, S) o NUMERIC (P, S), dove P è la precisione e S è il numero di cifre decimali. La specifica di precisione indica il numero massimo di cifre che possono essere memorizzate nella colonna (inclusi i decimali), mentre il numero di cifre decimali indica il numero di cifre che possono essere memorizzate dopo il punto. Ad esempio, la colonna DECIMAL (6, 2) può memorizzare qualsiasi valore con sei cifre e due decimali, ovvero valori tra -9999.99 e 9999.99.

Tipi FLOAT, DOUBLE

I tipi FLOAT e DOUBLE rappresentano valori numerici approssimativi. Ecco perché questi tipi di dati sono anche chiamati 'tipi a virgola mobile' o 'tipi approssimativi'.

Il linguaggio di supporto di MySQL: FLOAT (M, D) o PRECISIONE DOUBLÈ (M, D). In questo contesto, (M, D) rappresenta il numero massimo di valori che possono essere memorizzati fino a M posizioni, dove D posizioni possono essere dopo il punto decimale. Ad esempio, una colonna visualizzata come FLOAT(7,3) viene visualizzata come -9999.999.   MySQL arrotonda i valori durante la memorizzazione, quindi se si inserisce 9999.0009 in una colonna FLOAT(7,3), il risultato approssimativo è 9999.001.

Attenzione:La comparazione di valori a virgola mobile può causare problemi perché sono valori approssimativi, non valori precisi. Pertanto, per memorizzare valori che possono essere utilizzati per la comparazione, come price, salary ecc., utilizzare il tipo di dati DECIMAL.

Tipi di dati DATA e TIME

I tipi di dati data e ora sono solitamente utilizzati per memorizzare dati come data di nascita, data di assunzione, data e ora di creazione o aggiornamento di un record nella tabella, ecc.

Tipo di dati DATE

Il tipo di dati DATE viene utilizzato per memorizzare date. MySQL DATE memorizza e recupera valori nel formato 'YYYY-MM-DD', dove YYYY, MM e DD sono le parti anno, mese e giorno del tempo. L'intervallo supportato è dal '1000-01-01' al '9999-12-31'.

Tipo di dati TIME

Il tipo di dati TIME può essere utilizzato per memorizzare giorni di tempo o intervallo di tempo. MySQL TIME memorizza e recupera valori nel formato 'HH:MM:SS', dove HH, MM e SS sono le parti ore, minuti e secondi del tempo (o il formato 'HHH:MM:SS' per l'ora). L'intervallo di valori TIME supportati è da '-838:59:59' a '838:59:59'.

La parte ore può essere molto grande, poiché nel MySQL il tipo TIME può essere utilizzato non solo per memorizzare l'ora di un giorno (deve essere inferiore a 24 ore), ma anche per il tempo trascorso o l'intervallo tra due eventi (può essere molto maggiore di 24 ore, anche negativo).

Attenzione:Per default, i valori validi al di fuori dell'intervallo TIME vengono troncati al punto più vicino dell'intervallo. Ad esempio, '860:00:00' viene convertito in '838:59:59'. I valori TIME non validi vengono convertiti in '00:00:00'.

Tipi di dati DATETIME e TIMESTAMP

I tipi di dati DATETIME e TIMESTAMP vengono utilizzati per memorizzare valori di data e ora combinati nel formato 'YYYY-MM-DD HH:MM:SS'. Questi tipi di dati sono solitamente utilizzati per memorizzare data e ora di distribuzione degli ordini, data e ora di creazione o modifica di una riga nella tabella, ecc.

Questi due tipi di dati sono simili in molti aspetti, ma ci sono alcune differenze. DATETIME supporta l'intervallo '1000-01-01'. Dal '00:00:00' al '9999-12-31 23:59:59'. Tuttavia, l'intervallo di timestamp è '1970-01-01 00:00:01'. Da UTC a '2038-01-19 03:14:07' UTC.

TIMESTAMP e DATETIME hanno anche proprietà di inizializzazione e aggiornamento automatici speciali, ma queste proprietà non si applicano a DATETIMEM prima di MySQL 5.6.5.

Attenzione: MySQL trasforma il valore TIMESTAMP dal fuso orario corrente in UTC per la memorizzazione e poi lo trasforma dal UTC nel fuso orario corrente per la ricerca.

Tipo di dati Anno (YEAR)

Il tipo di dati YEAR viene utilizzato per memorizzare valori di anno in formato YYYY.

Puoi dichiararlo come YEAR o YEAR(4). L'intervallo di supporto per il valore YEAR è da 1901 a 2155. I valori YEAR non validi vengono convertiti in 0000.

Attenzione:Le versioni più vecchie di MySQL permettevano di utilizzare per memorizzare valori di anno a due cifre YEAR(2),ma ora è obsoleto e non è più supportato in MySQL 5.7.5.