PostgreSQL Типы данных: байтовые, числовые, символьные, двоичные.
PostgreSQL Предлагает богатый набор собственных типов данных для пользователей. Пользователи могут добавлять новые типы с помощью команды CREATE TYPE. Это также делает запросы более простыми и читабельными.
Типы данных в PostgreSQL
PostgreSQL поддерживает следующие типы данных:
- Типы текста
- Числовые типы
- Даты и время
- XML
- JSON
- Логический
- Биты
- Binary Data
- Cеть
- Массивы
- Создайте свой тип данных
- Логический
- Временной
- UUID
- массив
- JSON
- Специальные типы данных для хранения сетевого адреса и геометрических данных.
Давай учиться PostgreSQL типы данных подробно
Типы данных символов
PostgreSQL поддерживает символьные типы данных для хранения текстовых значений. PostgreSQL строит символьные типы данных на основе одних и тех же внутренних структур. PostgreSQL предлагает три символьных типа данных: CHAR(n), VARCHAR(n) и TEXT.
ФИО | Описание |
---|---|
varchar (сущ.) | Позволяет объявить переменную длину с ограничением |
Чар(н) | Фиксированной длины, с глухой подкладкой |
Текст | Используйте этот тип данных, чтобы объявить переменную неограниченной длины. |
Числовые типы данных
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 байт | ИПВ4 и IPv6 сетей |
инет | 7 или 19 байт | Хост и сети IPV4 и IPV5 |
Macaddr | 6 байт | MAC-адреса |
Использование типов сетевых адресов имеет следующие преимущества
- Экономия места для хранения
- Проверка ошибок ввода
- Такие функции, как поиск данных по подсети.
Тип текстового поиска
PostgreSQL предоставляет два типа данных, которые предназначены для поддержки полнотекстового поиска. Полнотекстовый поиск — это поиск по коллекции документов на естественном языке для поиска тех, которые лучше всего соответствуют запросу.
- Цвекторный текстовый поиск PostgreSQL типы переменных представляют документ в форме, оптимизированной для текстового поиска
- Текстовый поиск типа запроса хранит ключевые слова, которые необходимо найти.
Типы данных даты/времени
PostgreSQL timestamp предлагает точность в микросекундах вместо точности в секундах. Кроме того, у вас также есть возможность сохранять данные с часовым поясом или без него. 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 to 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-Сен-7 | 7 сентября в любом стиле даты |
Сен-7-2018 | 7 сентября в любом стиле даты |
7-Сен-25 | 7 сентября 2025 г., с YMD |
20250907 | ISO 8601,7, 20225 сентября XNUMX г. в любом режиме |
2025.250 | год и день года, в данном случае 7 сентября 2025 г. |
J25250 | Юлианская дата |
Время/время с вводом часового пояса
вход | Описание |
---|---|
11:19:38.507 11:19:38 11:19 111938 |
стандартами качества ISO 8601 |
11: 19 А.М. | То же, что и 11:19 |
11: 19 PM | то же, что 23:19 |
23: 19-3 23: 19-03: 00 231900-03 |
ISO 8601, то же, что и в 11:19 по восточному стандартному времени. |
23:19 вечера EST | часовой пояс указан как EST, такой же, как 11:19 EST |
Логический тип
Логический тип данных может содержать
- Правда
- Ложь
- нуль
значения.
Вы используете BOOL or логический Ключевое слово для объявления столбца с логическим типом данных.
Когда вы вставляете значения в логический столбец, Postgre преобразует значения типа
- Да
- y
- 1
- t
- правда
в 1.
Хотя такие ценности, как
- Нет
- N
- 0
- F
- Ложь
конвертируются в 0
При выборе данных значения снова преобразуются обратно в «да», «истина», «y» и т. д.
Геометрические типы данных
Геометрические типы данных представляют собой двумерные пространственные объекты. Они помогают выполнять такие операции, как вращение, масштабирование, перевод и т. д.
ФИО | Размер хранилища | Представление | Описание |
---|---|---|---|
Точка | 16 байт | Точка на плоскости | (Х, у) |
линия | 32 байт | Бесконечная линия | ((xl.yl ).(x2.y2)) |
Лсег | 32 байт | Конечный отрезок | ((xl.yl ).(x2.y2)) |
Box | 32 байт | прямоугольный Box | ((xl.yl ).(x2.y2)) |
Тропа | 16n + 16n байт | Закрыть и открыть путь | ((xl.yl),…) |
Polygon | 40 + 16n байт | Polygon | [(xl.yl)….] |
Circle | 24 байт | Circle | <(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 использует 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.
ФИО | Описание |
---|---|
Любые | Функция принимает все типы входных данных. |
Массив | Функция принимает любой тип данных массива. |
Любой элемент | Функция принимает любой тип данных. |
Любое перечисление | Функция принимает любой тип данных перечисления. |
Без массива | Функция принимает любой тип данных, не являющийся массивом. |
Cстрока | Функция принимает или возвращает строку C с нулевым завершением. |
внутренний | Внутренняя функция принимает или возвращает внутренний тип данных сервера. |
Language_handler | Объявлено, что он возвращает обработчик языка. |
Запись | Найдите функцию, которая возвращает неопределенный тип строки. |
Вызывать | Функция триггера используется для возврата триггера. |
Важно, чтобы пользователь, использующий эту функцию, был уверен, что функция будет вести себя безопасно, когда псевдотип используется в качестве типа аргумента.
лучшие практики использования типов данных
- Используйте тип данных «текст», если вы не хотите ограничить ввод.
- Никогда не используйте «char».
- Целые числа используют «int». Используйте bigint только тогда, когда у вас действительно большие числа.
- Используйте «числовой» почти всегда
- Используйте плавающее в PostgreSQL если у вас есть источник данных IEEE 754
Итого
- PostgreSQL предлагает пользователям богатый набор собственных типов данных
- PostgreSQL поддерживает символьные типы данных для хранения текстовых значений
- PostgreSQL поддерживает два различных типа чисел: 1. Целые числа, 2. Числа с плавающей запятой.
- Бинарная строка — это последовательность байтов или октетов.
- PostgreSQL имеет тип сетевого адреса, который поможет вам оптимизировать хранение сетевых данных.
- Поиск текста PostgreSQL структуры данных предназначены для поддержки полнотекстового поиска.
- Типы данных даты/времени PSQL позволяют получать информацию о дате и времени в различных форматах.
- Логические типы полей Postgres могут содержать три значения: 1. True 2. False 3. Null
- Геометрическая PostgreSQL типы данных представляют двумерные пространственные объекты
- Перечислимые типы данных в PostgreSQL полезен для представления редко меняющейся информации, такой как код страны или идентификатор филиала.
- Универсально уникальные идентификаторы (UUID) — это 128-битная величина, генерируемая алгоритмом.
- PostgreSQL имеет множество записей специального назначения, которые называются псевдотипами.
- Лучше всего использовать тип данных «текст», если вы не хотите ограничить ввод.