Las columnas DOUBLE no lo mismo que las columnas DECIMAL, y te meterás en problemas si usa columnas DOBLES para datos financieros.
DOUBLE es en realidad solo una versión de doble precisión (64 bits en lugar de 32 bits) de FLOAT . Los números de coma flotante son representaciones aproximadas de números reales y no son exactos. De hecho, números simples como 0.01 no tienen una representación exacta en los tipos FLOAT o DOUBLE.
Las columnas DECIMAL son representaciones exactas, pero ocupan mucho más espacio para un rango mucho más pequeño de números posibles. Para crear una columna capaz de contener valores de 0,0001 a 99,9999 como pidió, necesitaría la siguiente declaración
CREATE TABLE your_table
(
your_column DECIMAL(6,4) NOT NULL
);
La definición de la columna sigue el formato DECIMAL(M, D) donde M es el número máximo de dígitos (la precisión ) y D es el número de dígitos a la derecha del punto decimal (la escala ).
Esto significa que el comando anterior crea una columna que acepta valores de -99,9999 a 99,9999. También puede crear una columna DECIMAL SIN FIRMA, que va de 0,0000 a 99,9999.
Como ejemplo, si desea una columna que acepte valores de -9999,99 a 9999,99, el comando sería DECIMAL(6,2)
. Como puede ver, todavía usa una precisión de 6, pero solo permite una escala de 2.
Para obtener más información sobre MySQL DECIMAL, los documentos oficiales son siempre un gran recurso.
Tenga en cuenta que toda esta información es válida para las versiones de MySQL 5.0.3 y superiores. Si está utilizando versiones anteriores, realmente debería actualizar.
Actualización sobre MySQL 8.0.17+
Sin firmar está en desuso para columnas FLOAT, DOUBLE y DECIMAL.