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

Содержание:

Anonim

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

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

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

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

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

  • Типы данных символов
  • Числовые типы данных
  • Типы двоичных данных
  • Тип сетевого адреса
  • Тип текстового поиска
  • Дата / время Типы данных
  • Логический тип
  • Типы геометрических данных
  • Нумерованные типы
  • Тип диапазона
  • Тип UUID
  • Тип XML
  • Тип JSON
  • Псевдотипы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Имя Размер Описание
сидр 7 или 19 до свидания Сети IPV4 и IPv6
Инет 7 или 19 байт Хост и сети IPV4 и IPV5
Macaddr 6 байт 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: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 сентября в любом стиле даты
07.09.2025 7 сентября с MDY, 9 июля с DMY
07.09.25 7 сентября 2025 г., с MDY
2025-сен-7 7 сентября в любом стиле даты
Сен-7-2018 7 сентября в любом стиле даты
7 сен 25 7 сентября 2025 г., совместно с YMD
20250907 ISO 8601,7 сен 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 PM EST
23:19 EST часовой пояс, указанный как EST, то же, что и 23:19 PM EST

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

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

  • Истинный
  • Ложь
  • ноль

значения.

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

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

  • да
  • y
  • 1
  • т
  • истинный

в 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 - помогает отображать метку времени без часового пояса
  • странно - позволяет отображать метку времени с часовым поясом
  • 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
json Jsonb
Простое расширение текстового типа данных с проверкой 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 Объявлен возврат обработчика языка.
Записывать Найдите функцию, которая возвращает неопределенный тип строки.
Спусковой крючок Функция триггера используется для возврата триггера.

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

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

  • Используйте тип данных «текст», если вы не хотите ограничить ввод
  • Никогда не используйте "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 имеет много записей специального назначения, которые называются псевдотипами.
  • Лучше всего использовать тип данных «текст», если вы не хотите ограничить ввод