Colunas DOUBLE não o mesmo que as colunas DECIMAL, e você terá problemas se você usar colunas DOUBLE para dados financeiros.
DOUBLE é, na verdade, apenas uma versão de precisão dupla (64 bits em vez de 32 bits) de FLOAT . Os números de ponto flutuante são representações aproximadas de números reais e não são exatos. Na verdade, números simples como 0,01 não têm uma representação exata nos tipos FLOAT ou DOUBLE.
As colunas DECIMAL são representações exatas, mas ocupam muito mais espaço para um intervalo muito menor de números possíveis. Para criar uma coluna capaz de conter valores de 0,0001 a 99,9999 como você pediu, você precisaria da seguinte declaração
CREATE TABLE your_table
(
your_column DECIMAL(6,4) NOT NULL
);
A definição da coluna segue o formato DECIMAL(M, D) onde M é o número máximo de dígitos (a precisão ) e D é o número de dígitos à direita do ponto decimal (a escala ).
Isso significa que o comando anterior cria uma coluna que aceita valores de -99,9999 a 99,9999. Você também pode criar uma coluna UNSIGNED DECIMAL, variando de 0,0000 a 99,9999.
Por exemplo, se você quiser uma coluna que aceite valores de -9999,99 a 9999,99 o comando seria
DECIMAL(6,2)
. Como você pode ver, você ainda usa uma precisão de 6, mas só permite uma escala de 2. Para obter mais informações sobre o MySQL DECIMAL, os documentos oficiais são sempre um grande recurso.
Tenha em mente que todas essas informações são verdadeiras para as versões do MySQL 5.0.3 e superiores. Se você estiver usando versões anteriores, você realmente deve atualizar.
Atualização no MySQL 8.0.17+
Não assinado está obsoleto para colunas FLOAT, DOUBLE e DECIMAL.