Mysql
 sql >> Database >  >> RDS >> Mysql

Come usare MySQL DECIMAL?

Le colonne DOUBLE non lo stesso delle colonne DECIMAL e avrai problemi se utilizzi le colonne DOUBLE per i dati finanziari.

DOUBLE è in realtà solo una versione a doppia precisione (64 bit anziché 32 bit) di FLOAT . I numeri in virgola mobile sono rappresentazioni approssimative di numeri reali e non sono esatti. In effetti, i numeri semplici come 0,01 non hanno una rappresentazione esatta nei tipi FLOAT o DOUBLE.

Le colonne DECIMAL sono rappresentazioni esatte, ma occupano molto più spazio per un intervallo molto più piccolo di numeri possibili. Per creare una colonna in grado di contenere valori da 0,0001 a 99,9999 come hai chiesto avresti bisogno della seguente istruzione

CREATE TABLE your_table
(
    your_column DECIMAL(6,4) NOT NULL
);

La definizione della colonna segue il formato DECIMAL(M, D) dove M è il numero massimo di cifre (la precisione ) e D è il numero di cifre a destra del punto decimale (la scala ).

Ciò significa che il comando precedente crea una colonna che accetta valori da -99,9999 a 99,9999. Puoi anche creare una colonna UNSIGNED DECIMAL, che va da 0,0000 a 99,9999.

Ad esempio, se vuoi una colonna che accetti valori da -9999,99 a 9999,99 il comando sarebbe DECIMAL(6,2) . Come puoi vedere, usi ancora una precisione di 6, ma consente solo una scala di 2.

Per ulteriori informazioni su MySQL DECIMAL, i documenti ufficiali sono sempre una grande risorsa.

Tieni presente che tutte queste informazioni sono valide per le versioni di MySQL 5.0.3 e successive. Se stai utilizzando versioni precedenti, dovresti davvero eseguire l'aggiornamento.

Aggiornamento su MySQL 8.0.17+

Unsigned è deprecato per le colonne FLOAT, DOUBLE e DECIMAL.