SQLсервер в Linux -самостоятельное освоение пакета

       

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



Таблица 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
numeric(p.s), decimal (p. s)

4 байта Переменный

Целые числа в интервале от -2 147 483 648 до 2 147 483 647
Целые и вещественные числа из рцифр (всего) и 5 цифр в дробной части

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 цифр обычно вполне достаточно.

Примечание 1
Примечание 1

Предотвращение ошибок переполнения

booktcwn=# INSERT INTO numbers

VALUES (9.99999999);

INSERT 3390697 1

booktown=# SELECT * FROM numbers:

number

10.000000 (1 row)

booktown=# INSERT INTO

numbers VALUES (9999.99999999);

ERROR: overflow on numeric

AMS(value) >= 10*5 for field with precision

11 scale 6 booktown=# INSERT INTO

numbers VALUES (trunc(99999.99999999.6));

INSERT 3390698 1

booktown=# SELECT * FROM

numbers; number

10.000000 99999.999999 (2 rows)

booktown=# INSERT INTO

numbers VALUES (trunc0.99999999. 6));

INSERT 3390699 1

booktown=# SELECT * FROM numbers;

number

10.000000 99999.999999 9.999999

(3 rows)



Содержание раздела