PostgreSQL Типи даних: байт, числові, символьні, двійкові

PostgreSQL пропонує багатий набір власних типів даних для користувачів. Користувачі можуть додавати нові типи за допомогою команди CREATE TYPE. Це також робить запити простішими та зрозумілішими.

Типи даних в PostgreSQL

PostgreSQL підтримує такі типи даних:

  • Типи тексту
  • Числові типи
  • Дати і часи
  • XML
  • JSON
  • Boolean
  • біти
  • Двійкові дані
  • мережу
  • Масиви
  • Створіть тип даних
  • Boolean
  • Гроза
  • UUID
  • масив
  • JSON
  • Спеціальні типи даних для зберігання мережевої адреси та геометричних даних.

Давайте вивчати PostgreSQL типи даних детально

Символьні типи даних

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

ІМ'Я Опис
varchar(n) Дозволяє оголошувати змінну довжину з обмеженням
Символ (n) Фіксованої довжини, пуста м'яка
текст Use може використовувати цей тип даних для оголошення змінної з необмеженою довжиною

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

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
macadr 6 байт MAC адреси

Використання типів мережевих адрес має такі переваги

  1. Економія місця для зберігання
  2. Перевірка помилок введення
  3. Такі функції, як пошук даних за підмережею

Тип текстового пошуку

PostgreSQL надає два типи даних, які призначені для підтримки повнотекстового пошуку. Повнотекстовий пошук — це пошук у колекції документів природною мовою для пошуку тих, які найкраще відповідають запиту.

  • Tvector текстовий пошук 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 EST
23: 19 EST часовий пояс, указаний як EST, такий же, як 11:19 EST

Логічний тип

Логічний тип даних може містити

  • Правда
  • Помилковий
  • нулю

значень.

Ви використовуєте a бул or boolean ключове слово для оголошення стовпця з типом даних Boolean.

Коли ви вставляєте значення в логічний стовпець, Postgre перетворює такі значення, як

  • Так
  • y
  • 1
  • t
  • правда

в 1 році.

Поки цінності подобаються

  • Немає
  • N
  • 0
  • F
  • Помилковий

перетворюються на 0

Під час вибору даних значення знову перетворюються на так, істина, у тощо.

Геометричні типи даних

Геометричні типи даних представляють двовимірні просторові об'єкти. Вони допомагають виконувати такі операції, як обертання, масштабування, переклад тощо.

ІМ'Я Розмір зберігання Подання Опис
точка 16 байт Точка на площині (х, у)
Лінія 32 байт Нескінченна лінія ((xl.yl ).(x2.y2))
Lseg 32 байт Кінцевий відрізок ((xl.yl ).(x2.y2))
Box 32 байт Прямокутний Box ((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 — Допомагає відображати позначку часу без часового поясу
  • strange — дозволяє відображати позначку часу з часовим поясом
  • діапазон дат — діапазон дат

Тип 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 використовує 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 Функція приймає будь-який тип даних, що не є масивом.
Cрядок Функція приймає або повертає рядок C із закінченням нулем.
Внутрішній Внутрішня функція приймає або повертає внутрішній тип даних сервера.
Обробник мови Оголошено, що він повертає обробник мови.
Запис Знайдіть функцію, яка повертає невизначений тип рядка.
Тригер Функція тригера використовується для повернення тригера.

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

Найкращі практики використання типів даних

  • Використовуйте тип даних «текст», якщо не хочете обмежити введення
  • Ніколи не використовуйте «char».
  • Цілі числа використовують «int». Використовуйте bigint лише тоді, коли у вас дійсно великі числа
  • Використовуйте «цифровий» майже завжди
  • Використовуйте float in PostgreSQL якщо у вас є джерело даних IEEE 754

Підсумки

  • PostgreSQL пропонує багатий набір власних типів даних для користувачів
  • PostgreSQL підтримує символьні типи даних для зберігання текстових значень
  • PostgreSQL підтримує два різних типи чисел: 1. цілі числа, 2. числа з плаваючою комою
  • Двійковий рядок — це послідовність байтів або октетів
  • PostgreSQL має тип мережевої адреси, щоб допомогти вам оптимізувати зберігання мережевих даних
  • Пошук тексту PostgreSQL структури даних призначені для підтримки повнотекстового пошуку
  • Дата/час Типи даних PSQL дозволяють надавати інформацію про дату й час у різних форматах
  • Логічні типи полів Postgres можуть містити три значення: 1. True 2. False 3. Null
  • геометричний PostgreSQL типи даних представляють двовимірні просторові об'єкти
  • Перераховані типи даних в PostgreSQL корисний для представлення інформації, яка рідко змінюється, наприклад коду країни або ідентифікатора філії
  • Універсально унікальний ідентифікатор (UUID) — це 128-бітна величина, яка генерується алгоритмом
  • PostgreSQL має багато записів спеціального призначення, які називаються псевдотипами
  • Найкраще використовувати тип даних «текст», якщо ви не хочете обмежити введення