Учебники

3) Типы данных PostgreSQL

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

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

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

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

Типы персонажей

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

имя Описание
VARCHAR (п) Позволяет вам объявить переменную-длину с ограничением
Символьный (п) Фиксированная длина, с пробелами
Текст Использование может использовать этот тип данных для объявления переменной с неограниченной длиной

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

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

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

Двоичные типы данных

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Временная метка 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:00 1 микросекунда / 14 цифр
Время с часовым поясом 12 байт 00:00:00 + 1459 до 24:00: 00-1459 1 микросекунда / 14 цифр
интервал 12 байт От -178000000 до 178000000 лет 1 микросекунда / 14 цифр

Примеры:

вход Описание
2025-09-07 ISO 8601, 7 сентября с любым стилем даты (рекомендуемый формат)
7 сентября 2025 г. 7 сентября с любым стилем даты
9/7/2025 7 сентября с MDY, 9 июля с DMY
9/7/25 7 сентября 2025 года, с MDY
2025-Sep-7 7 сентября с любым стилем даты
Сентябрь-7-2018 7 сентября с любым стилем даты
7-Sep-25 7 сентября 2025 года, с YMD
20250907 ISO 8601,7 Sep 20225 в любом режиме
2025.250 год и день года, в данном случае 7 сентября 2025 года
J25250 Юлианская дата

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

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

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

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

  • Правда
  • Ложь
  • значение NULL

ценности.

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

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

  • да
  • Y
  • 1
  • T
  • правда

в 1.

В то время как значения как

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

конвертируются в 0

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

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

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

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

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

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

Пример:

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

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

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

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

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

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

Тип UUID

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

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

Пример:

d5f28c97-b962-43be-9cf8-ca1632182e8e

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

Тип XML

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

Пример:

XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')

Тип JSON

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

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

Наиболее широко используемый тип данных JSON использовал us 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 есть много записей специального назначения, которые называются псевдотипами. Вы не можете использовать псевдотип в качестве типа данных столбца. Используются для объявления либо аргумента функции, либо возвращаемого типа.

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

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

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

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

  • Используйте «текстовый» тип данных, если вы не хотите ограничивать ввод
  • Никогда не используйте «char».
  • Целые числа используют «int». Используйте bigint только тогда, когда у вас действительно большие цифры
  • Используйте «числовой» почти всегда
  • Используйте тип данных с плавающей запятой, если у вас есть источник данных IEEE 754

Резюме

  • PostgreSQL предлагает богатый набор собственных типов данных для пользователей
  • PostgreSQL поддерживает символьные типы данных для хранения текстовых значений
  • PostgreSQL поддерживает два различных типа чисел: 1. Целые числа, 2. Числа с плавающей точкой
  • Бинарная строка – это последовательность байтов или октетов
  • PostgreSQL имеет тип сетевого адреса, который поможет вам оптимизировать хранение сетевых данных.
  • Типы данных текстового поиска предназначены для поддержки полнотекстового поиска
  • Типы данных Date / Time позволяют получать информацию о дате и времени в различных форматах.
  • Тип данных Boolean может содержать три значения: 1. True 2. False 3. Null
  • Геометрические типы данных представляют собой двумерные пространственные объекты.
  • Перечисленные типы данных в PostgreSQL полезны для представления редко меняющейся информации, такой как код страны или идентификатор филиала
  • Универсальные уникальные идентификаторы (UUID) – это 128-битная величина, которая генерируется алгоритмом
  • В PostgreSQL есть много записей специального назначения, которые называются псевдотипами.
  • Рекомендуется использовать «текстовый» тип данных, если вы не хотите ограничивать ввод