MySQLi - Tipi di dati
La definizione corretta dei campi in una tabella è importante per l'ottimizzazione complessiva del database. Dovresti usare solo il tipo e la dimensione del campo che devi veramente usare; non definire un campo largo 10 caratteri se sai che utilizzerai solo 2 caratteri. Questi tipi di campi (o colonne) sono anche indicati come tipi di dati, dopo iltype of data immagazzinerete in quei campi.
MySQLi utilizza molti diversi tipi di dati suddivisi in tre categorie: numerici, data e ora e tipi di stringa.
Tipi di dati numerici
MySQLi utilizza tutti i tipi di dati numerici ANSI SQL standard, quindi se si arriva a MySQLi da un sistema di database diverso, queste definizioni vi sembreranno familiari. Il seguente elenco mostra i tipi di dati numerici comuni e le loro descrizioni:
INT- Un numero intero di dimensioni normali che può essere firmato o non firmato. Se firmato, l'intervallo consentito è compreso tra -2147483648 e 2147483647. Se non firmato, l'intervallo consentito è compreso tra 0 e 4294967295. È possibile specificare una larghezza fino a 11 cifre.
TINYINT- Un numero intero molto piccolo che può essere firmato o non firmato. Se firmato, l'intervallo consentito è compreso tra -128 e 127. Se non firmato, l'intervallo consentito è compreso tra 0 e 255. È possibile specificare una larghezza fino a 4 cifre.
SMALLINT- Un piccolo numero intero che può essere firmato o non firmato. Se firmato, l'intervallo consentito è compreso tra -32768 e 32767. Se non firmato, l'intervallo consentito è compreso tra 0 e 65535. È possibile specificare una larghezza fino a 5 cifre.
MEDIUMINT- Un numero intero di medie dimensioni che può essere firmato o non firmato. Se firmato, l'intervallo consentito è compreso tra -8388608 e 8388607. Se non firmato, l'intervallo consentito è compreso tra 0 e 16777215. È possibile specificare una larghezza fino a 9 cifre.
BIGINT- Un numero intero grande che può essere firmato o non firmato. Se firmato, l'intervallo consentito va da -9223372036854775808 a 9223372036854775807. Se non firmato, l'intervallo consentito è compreso tra 0 e 18446744073709551615. È possibile specificare una larghezza fino a 20 cifre.
FLOAT(M,D)- Un numero a virgola mobile che non può essere annullato. È possibile definire la lunghezza del display (M) e il numero di decimali (D). Non è necessario e verrà impostato automaticamente su 10,2, dove 2 è il numero di decimali e 10 è il numero totale di cifre (compresi i decimali). La precisione decimale può arrivare a 24 posizioni per un FLOAT.
DOUBLE(M,D)- Un numero a virgola mobile a doppia precisione che non può essere deselezionato. È possibile definire la lunghezza del display (M) e il numero di decimali (D). Questo non è richiesto e il valore predefinito sarà 16,4, dove 4 è il numero di decimali. La precisione decimale può arrivare a 53 posizioni per un DOPPIO. REAL è sinonimo di DOPPIO.
DECIMAL(M,D) - Un numero in virgola mobile decompresso che non può essere rimosso. In decimali non compressi, ogni decimale corrisponde a un byte. È necessario definire la lunghezza del display (M) e il numero di decimali (D). NUMERIC è sinonimo di DECIMAL.
Tipi di data e ora
I tipi di dati di data e ora di MySQL sono:
DATE- Una data nel formato AAAA-MM-GG, tra 1000-01-01 e 9999-12-31. Ad esempio, il 30 dicembre 1973 verrebbe memorizzato come 1973-12-30.
DATETIME- Una combinazione di data e ora in formato AAAA-MM-GG HH: MM: SS, tra 1000-01-01 00:00:00 e 9999-12-31 23:59:59. Ad esempio, le 3:30 del pomeriggio del 30 dicembre 1973 verranno memorizzate come 1973-12-30 15:30:00.
TIMESTAMP - Un timestamp compreso tra la mezzanotte del 1 gennaio 1970 e qualche volta nel 2037. Questo assomiglia al precedente formato DATETIME, solo senza i trattini tra i numeri; Le 3:30 del pomeriggio del 30 dicembre 1973 sarebbero state memorizzate come 19731230153000 (AAAAMMGGHHMMSS).
TIME - Memorizza l'ora nel formato HH: MM: SS.
YEAR(M)- Memorizza un anno nel formato a 2 o 4 cifre. Se la lunghezza è specificata come 2 (ad esempio YEAR (2)), YEAR può essere compreso tra 1970 e 2069 (70 e 69). Se la lunghezza è specificata come 4, YEAR può essere compreso tra 1901 e 2155. La lunghezza predefinita è 4.
Tipi di stringa
Sebbene i tipi numerici e di data siano divertenti, la maggior parte dei dati che memorizzerai sarà in formato stringa. Questo elenco descrive i tipi di dati di stringa comuni in MySQLi.
CHAR(M)- Una stringa di lunghezza fissa compresa tra 1 e 255 caratteri (ad esempio CHAR (5)), riempita a destra con spazi fino alla lunghezza specificata quando memorizzata. Non è necessario definire una lunghezza, ma il valore predefinito è 1.
VARCHAR(M)- Una stringa di lunghezza variabile compresa tra 1 e 255 caratteri; ad esempio VARCHAR (25). È necessario definire una lunghezza durante la creazione di un campo VARCHAR.
BLOB or TEXT- Un campo con una lunghezza massima di 65535 caratteri. I BLOB sono "oggetti binari di grandi dimensioni" e vengono utilizzati per archiviare grandi quantità di dati binari, come immagini o altri tipi di file. I campi definiti come TESTO contengono anche grandi quantità di dati; la differenza tra i due è che gli ordinamenti e i confronti sui dati memorizzati fanno distinzione tra maiuscole e minuscole sui BLOB e non fanno distinzione tra maiuscole e minuscole nei campi TEXT. Non si specifica una lunghezza con BLOB o TEXT.
TINYBLOB or TINYTEXT- Una colonna BLOB o TEXT con una lunghezza massima di 255 caratteri. Non si specifica una lunghezza con TINYBLOB o TINYTEXT.
MEDIUMBLOB or MEDIUMTEXT- Una colonna BLOB o TEXT con una lunghezza massima di 16777215 caratteri. Non si specifica una lunghezza con MEDIUMBLOB o MEDIUMTEXT.
LONGBLOB or LONGTEXT- Una colonna BLOB o TEXT con una lunghezza massima di 4294967295 caratteri. Non si specifica una lunghezza con LONGBLOB o LONGTEXT.
ENUM - Un'enumerazione, che è un termine di fantasia per la lista. Quando si definisce un ENUM, si crea un elenco di elementi da cui è necessario selezionare il valore (o può essere NULL). Ad esempio, se desideri che il tuo campo contenga "A" o "B" o "C", definiresti ENUM come ENUM ('A', 'B', 'C') e solo quei valori (o NULL) potrebbe mai popolare quel campo.