Типы данных в PostgreSQL

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[].