Типы данных PostgreSQL: Символьные | Числовой | Двоичный | Логический

PostgreSQL предлагает пользователям богатый набор собственных типов данных. Пользователи могут добавлять новые типы с помощью команды CREATE TYPE. Это также делает запросы более простыми и читаемыми.

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

PostgreSQL поддерживает следующие типы данных:

  • Типы текста
  • Числовые типы
  • Даты и время
  • XML
  • JSON
  • Логический
  • Биты
  • Двоичные данные
  • Сеть
  • Массивы
  • Создайте свой тип данных
  • Логический
  • Временный
  • UUID
  • Множество
  • JSON
  • Специальные типы данных для хранения сетевого адреса и геометрических данных.

Давайте подробно изучим типы данных PostgreSQL

Типы данных символов

PostgreSQL поддерживает символьные типы данных для хранения текстовых значений. PostgreSQL строит символьные типы данных на основе тех же внутренних структур. PostgreSQL предлагает три типа символьных данных: CHAR (n), VARCHAR (n) и TEXT.

ИмяОписание
varchar (сущ.)Позволяет объявлять переменную длину с ограничением
Char (сущ.)Фиксированной длины, с мягкой подкладкой
ТекстЭтот тип данных можно использовать для объявления переменной неограниченной длины.

Числовые типы данных

PostgreSQL поддерживает два разных типа чисел:

  • Целые числа
  • Числа с плавающей запятой
ИмяРазмер магазинаДиапазон
Smallint2 байтаОт -32768 до +32767
целое число4 байтаС -2147483648 до +2147483647
Bigint8 байтОт -9223372036854775808 до 9223372036854775807
десятичныйПеременнаяЕсли вы объявили его как десятичный тип данных, диапазон от 131072 цифр до десятичной точки до 16383 цифр после десятичной точки.
числовойПеременнаяЕсли вы объявите его как число, вы можете включить число до 131072 цифр перед десятичной точкой до 16383 цифр после десятичной точки.
настоящий4 байтаТочность до 6 десятичных знаков
двойной8 байтТочность 15 десятичных знаков

Типы двоичных данных

Двоичная строка - это последовательность октетов или байтов. Типы двоичных данных Postgres делятся двумя способами.

  • Двоичные строки позволяют хранить шансы нулевого значения
  • Непечатаемые байты

Строки символов не допускают нулевых октетов, а также запрещают любые другие значения и последовательности октетов, которые недопустимы в соответствии с правилами кодирования набора символов базы данных.

ИмяРазмер хранилищаОписание
БайтОт 1 до 4 байтов плюс размер двоичной строкиДвоичная строка переменной длины

Тип сетевого адреса

Многие приложения хранят сетевую информацию, такую ​​как IP-адрес пользователей или

датчики. PostgreSQL имеет три собственных типа, которые помогают оптимизировать сетевые данные.

ИмяРазмерОписание
сидр7 или 19 до свиданияСети IPV4 и IPv6
Инет7 или 19 байтХост и сети IPV4 и IPV5
Macaddr6 байтMAC-адреса

Использование типов сетевых адресов имеет следующие преимущества

  1. Экономия места для хранения
  2. Проверка ошибок ввода
  3. Такие функции, как поиск данных по подсети

Тип текстового поиска

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

  • Цвектор текстового поиска Типы переменных PostgreSQL представляют документ в форме, оптимизированной для текстового поиска.
  • В текстовом поиске типа запроса хранятся ключевые слова, по которым необходимо выполнить поиск.

Дата / время Типы данных

Отметка времени PostgreSQL предлагает точность до микросекунд вместо точности до секунды. Кроме того, у вас также есть возможность сохранения с часовым поясом или без него. PostgreSQL преобразует временную метку с часовым поясом в UTC при вводе и сохранит ее.

Дата и время принимаются в различных форматах, включая традиционный Postgres, ISO 8601. SQL-совместимый и т. Д.

PostgreSQL поддерживает порядок дня / месяца / года. Поддерживаемые форматы: DMY, MDY, YMD.

Типы временных данных

ИмяРазмерДиапазонразрешение
Отметка времени без часового пояса8 байт4713 г. до н.э. по 294276 г. н.э.1 микросекунда / 14 цифр
Отметка времени с часовым поясом8 байт4713 г. до н.э. по 294276 г. н.э.1 микросекунда / 14 цифр
Дата4 байта4713 г. до н.э. по 294276 г. н.э.Когда-нибудь
Время без часового пояса8 байтС 00:00:00 до 24:00:001 микросекунда / 14 цифр
Время с часовым поясом12 байтС 00:00:00 + 1459 до 24:00: 00-14591 микросекунда / 14 цифр
Интервал12 байтОт -178000000 до 178000000 лет1 микросекунда / 14 цифр

Примеры:

ВходОписание
2025-09-07ISO 8601, 7 сентября с любым стилем даты (рекомендуемый формат)
7 сентября 2025 г.7 сентября в любом стиле даты
09.07.20257 сентября с MDY, 9 июля с DMY
09.07.257 сентября 2025 г., с MDY
2025-сен-77 сентября в любом стиле даты
Сен-7-20187 сентября в любом стиле даты
7 сен 257 сентября 2025 г., совместно с YMD
20250907ISO 8601,7 сен 20225 в любом режиме
2 025 250год и день года, в данном случае 7 сентября 2025 г.
J25250Юлианская дата

Время / Время с вводом часового пояса

ВходОписание
11: 19: 38.507 11:19:38 11:19 111938ISO 8601
11:19 утраТо же, что и 11:19
23:19то же, что 23:19
23: 19-3 23: 19-03: 00 231900-03ISO 8601, то же, что и в 23:19 EST
23:19 ESTчасовой пояс, указанный как EST, то же, что и 23:19 PM EST

Логический тип

Тип данных Boolean может содержать

  • Правда
  • Ложь
  • нулевой

ценности.

Вы используете bool или логический ключевое слово для объявления столбца с типом данных Boolean.

Когда вы вставляете значения в логический столбец, Postgre преобразует такие значения, как

  • да
  • а также
  • 1
  • т
  • правда

в 1.

Хотя такие значения, как

  • Нет
  • N
  • 0
  • F
  • Ложь

преобразуются в 0

При выборе данных значения снова конвертируются обратно в yes, true, y и т. Д.

Типы геометрических данных

Типы геометрических данных представляют собой двухмерные пространственные объекты. Они помогают выполнять такие операции, как поворот, масштабирование, перемещение и т. Д.

ИмяРазмер хранилищаПредставлениеОписание
Точка16 байтТочка на самолете(х, у)
Линия32 байтаБесконечная линия((xl.yl). (x2.y2))
Lseg32 байтаКонечный отрезок линии((xl.yl). (x2.y2))
Коробка32 байтаПрямоугольная коробка((xl.yl). (x2.y2))
Дорожка16n + 16n байтЗакрыть и открыть путь((xl.yl), ...)
Многоугольник40 + 16n байтМногоугольник[(xl.yl) ....]
Круг24 байтаКруг(центральная точка и радиус)

Перечислимые типы

Перечислимый тип данных PostgreSQL полезен для представления редко меняющейся информации, такой как код страны или идентификатор филиала. Тип данных Enumerated представлен в таблице с внешними ключами для обеспечения целостности данных.

Пример:

Цвет волос довольно статичен в демографической базе данных

CREATE TYPE hair_color AS ENUM ('brown','black','red','grey','blond')

Тип диапазона

Многим бизнес-приложениям требуются данные в диапазонах. Обычно для работы с диапазонами определяются два столбца (пример: дата начала, дата окончания). Это неэффективно и сложно в обслуживании.

Postgre построил следующие типы диапазонов

  • int4range - Отображает диапазон целого числа
  • int8range - Отображает диапазон bigint
  • numrange - показывает числовой диапазон
  • tstrange - помогает отображать метку времени без часового пояса
  • странно - позволяет отображать метку времени с часовым поясом
  • date range - Диапазон дат

Тип UUID

Универсальные уникальные идентификаторы (UUID) - это 128-битная величина, которая генерируется алгоритмом. Очень маловероятно, что тот же идентификатор будет сгенерирован другим человеком в мире с использованием того же алгоритма. Вот почему для распределенных систем эти идентификаторы являются идеальным выбором, поскольку они обеспечивают уникальность в рамках единой базы данных. UUID записывается как группа шестнадцатеричных цифр нижнего регистра с различными группами, разделенными дефисами.

PostgreSQL имеет собственный тип данных UUID, который занимает 16 байт памяти. UUID - идеальный тип данных для первичных ключей.

Пример:

d5f28c97-b962-43be-9cf8-ca1632182e8e

Postgre также принимает альтернативные формы ввода UUID, такие как заглавные буквы, без дефисов, фигурных скобок и т. Д.

Тип XML

PostgreSQL позволяет хранить XML-данные в виде данных, но это не более чем расширение текстового типа данных. Но преимущество в том, что он проверяет правильность формата входного XML.

Пример:

XMLPARSE (DOCUMENT 'Data Type...')

Тип JSON

Для хранения данных JSON PostgreSQL предлагает 2 типа данных

  1. JSON
  2. JSONB
jsonJsonb
Простое расширение текстового типа данных с проверкой JSONДвоичное представление данных JSON
Вставка выполняется быстро, но получение данных относительно медленное.Вставка выполняется медленно, но выбирается (получение данных происходит быстро)
Сохраняет введенные данные в том виде, в котором они есть, включая пробелы.Поддерживает индексацию. Может оптимизировать пробелы, чтобы ускорить поиск.
Повторная обработка при извлечении данныхПри извлечении данных повторная обработка не требуется

Наиболее широко используемый тип данных JSON использует jsonb, если нет особой необходимости в использовании типа данных JSON.

Пример:

 CREATE TABLE employee ( id integer NOT NULL, age integer NOT NULL, data jsonb ); 
INSERT INTO employee VALUES (1, 35, '{'name': 'Tom Price', 'tags': ['Motivated', 'SelfLearner'], 'onboareded': true}'); 

Псевдотипы

PostgreSQL имеет много записей специального назначения, которые называются псевдотипами. Вы не можете использовать псевдотипы в качестве типов столбцов PostgreSQL. Они используются для объявления аргумента функции или типа возвращаемого значения.

Каждый из доступных псевдотипов полезен в ситуациях, когда документы поведения функции не соответствуют простому получению или возврату значения определенного типа данных SQL.

ИмяОписание
ЛюбойФункция принимает все типы входных данных.
МассивФункция принимает любой тип данных массива.
Любой элементФункция принимает любой тип данных.
Любое перечислениеФункция принимает любой тип данных enum.
NonarrayФункция принимает любой тип данных, не являющийся массивом.
CstringФункция принимает или возвращает строку C с завершающим нулем.
ВнутреннийВнутренняя функция принимает или возвращает внутренний тип данных сервера.
Language_handlerОбъявлен возврат обработчика языка.
ЗаписыватьНайдите функцию, которая возвращает неопределенный тип строки.
КурокФункция триггера используется для возврата триггера.

Важно, чтобы пользователь, использующий эту функцию, должен был убедиться, что функция будет вести себя безопасно, когда псевдотип используется в качестве типа аргумента.

Лучшие практики использования типов данных

  • Используйте тип данных text, если вы не хотите ограничить ввод
  • Никогда не используйте char.
  • Целые числа используют int. Используйте bigint только тогда, когда у вас действительно большие числа
  • Почти всегда используйте 'числовой'
  • Используйте float в PostgreSQL, если у вас есть источник данных IEEE 754

Резюме

  • PostgreSQL предлагает пользователям богатый набор собственных типов данных.
  • PostgreSQL поддерживает символьные типы данных для хранения текстовых значений.
  • PostgreSQL поддерживает два различных типа чисел: 1. Целые числа, 2. Числа с плавающей запятой.
  • Двоичная строка - это последовательность байтов или октетов.
  • PostgreSQL имеет тип сетевого адреса, чтобы помочь вам оптимизировать хранение сетевых данных.
  • Текстовый поиск Структуры данных PostgreSQL предназначены для поддержки полнотекстового поиска.
  • Типы данных Date / Time PSQL позволяют получать информацию о дате и времени в различных форматах.
  • Логические типы полей Postgres могут содержать три значения: 1. Истина 2. Ложь 3. Нулевое значение.
  • Геометрические типы данных PostgreSQL представляют собой двумерные пространственные объекты
  • Перечислимые типы данных в PostgreSQL полезны для представления редко меняющейся информации, такой как код страны или идентификатор филиала.
  • Универсальные уникальные идентификаторы (UUID) - это 128-битная величина, которая генерируется алгоритмом.
  • PostgreSQL имеет много записей специального назначения, которые называются псевдотипами.
  • Лучше всего использовать тип данных «текст», если вы не хотите ограничить ввод