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