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