Что означает тип данных/поля DECIMAL (MySql)?

Задаю поле в БД - my_value DECIMAL(11,10). Нужно хранить значения вида 123456789.1234567890
Как я понимаю, в этом поле должно хранится значение с 11 цифрами целой части и 10 дробной.
Но это, разумеется не так. Дробная часть хранится, но вот целая нет.
Что вообще означают числа в этой записи DECIMAL(11,10)?
И почему запись вида DECIMAL(9,10) вызывает ошибку
Ошибка запроса: #1427 - For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column 'coin_value').
PS

Спонсор глупых вопросов не понятные мануалы

salary DECIMAL(5,2)
В этом примере - 5 (точность) представляет собой общее количество (а есть не общее?) значащих десятичных знаков (значащих знаков? масло масленое?), с которыми будет храниться данная величина (а может и не храниться?), а цифра 2 (масштаб) задает количество десятичных знаков после запятой (ну хоть это понятно).
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
  • Melkij
    @Melkij
    PostgreSQL DBA
    общее количество (а есть не общее?)

    да есть - число знаков после запятой.

    с которыми будет храниться данная величина (а может и не храниться?)

    Да, может не храниться. В частности - отбрасываться, округляться или выдавать ошибку переполнения.

    Как я понимаю, в этом поле должно хранится значение с 11 цифрами целой части и 10 дробной.

    Нет.
    11 знаков есть всего, из них 10 - для дробной части.

    И почему запись вида DECIMAL(9,10) вызывает ошибку

    Потому что число знаков после запятой не может быть больше общего числа знаков.
    Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы