DOUBLE kolumny nie tak samo jak kolumny DECIMAL, a będziesz mieć kłopoty jeśli używasz PODWÓJNYCH kolumn dla danych finansowych.
DOUBLE to w rzeczywistości tylko wersja podwójnej precyzji (64-bitowa zamiast 32-bitowej) FLOAT . Liczby zmiennoprzecinkowe są przybliżonymi reprezentacjami liczb rzeczywistych i nie są dokładne. W rzeczywistości proste liczby, takie jak 0,01, nie mają dokładnej reprezentacji w typach FLOAT lub DOUBLE.
Kolumny DECIMAL są dokładnymi reprezentacjami, ale zajmują dużo więcej miejsca dla znacznie mniejszego zakresu możliwych liczb. Aby utworzyć kolumnę zdolną do przechowywania wartości od 0,0001 do 99,9999, jak prosiłeś, potrzebujesz następującego oświadczenia
CREATE TABLE your_table
(
your_column DECIMAL(6,4) NOT NULL
);
Definicja kolumny ma format DECIMAL(M, D), gdzie M to maksymalna liczba cyfr (precyzja ) i D to liczba cyfr po prawej stronie przecinka dziesiętnego (skala ).
Oznacza to, że poprzednie polecenie tworzy kolumnę, która akceptuje wartości od -99,9999 do 99,9999. Możesz również utworzyć kolumnę UNSIGNED DECIMAL, w zakresie od 0,0000 do 99,9999.
Na przykład, jeśli chcesz mieć kolumnę, która akceptuje wartości od -9999.99 do 9999,99 poleceniem będzie DECIMAL(6,2)
. Jak widać, nadal używasz precyzji 6, ale zezwalaj tylko na skalowanie z 2.
Więcej informacji na temat MySQL DECIMAL znajdziesz w oficjalnej dokumentacji są zawsze doskonałym źródłem informacji.
Pamiętaj, że wszystkie te informacje dotyczą wersji MySQL 5.0.3 i nowszych. Jeśli używasz poprzednich wersji, naprawdę powinieneś dokonać aktualizacji.
Aktualizacja w MySQL 8.0.17+
Niepodpisany jest przestarzały dla kolumn FLOAT, DOUBLE i DECIMAL.