Числовые типы
Числовые типы 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.