Глава 8. Типы данных

Содержание
8.1. Числовые типы
8.1.1. Целочисленные типы
8.1.2. Числа с фиксированной точностью
8.1.3. Типы с плавающей точкой
8.1.4. Последовательные типы
8.2. Денежные типы
8.3. Символьные типы
8.4. Двоичные типы данных
8.4.1. Шестнадцатеричный формат bytea
8.4.2. Формат спецпоследовательностей bytea
8.5. Типы даты/времени
8.5.1. Ввод даты/времени
8.5.2. Вывод даты/времени
8.5.3. Часовые пояса
8.5.4. Ввод интервалов
8.5.5. Вывод интервалов
8.6. Логический тип
8.7. Типы перечислений
8.7.1. Объявление перечислений
8.7.2. Порядок
8.7.3. Безопасность типа
8.7.4. Тонкости реализации
8.8. Геометрические типы
8.8.1. Точки
8.8.2. Прямые
8.8.3. Отрезки
8.8.4. Прямоугольники
8.8.5. Пути
8.8.6. Многоугольники
8.8.7. Окружности
8.9. Типы, описывающие сетевые адреса
8.9.1. inet
8.9.2. cidr
8.9.3. Различия inet и cidr
8.9.4. macaddr
8.10. Битовые строки
8.11. Типы, предназначенные для текстового поиска
8.11.1. tsvector
8.11.2. tsquery
8.12. Тип UUID
8.13. Тип XML
8.13.1. Создание XML-значений
8.13.2. Обработка кодировки
8.13.3. Обращение к XML-значениям
8.14. Типы JSON
8.14.1. Синтаксис вводимых и выводимых значений JSON
8.14.2. Эффективная организация документов JSON
8.14.3. Проверки на вхождение и существование jsonb
8.14.4. Индексация jsonb
8.15. Массивы
8.15.1. Объявления типов массивов
8.15.2. Ввод значения массива
8.15.3. Обращение к массивам
8.15.4. Изменение массивов
8.15.5. Поиск значений в массивах
8.15.6. Синтаксис вводимых и выводимых значений массива
8.16. Составные типы
8.16.1. Объявление составных типов
8.16.2. Конструирование составных значений
8.16.3. Обращение к составным типам
8.16.4. Изменение составных типов
8.16.5. Использование составных типов в запросах
8.16.6. Синтаксис вводимых и выводимых значений составного типа
8.17. Диапазонные типы
8.17.1. Встроенные диапазонные типы
8.17.2. Примеры
8.17.3. Включение и исключение границ
8.17.4. Неограниченные (бесконечные) диапазоны
8.17.5. Ввод/вывод диапазонов
8.17.6. Конструирование диапазонов
8.17.7. Типы дискретных диапазонов
8.17.8. Определение новых диапазонных типов
8.17.9. Индексация
8.17.10. Ограничения для диапазонов
8.18. Идентификаторы объектов
8.19. Тип pg_lsn
8.20. Псевдотипы

PostgreSQL предоставляет пользователям богатый ассортимент встроенных типов данных. Кроме того, пользователи могут создавать свои типы в PostgreSQL, используя команду CREATE TYPE.

Таблица 8-1 содержит все встроенные типы данных общего пользования. Многие из альтернативных имён, приведённых в столбце "Псевдонимы", используются внутри PostgreSQL по историческим причинам. В этот список не включены некоторые устаревшие типы и типы для внутреннего применения.

Таблица 8-1. Типы данных

ИмяПсевдонимыОписание
bigint int8 знаковое целое из 8 байт
bigserial serial8 восьмибайтное целое с автоувеличением
bit [ (n) ]  битовая строка фиксированной длины
bit varying [ (n) ] varbit битовая строка переменной длины
boolean bool логическое значение (true/false)
box  прямоугольник в плоскости
bytea  двоичные данные ("массив байт")
character [ (n) ] char [ (n) ] символьная строка фиксированной длины
character varying [ (n) ] varchar [ (n) ] символьная строка переменной длины
cidr  сетевой адрес IPv4 или IPv6
circle  круг в плоскости
date  календарная дата (год, месяц, день)
double precision float8 число двойной точности с плавающей точкой (8 байт)
inet  адрес узла IPv4 или IPv6
integer int, int4знаковое четырёхбайтное целое
interval [ поля ] [ (p) ]  интервал времени
json  текстовые данные JSON
jsonb  двоичные данные JSON, разобранные
line  прямая в плоскости
lseg  отрезок в плоскости
macaddr  MAC-адрес
money  денежная сумма
numeric [ (p, s) ] decimal [ (p, s) ] вещественное число заданной точности
path  геометрический путь в плоскости
pg_lsn  Последовательный номер в журнале PostgreSQL
point  геометрическая точка в плоскости
polygon  замкнутый геометрический путь в плоскости
real float4 число одинарной точности с плавающей точкой (4 байта)
smallint int2 знаковое двухбайтное целое
smallserial serial2 двухбайтное целое с автоувеличением
serial serial4 четырёхбайтное целое с автоувеличением
text  символьная строка переменной длины
time [ (p) ] [ without time zone ]  время суток (без часового пояса)
time [ (p) ] with time zone timetz время суток с учётом часового пояса
timestamp [ (p) ] [ without time zone ]  дата и время (без часового пояса)
timestamp [ (p) ] with time zone timestamptz дата и время с учётом часового пояса
tsquery  запрос текстового поиска
tsvector  документ для текстового поиска
txid_snapshot  снимок идентификатора транзакций
uuid  универсальный уникальный идентификатор
xml  XML-данные

Совместимость: В стандарте SQL описаны следующие типы (или их имена): bigint, bit, bit varying, boolean, char, character varying, character, varchar, date, double precision, integer, interval, numeric, decimal, real, smallint, time (с часовым поясом и без), timestamp (с часовым поясом и без), xml.

Каждый тип данных имеет внутреннее представление, скрытое функциями ввода и вывода. При этом многие встроенные типы стандартны и имеют очевидные внешние форматы. Однако есть типы, уникальные для PostgreSQL, например геометрические пути, и есть типы, которые могут иметь разные форматы, например, дата и время. Некоторые функции ввода и вывода не являются в точности обратными друг к другу, то есть результат функции вывода может не совпадать со входным значением из-за потери точности.