PostgreSQL предоставляет широкий спектр типов данных, обеспечивая гибкость и эффективность при моделировании структуры базы данных. Правильный выбор типа данных критически важен для оптимизации хранения, производительности запросов и обеспечения целостности данных.
Числовые типы данных
Целочисленные типы
- SMALLINT – 2 байта, диапазон значений от -32 768 до 32 767.
- INTEGER – 4 байта, диапазон значений от -2 147 483 648 до 2 147 483 647.
- BIGINT – 8 байт, диапазон значений от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807.
- SERIAL – 4-байтовый автоинкрементный тип, диапазон значений от 1 до 2 147 483 647.
- BIGSERIAL – 8-байтовый автоинкрементный тип, диапазон значений от 1 до 9 223 372 036 854 775 807.
- SMALLSERIAL – 2-байтовый автоинкрементный тип, диапазон значений от 1 до 32 767.
Числа с плавающей точкой
- REAL – 4 байта, точность до 6 десятичных знаков.
- DOUBLE PRECISION – 8 байт, точность до 15 десятичных знаков.
Десятичные числа
- NUMERIC(p, s) – используется для хранения чисел с точностью, где
p
– общее количество цифр, аs
– количество знаков после запятой. - DECIMAL(p, s) – аналог
NUMERIC
, обеспечивающий ту же точность. - MONEY – 8-байтовый тип данных, предназначенный для хранения денежных сумм, с автоматическим форматированием.
Символьные типы данных
- CHAR(n) – строка фиксированной длины
n
. - VARCHAR(n) – строка переменной длины до
n
. - TEXT – строка произвольной длины.
Логический тип
- BOOLEAN – принимает значения
TRUE
,FALSE
.
Двоичные и битовые данные
- BYTEA – последовательность байтов для хранения бинарных данных.
- BIT(n) – последовательность бит фиксированной длины
n
. - BIT VARYING(n) – последовательность бит переменной длины до
n
.
Дата и время
- DATE – 4 байта, хранит дату без времени, диапазон: от 4713 г. до н. э. до 5874897 г. н. э.
- TIME(p) [WITH | WITHOUT] TIME ZONE – 8 байт, хранит время суток.
- TIMESTAMP(p) [WITH | WITHOUT] TIME ZONE – 8 байт, представляет дату и время.
- INTERVAL [поля] (p) – хранит разницу между датами с регулируемой точностью
p
.
Сетевые типы данных
- INET – хранение IPv4 или IPv6-адресов.
- CIDR – представление подсетей IP-адресов.
- MACADDR – хранение MAC-адресов.
JSON и XML
- JSON – текстовое представление JSON-документов.
- JSONB – бинарное представление JSON, обеспечивающее более эффективные операции поиска и индексации.
- XML – хранение структурированных XML-документов.
Геометрические типы данных
- POINT – двумерная координата
(x, y)
. - LINE – представление бесконечной линии.
- LSEG – отрезок прямой.
- BOX – ограниченная прямоугольная область.
- CIRCLE – геометрическое представление окружности.
- POLYGON – произвольный многоугольник.
Универсальные и специальные типы
- UUID – 16-байтовый тип, предназначенный для хранения уникальных идентификаторов.
Массивы
Любой базовый тип может быть представлен в виде массива, например, INTEGER[]
или TEXT[]
.