Иллюстрированный самоучитель по PostgreSQL

Числовые типы

Числовые типы PostgreSQL используются для представления целых и вещественных значений. С общей точки зрения к числовым типам PostgreSQL относятся следующие типы:

  • 2-, 4- и 8-байтовые целые числа;
  • 4- и 8-байтовые вещественные числа;
  • дробные числа с фиксированной точностью.

Помимо перечисленных в PostgreSQL существуют некоторые специальные типы, также относимые к категории числовых, в том числе устаревший тип money и специальная конструкция serial (табл. 3.13).

Таблица 3.13. Числовые типы PostgreSQL.

Тип Размер Допустимые значения
bigint, int8 8 байт Целые числа в интервале от -9 223 372 036 854 775 807 до 9 223 372 036 854 775 807
double precision, floats, float 8 байт Вещественные числа, 15 значащих цифр, неограниченный размер (с ограниченной точностью)
integer, int, int4 4 байта Целые числа в интервале от -2 147 483 648 до 2 147 483 647
numeric(p.s), decimal (p .s) Переменный Целые и вещественные числа из p цифр (всего) и s цифр в дробной части
real, float4 4 байта Вещественные числа, шесть значащих цифр, неограниченный размер (с ограниченной точностью)
small int, int2 2 байта Целые числа в интервале от -32 768 до 32 767
money 4 байта Вещественные числа с двумя цифрами в дробной части в интервале от -21 474 836.48 до 21 474 836.47
serial 4 байта Целые числа в интервале от 0 до 2 147 483 647

Как видно из табл. 3.13, у некоторых типов данных PostgreSQL имеются синонимы, полностью эквивалентные исходным типам. Синонимы были созданы для удобства, хотя иногда это приводит к недоразумениям, поскольку некоторые синонимы встречаются в других языках программирования. Если не знать, с каким типом ассоциируется тот или иной синоним, возможны случайные ссылки на другие типы данных. Например, в PostgreSQL типы real и doubl e представляют значения, которые во многих языках относятся к типу float; при этом у обоих типов имеются синонимы, имена которых содержат слово "float" (float и flot8 относятся к double precision, float4 относится к real). Если вы попытаетесь использовать синоним f I oat, полагая, что он связан с типом real, возникнут проблемы, поскольку в действительности этот синоним связан с типом double precision.

Тип numeric Тип numeric (также называемый типом decimal) предназначен для представления сколь угодно больших или малых значений с фиксированной точностью, задаваемой пользователем. При создании таблицы с полем типа numeric в круглых скобках указываются два значения: точность и масштаб. Точность определяет максимальное количество цифр (включая цифры в дробной части), а масштаб определяет количество цифр только в дробной части. Если параметры не заданы, по умолчанию точность равна 30, а масштаб – 6. Максимальная точность (а следовательно, и максимальный размер), задаваемая таким образом, равна 1000. На практике 1000 цифр обычно вполне достаточно.

Примечание
Нарушение точности и масштаба полей типа numeric не всегда приводит к выдаче сообщения об ошибке в PostgreSQL
.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.