1.2. Изменения типа данных DECIMAL

1.2. Изменения типа данных DECIMAL

Этот раздел обсуждает характеристики типа данных DECIMAL (и синонимов) в MySQL 5.1, со специфическим отношением к следующим темам

Максимальное число цифр

Формат хранения

Требования к памяти

Ненормативное MySQL расширение к верхнему диапазону столбцов DECIMAL

Возможные несовместимости с прикладными программами, которые написаны для старых версий MySQL, отмечены в этом разделе.

Синтаксис объявления для столбца DECIMAL: DECIMAL(M,D). Диапазоны значений для параметров в MySQL 5.1 следующие:

M: максимальное число цифр (точность). Это имеет диапазон от 1 до 65. Старые версии MySQL позволяли диапазон от 1 до 254.

D: число цифр направо от десятичной точки (масштаб). Это имеет диапазон от 0 до 30 и должно быть не больше, чем M.

Максимальное значение 65 для M означает, что вычисления на значениях DECIMAL точны до 65 цифр. Это ограничение точности в 65 цифр также применяется к числовым литералам с точным значением, так что оно задает максимальный диапазон таких литералов. В старых версиях MySQL десятичные значения могли иметь до 254 цифр. Однако, вычисления были выполнены, используя числа с плавающей запятой и таким образом были приблизительны, не точны.

Значения для столбцов DECIMAL в MySQL 5.1 сохранены, используя двоичный формат, который упаковывает девять десятичных цифр в четыре байта. Требования к памяти для целочисленных и дробных частей каждого значения определены отдельно. Каждые девять цифр требуют четырех байт, и любые цифры сверх этого требуют некоторой доли четырех байтов. Например, DECIMAL(18,9) имеет девять цифр с обеих сторон десятичной точки, так что целочисленная и дробная части требуют четырех байтов каждая. Столбец DECIMAL(20,10) имеет по десять цифр с обеих сторон десятичной точки. Каждая часть требует четырех байтов для девяти из цифр и одного байта для остающейся цифры.

Память, требуемая для остающихся цифр, показана в следующей таблице:

Остающиеся цифры | Число байтов

0 | 0

1 | 1

2| 1

3 | 2

4 | 2

5 | 3

6 | 3

7 | 4

8 | 4

9 | 4

В отличие от старых версий MySQL (до 5.0.3), столбцы DECIMAL в MySQL 5.1 не сохраняют символ + или цифры 0 в начале значения. Если Вы вставляете +0003.1 в столбец DECIMAL(5,1), это сохранено как 3.1. Прикладные программы, которые полагаются на старое поведение, должны измениться, чтобы обработать это изменение.

Столбцы DECIMAL в MySQL 5.1 не позволяют значения больше, чем диапазон, подразумеваемый по определению столбца. Например, столбец DECIMAL(3,0) поддерживает диапазон от -999 до 999. А столбец DECIMAL(M,D) позволяет M цифр налево от десятичной точки. Это не совместимо с прикладными программами, полагающимися на старые версии MySQL, которые разрешали сохранять дополнительную цифру вместо знака +.

SQL-стандарт требует, чтобы точность NUMERIC(M,D) была точно M цифр. Для DECIMAL(M,D) стандарт требует точности по крайней мере M цифр, но позволяет больше. В MySQL DECIMAL(M,D) и NUMERIC(M,D) то же самое, и оба типа имеют точность ровно M цифр.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

5. Целочисленные, переменного типа и переменные данных

Из книги Программирование автора Козлова Ирина Сергеевна

5. Целочисленные, переменного типа и переменные данных ByteБайтовый тип нов в Visual Basic и используется для хранения целых чисел от 0 до 255. Его применение дает возможность значительно экономить оперативную память и сократить размер массивов по сравнению с предыдущими


Использование программы Microsoft Visio для просмотра и изменения схемы базы данных

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

Использование программы Microsoft Visio для просмотра и изменения схемы базы данных Помимо инструментов среды Visual Studio .NET, для создания, просмотра и изменения схем базы данных могут использоваться другие очень удобные средства. Программа Microsoft Visio обладает всеми необходимыми


Сценарии изменения данных

Из книги Самоучитель работы на компьютере автора Колисниченко Денис Николаевич

Сценарии изменения данных Для внесения изменений в существующую схему базы данных используются сценарии изменения данных. Хотя они могут создаваться вручную, все же предпочтительнее для этого использовать специальные инструменты. В главах 1, "Основы построения баз


Выбор типа данных

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Выбор типа данных Теперь нужно сообщить программе, что вы хотите записать на диск. Если просто файлы (документы, фотографии), то выбирайте Данные, Диск с данными. В меню Данные будет еще одна команда — Загрузочный диск с данными. Nero позволяет создать диск, с которого можно


Изменения, связанные с устранением неявных допущений относительно предполагаемых размеров элементов данных

Из книги Интернет на 100%. Подробный самоучитель: от «чайника» – до профессионала автора Гладкий Алексей Анатольевич

Изменения, связанные с устранением неявных допущений относительно предполагаемых размеров элементов данных Источником многих проблем могут служить различного рода допущения относительно размеров данных. Несколько возможных примеров этого приводятся ниже.• Тип DWORD


Поиск данных в зависимости от их типа

Из книги VBA для чайников автора Каммингс Стив

Поиск данных в зависимости от их типа Кроме поиска данных на FTP-серверах, для тонкого и точного поиска можно использовать специальные режимы, которые предлагают многие популярные поисковые системы – например, www.google.ru, www.yandex.ru, www.mail.ru, www.rambler.ru и др. Смысл заключается в том,


Изменение типа данных столбца

Из книги QT 4: программирование GUI на С++ автора Бланшет Жасмин

Изменение типа данных столбца Используйте предложение ALTER COLUMN В операторе ALTER TABLE, например:ALTER TABLE table1 ALTER COLUMN field1 TYPE char(20);Информацию об изменении столбцов таблицы см. в разд. "Изменение таблиц" главы


Изменение типа данных домена

Из книги автора

Изменение типа данных домена Используйте предложение TYPE В операторе ALTER DOMAIN для изменения типа данных домена, например,ALTER DOMAIN MyDomain TYPE VARCHAR(40);На рис. 8.1 показаны допустимые преобразования типов данных. Более подробную информацию об изменении атрибутов домена см. в главе


Ключевые слова, используемые для спецификации типа данных

Из книги автора

Ключевые слова, используемые для спецификации типа данных Ключевые слова для спецификации типов данных в операторах DDL представлены здесь в качестве краткой справки. Точный синтаксис см. в соответствующей главе, связанной с типами данных этой части книги, а также в


Тип данных DECIMAL

Из книги автора

Тип данных DECIMAL Формат типа данных DECIMAL:DECIMAL(Р, S)Как и в случае NUMERIC, DECIMAL(4,2) определяет число, состоящее, по меньшей мере, из четырех цифр, включая две цифры справа от десятичной точки. Тем не менее, поскольку Firebird сохраняет данные DECIMAL с точностью 4 и меньше как INTEGER, этот тип


Описание данных целого типа

Из книги автора

Описание данных целого типа      При описании данных необходимо ввести только тип, за которым должен следовать список имен переменных. Ниже приведены некоторые возможные примеры описаний: int erns;short stops;long johns;int hogs, cows, goats;В качестве разделителя между именами переменных


Знак типа данных char

Из книги автора

Знак типа данных char В стандарте языка С сказано, что тип данных char может быть со знаком или без знака. Ответственность за определение того, какой вариант типа данных char использовать по умолчанию, лежит на компиляторе, препроцессоре или на обоих.Для большинства аппаратных


Хранение данных в объектах типа «элемент»

Из книги автора

Хранение данных в объектах типа «элемент» В приложении Электронная таблица каждая непустая ячейка хранится в памяти в виде одного объекта QTableWidgetltem (элемент табличного виджета). Хранение данных в объектах типа «элемент» используется также виджетами QListWidget и QTreeWidget,