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