Introduzione
Tipi di dati MySQL sono importanti da capire prima di iniziare a creare e lavorare con un database MySQL. Se assegni correttamente ogni colonna, ti assicuri che il database sia ottimizzato e che i dati siano archiviati in modo sicuro.
In questo tutorial imparerai a conoscere i diversi tipi di dati MySQL.
Cosa sono i tipi di dati in MySQL?
Un nome e un tipo di dati definiscono ogni colonna in una tabella di database. Il tipo di dati specificato dice a MySQL che tipo di valori memorizzerà, quanto spazio richiede e che tipo di operazioni può eseguire con questo tipo di dati.
Tipi di dati MySQL
Esistono molti tipi di dati diversi che puoi memorizzare in una tabella MySQL.
Sono raggruppati in cinque categorie principali:
- Tipi di dati numerici
- Tipi di dati di data e ora
- Tipi di dati di stringa
- Tipi di dati spaziali
- Tipi di dati JSON
Continua a leggere per saperne di più su ciascun gruppo e vedere quali tipi di dati includono.
Tipi di dati numerici
Quando si memorizzano numeri in una colonna del database, utilizzare uno dei tipi di dati numerici. MySQL supporta sia i tipi di dati numerici esatti che quelli approssimativi.
La categoria numerica è ulteriormente suddivisa nei seguenti gruppi:
- Tipi di dati interi
- Tipi di dati a virgola mobile
- Tipi di dati a virgola fissa
- Tipi di dati con valori di bit
Tipi interi
Tipi di dati interi sono usati per i numeri interi (interi). Includono valori sia positivi che negativi. Tuttavia, non gestiscono numeri frazionari.
Pertanto, numeri come 30 e -5435 possono essere archiviati come tipi di dati interi, mentre 5,3 o 1/5 no.
I tipi interi sono con segno o senza segno. Sono ulteriormente suddivisi in base alla loro dimensione, differendo per la loro lunghezza e portata.
Byte | Intervallo (senza segno) | Intervallo (firmato) | |
---|---|---|---|
TINYINT | 1 | da 0 a 255 | da -128 a 127 |
PICCOLA | 2 | da 0 a 65535 | da -32768 a 32767 |
MEDIUMINT | 3 | da 0 a 16777215 | da -8388608 a 8388607 |
INT | 4 | da 0 a 4294967295 | da -2147483648 a 2147483647 |
GRANDE | 8 | da 0 a 18446744073709551615 | da -9223372036854775808 a 9223372036854775807 |
TINYINT
è un numero intero molto piccolo che utilizza 1 byte di stoccaggio. È composto da un massimo di 4 cifre . Il suo intervallo senza segno è compreso tra 0 a 255 . Se è firmato, ha un intervallo da -128 a 127 .
SMALLINT
è un numero intero piccolo che utilizza 2 byte di stoccaggio. È composto da un massimo di 5 cifre . Il suo intervallo senza segno è compreso tra 0 a 65535 . Una volta firmato, ha un intervallo da -32768 a 32767 .
MEDIUMINT
è un numero intero di medie dimensioni che utilizza 3 byte di stoccaggio. Può contenere fino a 9 cifre . Se non firmato, ha un intervallo da 0 a 16777215 . Firmato, il suo valore minimo è -8388608 , mentre il suo valore massimo è 8388607 .
INT
è un numero intero che utilizza 4 byte di stoccaggio. Utilizza fino a 11 cifre . Quando non è firmato, varia da 0 a 4294967295 . Se è firmato, ha l'intervallo da -2147483648 a 2147483647 .
BIGINT
è un numero intero grande che utilizza 8 byte di stoccaggio. Può contenere fino a 20 cifre . Il suo valore minimo con segno è 0 , mentre il suo valore massimo con segno è 184467444073709551615 . Se firmato, ha l'intervallo da -9223372036854775808 a 9223372036854775807 .
Tipi in virgola mobile
I tipi di dati numerici a virgola mobile sono numeri razionali utilizzati per rappresentare valori approssimativi. Utilizza i tipi di dati a virgola mobile per calcoli ad alta precisione.
I tipi a virgola mobile includono:
FLOAT
rappresenta valori a precisione singola che utilizzano 4 byte e includi fino a 6 o 7 cifre significative.DOUBLE
rappresentano valori a doppia precisione che utilizzano 8 byte e includi fino a 15 o 16 cifre significative.
La sintassi di base per definire FLOAT
/DOUBLE
il tipo di dati è FLOAT(M,D)
/DOUBLE(M,D)
.
M
rappresenta il numero totale di cifre, mentre D
è il numero di decimali. Ad esempio, il valore 5143.234 sarebbe definito come 7,3 in quanto ha 7 cifre in totale e 3 cifre dopo la virgola.
Puoi anche utilizzare il FLOAT(P)
sintassi per specificare un tipo di dati a virgola mobile, dove P
specifica la precisione. Se P
ha un valore da 0 a 23 , è una colonna a precisione singola. Se la precisione è tra 24 e 53 , è una colonna a doppia precisione.
Byte | Intervallo (senza segno) | Intervallo (firmato) | |
---|---|---|---|
GALLEGGIANTE | 4 | da 1.175494351E-38 a 3.402823466E+38 | da -3.402823466E+38 a -1.175494351E-38 |
DOPPIA | 8 | da 0 e 2.22507385850720 14E-308 a 1.797693134862315 7E+ 308 | da -1.7976931348623 157E+ 308 a -2.22507385850720 14E- 308 |
Tipi a virgola fissa
Per memorizzare valori numerici esatti, utilizzare il tipo di dati a virgola fissa – DECIMAL
. Poiché rappresenta un numero esatto, questo tipo di dati viene utilizzato principalmente per dati che si basano su valori precisi (come i dati monetari).
La sintassi di base è DECIMAL(P,D)
, dove P
sta per precisione (il numero di cifre significative) e D
sta per scala (il numero di cifre dopo la virgola).
Il numero massimo di cifre per la precisione è 65 , mentre il valore massimo per la scala è 30 .
Se non si definiscono la precisione e la scala, la colonna utilizza i valori predefiniti. Per impostazione predefinita, i valori per P,D sono 10,0 .
Tipi di valore bit
Il BIT
il tipo di dati memorizza i valori binari. Quando crei una colonna che memorizzerà tali valori, definisci il numero di valori di bit che vanno da da 1 a 64 .
La sintassi per questo tipo di dati MySQL è BIT(N)
. Se non specifichi N
, il valore predefinito è 1 .
Tipi di dati di data e ora
Data e ora sono tipi di dati comunemente usati. Sia che tu stia memorizzando l'ora di un inserimento dati, una data di nascita o il timestamp corrente, utilizzi una delle seguenti colonne.
I tipi di dati di data e ora includono:
DATETIME
,TIMESTAMP
DATE
TIME
YEAR
DATA ORA, TIMESTAMP
Per memorizzare i valori di data e ora, utilizza DATETIME
o TIMESTAMP
. Entrambi i tipi di dati memorizzano le informazioni nel AAAA-MM-GG HH:MM:SS formato. Include la y orecchio, m in poi, d sì, h nostro, m inutes e s econdi.
La principale differenza tra i due è la loro portata:
DATETIME
i valori variano da 1000-01-01 00:00:00 a 9999-12-31 23:59:59 .TIMESTAMP
i valori variano da 01-01-1970 00:00:01 al 19-01-2038 03:14:07 .
Puoi includere frazioni di secondi per entrambe le opzioni. Per farlo, specifica la precisione seguendo la sintassi DATETIME(p)
/TIMESTAMP(p)
.
Ad esempio, per memorizzare il timestamp 22:53 del 1 marzo 2021 , con tre secondi frazionari, specifica il tipo di dati TIMESTAMP(3)
. La voce viene archiviata come:2021-03-01 22:53:35.346 .
DATA
DATE
viene utilizzato per memorizzare i valori di data nel formato AAAA-MM-GG (anno, mese, data).
Il tipo di dati supporta l'intervallo da 1000-01-01 a 9999-12-31 .
TEMPO
TIME
viene utilizzato per memorizzare i valori temporali come HH-MM-SS (ore, minuti, secondi) o HHH-MM-SS . Le voci che mostrano il tempo trascorso o le differenze di orario vengono archiviate e recuperate in un formato più lungo (se necessitano di più cifre per le ore).
Il tipo di dati supporta l'intervallo da 1000-01-01 a 9999-12-31 .
ANNO
YEAR
memorizza i valori dell'anno nel formato AAAA . Supporta valori compresi nell'intervallo 1901-2155 .
Mentre le versioni precedenti a MySQL 5.7.5 supportavano voci a 2 e 4 cifre per YEAR
, non c'è stato alcun supporto a 2 cifre dalla versione 5.7.5.
Tipi di dati di stringa
Quando si archiviano stringhe di dati, utilizzare uno dei tipi di dati stringa. Possono contenere lettere, numeri, immagini o file.
Di conseguenza, esistono diversi tipi di dati stringa:
CHAR
eVARCHAR
BINARY
eVARBINARY
BLOB
eTEXT
ENUM
SET
CHAR e VARCHAR
CHAR
e VARCHAR
sono tipi di dati utilizzati per memorizzare stringhe non binarie. La principale differenza tra i due è il modo in cui archiviano i dati.
CHAR
memorizza stringhe di lunghezza fissa (fino a 255 caratteri). Durante la creazione di un CHAR
colonna, specifichi la lunghezza utilizzando il CHAR(N)
sintassi. N
è il numero di caratteri che vuoi prendere. Se non definisci la lunghezza, utilizza il valore predefinito 1 .
Questi valori vengono memorizzati con il riempimento a destra della lunghezza specificata. Pertanto, se imposti un CHAR(5)
colonna e memorizza una voce di tre caratteri al suo interno, occupa ancora cinque caratteri.
VARCHAR
memorizza stringhe di lunghezza variabile. Sebbene la lunghezza debba essere definita durante la creazione di una colonna, i valori non vengono riempiti a destra. Hanno un limite massimo, ma la lunghezza non è fissa e varia a seconda dei dati.
Prima, l'intervallo per le voci era da 0 a 255 . Dopo il rilascio di MySQL 5.0.3, VARCHAR
l'intervallo è fino a 65 535 caratteri .
BINARIA e VARBINARIA
BINARY
e VARBINARY
i tipi di dati sono simili al CHAR
menzionato in precedenza e VARCHAR
. La principale differenza tra questi due gruppi è che BINARY
e VARBINARY
sono usati per le stringhe binarie.
BINARY
viene utilizzato per stringhe binarie di lunghezza fissa, fino a 255 byte . La sintassi principale per definire tale colonna è BINARY(N)
, dove N
è il numero di byte.
VARBINARY
memorizza stringhe binarie di lunghezza variabile. MySQL versione 5.0.3 e successive memorizza fino a 65 535 byte .
BLOB e TESTO
Entrambi BLOB
e TEXT
vengono utilizzati per memorizzare grandi quantità di dati.
BLOB
gestisce B inario L arge O bjects (ovvero, grandi insiemi di dati binari come immagini, file audio o PDF).
Esistono 4 tipi di dati BLOB da utilizzare, a seconda delle dimensioni richieste dai dati:
TINYBLOB
(0 – 255; 255 byte)BLOB
(0 – 65.535; 16 KB)MEDIUMBLOB
(0 – 16.777.215; 16 MB)LONGBLOB
(0 – 4.294.967.295; 4 GB)
TEXT
i tipi di dati servono per memorizzare stringhe di testo più lunghe. In base alla quantità di dati richiesti, c'è:
TINYTEXT
(0 – 255; 255 byte)TEXT
(0 – 65.535; 16 KB)MEDIUMTEXT
(0 – 16.777.215; 16 MB)LONGTEXT
(0 – 4.294.967.295; 4 GB)
ENUM
Il ENUM
il tipo di dati viene utilizzato per memorizzare uno dei possibili valori predefiniti in una colonna. La colonna può contenere fino a 65535 valori distinti.
Quando si crea un ENUM
colonna della tabella in MySQL, specifichi un elenco di tutti i valori consentiti.
IMPOSTA
Come ENUM
, il SET
il tipo di dati ha un elenco predefinito di possibili valori memorizzati nella colonna.
La principale differenza tra i due è che SET
consente a una voce di avere più di un valore.
Ad esempio, se la colonna è definita come SET('Red','Orange','Yellow','Green')
e ha quattro possibili valori nell'elenco, una voce potrebbe avere il valore 'Rosso' , mentre un altro potrebbe avere il valore 'Rosso', 'Giallo' .
Il numero massimo di valori consentiti è 64 .
Tipi di dati spaziali
Quando si archiviano i dati spaziali, è possibile utilizzare uno dei tanti diversi tipi di dati spaziali supportati da MySQL. Sono utilizzati per rappresentare informazioni su forme geometriche e posizione fisica.
Possiamo dividerli in due gruppi:
- Valori di geometria singola
- Collezioni di valori
Valori di geometria singola
I tipi di dati a geometria singola includono GEOMETRY
, POINT
, LINESTRING
e POLYGON
.
GEOMETRY
memorizza qualsiasi tipo di valore geometrico/spaziale.POINT
viene utilizzato per un valore in un punto.LINESTRING
memorizza una raccolta di più punti che formano una linea.POLYGON
è un tipo di dati utilizzato per memorizzare una raccolta di più punti che formano una superficie poligonale.
Raccolta di valori
I tipi di dati della raccolta di valori includono GEOMETRYCOLLECTION
, MULTIPOINT
, MULTILINE
e MULTIPOLYGON
.
GEOMETRYCOLLECTION
memorizza una raccolta di valori geometrici/spaziali.MULTIPOINT
viene utilizzato per memorizzare una raccolta di più valori in punti.MULTILINE
memorizza una raccolta di più righe.MULTIPOLYGON
viene utilizzato per una raccolta di più poligoni.
Tipi di dati JSON
Dalla versione 5.7.8, MySQL includeva il supporto per il JSON
nativo tipo di dati, consentendo agli utenti di archiviare e gestire documenti JSON tramite un database.
MySQL si assicura che i documenti JSON siano validi e li archivia nella colonna JSON.