Типы данных
В этом разделе перечислены типы данных, доступные в Greengage DB.
Встроенные типы
Greengage DB предоставляет широкий набор встроенных типов данных для хранения различных значений и объектов.
Большинство этих типов унаследованы от PostgreSQL и включают типы данных, определенные стандартом SQL, такие как bigint, bit, bit varying, boolean, character varying, varchar, character, char, date, double precision, integer, interval, numeric, decimal, real, smallint, time (с часовым поясом или без него), timestamp (с часовым поясом или без него) и xml.
Подробное описание семантики и поведения стандартных типов данных доступно в разделе Data types документации PostgreSQL.
Помимо типов данных, доступных пользователям, в Greengage DB есть внутренние системные типы, такие как oid.
Эти типы используются самой системой и, как правило, не предназначены для прикладного использования.
Типы расширений
Расширения Greengage DB могут вводить дополнительные типы данных, не доступные в стандартной поставке системы. Такие типы используются для специфических сценариев, реализация которых с использованием стандартных SQL-типов была бы неэффективной или трудоемкой.
Примеры:
-
Расширение
citext, которое добавляет типcitextдля регистронезависимых символьных строк. -
Расширение
hstore, которое добавляет типhstoreдля хранения наборов пар ключ/значение.
Пользовательские типы
Пользователи могут определять собственные типы данных с помощью выражения CREATE TYPE.
Пользовательские типы позволяют моделировать объекты отдельных предметных областей с собственными правилами валидации или представлять сложные структуры данных, не охваченные встроенными типами.
Пользовательские типы могут быть реализованы через составные типы, перечисления или собственные структуры из полей базовых типов. Их поведение и характеристики хранения зависят от способа реализации.
Список типов данных
-
Псевдонимы — это альтернативные названия типов данных, не определенные в стандарте SQL. Их использование может снижать переносимость между различными СУБД.
-
Подробная информация о типах данных доступна в таблице системного каталога pg_type.
Числовые типы
Типы serial, bigserial и smallserial не являются настоящими типами с собственной структурой хранения.
Технически в столбцах этих типов хранятся значения соответствующих целочисленных типов, а для вычисления значений по порядку используются последовательности.
| Название | Псевдоним | Размер | Диапазон | Описание |
|---|---|---|---|---|
bigint |
int8 |
8 байт |
От |
Целое число в большом диапазоне |
bigserial |
serial8 |
8 байт |
От |
Большое целое число с автоинкрементом |
decimal[(p, s)] |
numeric[(p, s)] |
Переменный |
Не ограничен |
Вещественное число с указанной точностью.
До |
double precision |
float8 |
8 байт |
Точность до 15 десятичных цифр |
Число с плавающей точкой двойной точности (неточное) |
integer |
int, int4 |
4 байта |
От |
Стандартный целочисленный тип |
real |
float4 |
4 байта |
Точность до 6 десятичных цифр |
Число с плавающей точкой одинарной точности (неточное) |
serial |
serial4 |
4 байта |
От |
Целое число с автоинкрементом |
smallint |
int2 |
2 байта |
От |
Целочисленное значение в небольшом диапазоне |
smallserial |
serial2 |
2 байта |
От |
Малое целое число с автоинкрементом |
Логический тип
| Название | Псевдоним | Размер | Диапазон | Описание |
|---|---|---|---|---|
boolean |
bool |
1 байт |
|
Логическое значение |
Символьные типы
-
Максимальная возможная длина (
n) значений символьных типов —10485760. -
Фиксированная часть размера для значений длиной 127 байт и более составляет четыре байта вместо одного.
| Название | Псевдоним | Размер | Диапазон | Описание |
|---|---|---|---|---|
character[(n)] |
char[(n)] |
1 байт + n |
Строки длиной до |
Символьная строка фиксированной длины с дополнением пробелами.
Без указания |
character varying[(n)] |
varchar[(n)] |
1 байт + длина строки |
Строки длиной до |
Символьная строка переменной ограниченной длины.
Без указания |
text |
— |
1 байт + длина строки |
Строки произвольной длины |
Символьная строка переменной длины |
Двоичный тип
| Название | Размер | Диапазон | Описание |
|---|---|---|---|
bytea |
1 или 4 байта + размер двоичной строки |
Последовательность октетов |
Двоичная строка переменной длины (массив байт) |
Типы даты и времени
Переменная p в определениях типов — это опциональное указание точности.
Она задает число знаков после запятой, хранимых в поле секунд.
Например, значение 3 позволяет хранить значения с точностью до миллисекунд.
Возможные значения p — от 0 до 6 (или от 0 до 10 для типа time, когда он использует вещественное хранение).
| Название | Псевдоним | Размер | Диапазон | Описание |
|---|---|---|---|---|
date |
— |
4 байта |
|
Дата (год, месяц, день) |
interval[fields][(p)] |
— |
16 байт |
|
Временной интервал |
time[(p)][without time zone] |
— |
8 байт |
|
Время суток |
time[(p)] with time zone |
timetz |
12 байт |
|
Время суток с часовым поясом |
timestamp[(p)][without time zone] |
— |
8 байт |
|
Дата и время |
timestamp[(p)] with time zone |
timestamptz |
8 байт |
|
Дата и время с часовым поясом |
Денежный тип
| Название | Размер | Диапазон | Описание |
|---|---|---|---|
money |
8 байт |
|
Денежная сумма |
Геометрические типы
Столбцы геометрических типов не могут использоваться в ключах распределения.
| Название | Размер | Диапазон | Описание |
|---|---|---|---|
box |
32 байта |
((x1,y1),(x2,y2)) |
Прямоугольник на плоскости |
circle |
24 байта |
<(x,y),r> |
Окружность на плоскости, задаваемая центром и радиусом |
line |
24 байта |
{A,B,C} |
Бесконечная прямая на плоскости |
lseg |
32 байта |
((x1,y1),(x2,y2)) |
Отрезок на плоскости |
path |
16 + 16n байт |
[(x1,y1),…] ((x1,y1),…) |
Геометрический путь на плоскости: открытый (в квадратных скобках) или замкнутый (в круглых скобках) |
point |
16 байт |
(x,y) |
Точка на плоскости |
polygon |
40 + 16n байт |
((x1,y1),…) |
Многоугольник на плоскости (аналог замкнутого геометрического пути) |
Типы сетевых адресов
| Название | Размер | Описание |
|---|---|---|
cidr |
7 или 19 байт |
Сетевой адрес IPv4 или IPv6 |
inet |
7 или 19 байт |
Адрес узла IPv4 или IPv6 |
macaddr |
6 байт |
MAC-адрес |
Битовые строки
| Название | Псевдоним | Размер | Диапазон | Описание |
|---|---|---|---|---|
bit[(n)] |
— |
|
Константы битовых строк (Bit-string constant) |
Битовая строка фиксированной длины |
bit varying[(n)] |
varbit |
Число бит в строке |
Константы битовых строк (Bit-string constant) |
Битовая строка переменной длины |
Типы полнотекстового поиска
Столбцы типов полнотекстового поиска не могут использоваться в ключах распределения.
| Название | Диапазон | Описание |
|---|---|---|
tsquery |
Набор лексем для поиска, объединенных логическими операторами |
Поисковый запрос полнотекстового поиска |
tsvector |
Отсортированный список уникальных лексем |
Документ полнотекстового поиска |
Структурированные форматы данных: XML и JSON
| Название | Размер | Диапазон | Описание |
|---|---|---|---|
json |
1 байт + размер JSON |
JSON произвольной длины |
Данные JSON в текстовом виде |
jsonb |
1 байт + размер двоичной строки |
JSON произвольной длины |
Данные JSON в бинарном формате |
xml |
1 байт + размер XML |
XML произвольной длины |
Данные XML |
UUID
| Название | Размер | Диапазон | Описание |
|---|---|---|---|
uuid |
16 байт |
Стандартный формат UUID (32 шестнадцатеричных цифры) |
Универсальный уникальный идентификатор UUID (RFC 4122) |
Типы диапазонов
| Название | Диапазон | Описание |
|---|---|---|
int4range |
ПРИМЕЧАНИЕ
|
Диапазон значений |
int8range |
Диапазон значений |
|
numrange |
Диапазон значений |
|
tsrange |
Диапазон значений |
|
tstzrange |
Диапазон значений |
|
daterange |
Диапазон значений |
Другие типы
| Название | Размер | Диапазон | Описание |
|---|---|---|---|
pg_lsn |
8 байт |
Тип pg_lsn |
Последовательный номер в логе PostgreSQL (Log Sequence Number) |
txid_snapshot |
— |
ID снимка транзакции |