Типи даних PostgreSQL: Символ - Числові - Двійкові - Логічна

Зміст:

Anonim

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-адреси

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

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

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

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 типи даних

  1. JSON
  2. 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 має багато спеціальних записів, які називаються псевдотипами
  • Краще використовувати тип даних "текст", якщо ви не хочете обмежувати введення