PostgreSQL пропонує багатий набір власних типів даних для користувачів. Користувачі можуть додавати нові типи за допомогою команди CREATE TYPE. Це також робить запити простішими та читабельнішими.
Типи даних у PostgreSQL
PostgreSQL підтримує такі типи даних:
- Типи тексту
- Числові типи
- Дати та час
- XML
- JSON
- Логічна
- Біти
- Двійкові дані
- Мережа
- Масиви
- Створіть свій тип даних
- Логічна
- Часова
- UUID
- Масив
- JSON
- Спеціальні типи даних для зберігання мережевої адреси та геометричних даних.
Давайте детально вивчимо типи даних PostgreSQL
- Типи даних символів
- Числові типи даних
- Типи двійкових даних
- Тип мережевої адреси
- Тип пошуку тексту
- Типи даних дати / часу
- Логічний тип
- Геометричні типи даних
- Перераховані типи
- Тип дальності
- Тип UUID
- Тип XML
- Тип JSON
- Псевдотипи
Типи даних символів
PostgreSQL підтримує типи даних символів для зберігання текстових значень. PostgreSQL створює типи даних символів з тих самих внутрішніх структур. PostgreSQL пропонує три типи символьних даних: CHAR (n), VARCHAR (n) і TEXT.
Ім'я | Опис |
---|---|
varchar (n) | Дозволяє оголосити змінну довжину з обмеженням |
Char (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 |
macaddr | 6 байт | MAC-адреси |
Використання типів мережевих адрес має наступні переваги
- Економія місця для зберігання
- Перевірка вхідних помилок
- Такі функції, як пошук даних за підмережею
Тип пошуку тексту
PostgreSQL надає два типи даних, призначені для підтримки повнотекстового пошуку. Повнотекстовий пошук - це пошук у колекції документів на природній мові для пошуку тих, які найкраще відповідають запиту.
- Текстовий пошук Tsvector Типи змінних 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 вересня з будь-яким стилем побачень |
7.09.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 в будь-якому режимі |
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, такий самий, як 23:19 EST |
Логічний тип
Логічний тип даних може містити
- Правда
- помилковий
- нуль
значення.
Ви використовуєте bool або логічне ключове слово, щоб оголосити стовпець із логічним типом даних.
Коли ви вставляєте значення в логічний стовпець, Postgre перетворює значення типу
- Так
- р
- 1
- т
- правда
в 1.
Тоді як цінності люблять
- Ні
- N
- 0
- F
- помилковий
перетворюються на 0
Під час вибору даних значення знову перетворюються назад у так, істина, у тощо.
Геометричні типи даних
Геометричні типи даних представляють двовимірні просторові об’єкти. Вони допомагають виконувати такі операції, як обертання, масштабування, переклад тощо.
Ім'я | Розмір зберігання | Представництво | Опис |
---|---|---|---|
Точка | 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 корисний для представлення інформації, що рідко змінюється, наприклад, коду країни або ідентифікатора філії. Тип перерахованих даних представлений у таблиці із зовнішніми ключами для забезпечення цілісності даних.
Приклад:
Колір волосся досить статичний у демографічній базі даних
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 '') Data Type …
Тип JSON
Для зберігання даних JSON PostgreSQL пропонує 2 типи даних
- JSON
- JSONB
json | Йсонб |
---|---|
Просте розширення типу текстових даних із валідацією 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.
Ім'я | Опис |
---|---|
Будь-який | Функція приймає всі типи вхідних даних. |
Масив | Функція приймає будь-який тип даних масиву. |
Будь-який елемент | Функція приймає будь-який тип даних. |
Будь-яке перерахування | Функція приймає будь-який тип даних переліку. |
Нонаррей | Функція приймає будь-який тип даних, що не є масивом. |
Cstring | Функція приймає або повертає рядок C із нульовим закінченням. |
Внутрішній | Внутрішня функція приймає або повертає внутрішній тип даних сервера. |
Мова_обробника | Заявлено, що він повертає обробник мови. |
Запис | Знайдіть функцію, яка повертає невизначений тип рядка. |
Тригер | Функція тригера використовується для повернення тригера. |
Важливо, щоб користувач, який використовує цю функцію, повинен переконатися, що функція буде поводитися безпечно, коли псевдо-тип використовується як тип аргументу.
Найкращі практики використання типів даних
- Використовуйте тип даних "text", якщо ви не хочете обмежувати введення
- Ніколи не використовуйте "char".
- Цілі числа використовують "int." Використовуйте bigint лише тоді, коли у вас справді великі цифри
- Використовуйте "числовий" майже завжди
- Використовуйте float у PostgreSQL, якщо у вас джерело даних IEEE 754
Резюме
- PostgreSQL пропонує багатий набір власних типів даних для користувачів
- PostgreSQL підтримує типи даних символів для зберігання текстових значень
- PostgreSQL підтримує два різні типи чисел: 1. Цілі числа, 2. Числа з плаваючою комою
- Двійковий рядок - це послідовність байтів або октетів
- PostgreSQL має тип мережевої адреси, який допоможе оптимізувати зберігання мережевих даних
- Пошук тексту Текстові структури даних PostgreSQL призначені для підтримки повнотекстового пошуку
- Типи даних PSQL дати / часу дозволяють надавати інформацію про дату та час у різних форматах
- Логічні типи полів Postgres можуть містити три значення 1. True 2. False 3. Null
- Геометричні типи даних PostgreSQL представляють двовимірні просторові об'єкти
- Перераховані типи даних у PostgreSQL корисні для представлення інформації, що рідко змінюється, наприклад, коду країни або ідентифікатора філії
- Універсально унікальні ідентифікатори (UUID) - це 128-розрядна величина, яка генерується алгоритмом
- PostgreSQL має багато спеціальних записів, які називаються псевдотипами
- Краще використовувати тип даних "текст", якщо ви не хочете обмежувати введення