PostgreSQL Типове данни: байт, число, символ, двоичен

PostgreSQL предлага богат набор от собствени типове данни за потребителите. Потребителите могат да добавят нови типове с помощта на командата CREATE TYPE. Освен това прави заявките по-прости и по-четими.

Типове данни в PostgreSQL

PostgreSQL поддържа следните типове данни:

  • Типове текст
  • Числови типове
  • Дати и времена
  • XML
  • JSON
  • Булева
  • Bits
  • Двоични данни
  • мрежа
  • Масивите
  • Създайте своя тип данни
  • Булева
  • временен
  • UUID
  • Array
  • JSON
  • Специални типове данни за съхраняване на мрежов адрес и геометрични данни.

Да учим PostgreSQL типове данни в детайли

Символни типове данни

PostgreSQL поддържа символни типове данни за съхраняване на текстови стойности. PostgreSQL изгражда символни типове данни от същите вътрешни структури. PostgreSQL предлага три символни типа данни: CHAR(n), VARCHAR(n) и TEXT.

Име Descriptйон
varchar(n) Позволява ви да декларирате променлива дължина с ограничение
знак (n) С фиксирана дължина, празно подплатено
Текст Използвайте този тип данни, за да декларирате променлива с неограничена дължина

Числови типове данни

PostgreSQL поддържа два различни типа числа:

  • Числа
  • Числа с плаваща запетая
Име Размер на магазина Обхват
smallint 2 байта 32768 + 32767
цяло число 4 байта 2147483648 + 2147483647
bigint 8 байта -9223372036854775808 към 9223372036854775807
десетичен променлив Ако сте го декларирали като десетичен тип данни варира от 131072 цифри преди десетичната запетая до 16383 цифри след десетичната запетая
цифров променлив Ако го декларирате като число, можете да включите число до 131072 цифри преди десетичната запетая до 16383 цифри след десетичната запетая
реален 4 байта 6 десетични цифри с точност
удвои 8 байта 15 десетични цифри с точност

Двоични типове данни

Двоичният низ е поредица от октети или байтове. Двоичните типове данни на Postgres се разделят по два начина.

  • Двоичните низове позволяват съхраняване на коефициенти с нулева стойност
  • Непечатаеми октети

Символните низове не позволяват нулеви октети и също така забранява всякакви други октетни стойности и последователности, които са невалидни според правилата за кодиране на набора от знаци на базата данни.

Име Размер на съхранение Descriptйон
Байт 1 до 4 байта плюс размера на двоичния низ Двоичен низ с променлива дължина

Тип мрежов адрес

Много приложения съхраняват мрежова информация като IP адреси на потребители или сензори. PostgreSQL има три естествени типа, които ви помагат да оптимизирате мрежовите данни.

Име Размер Descriptйон
сайдер 7 или 19 байта IPV4 и IPv6 мрежи
Inet 7 или 19 байта IPV4 и IPV5 хост и мрежи
macadr 6 байта MAC адреси

Използването на типове мрежови адреси има следните предимства

  1. Спестяване на място за съхранение
  2. Проверка на входни грешки
  3. Функции като търсене на данни по подмрежа

Тип търсене на текст

PostgreSQL предоставя два типа данни, които са проектирани да поддържат пълнотекстово търсене. Пълнотекстовото търсене е търсене в колекция от документи на естествен език, за да търсите тези, които най-добре отговарят на заявка.

  • Tsvector търсене на текст PostgreSQL типовете променливи представляват документ във форма, оптимизирана за търсене на текст
  • Текстовото търсене на тип заявка съхранява ключовите думи, които трябва да бъдат търсени

Типове данни за дата/час

PostgreSQL timestamp предлага микросекунда точност вместо секунда точност. Освен това имате възможност да съхранявате с часова зона или без. PostgreSQL ще преобразува клеймо с часова зона в UTC при въвеждане и ще го съхрани.

Въвеждането на дата и час се приема в различни формати, включително традиционен Postgres, ISO 8601. SQL-съвместим и др.

PostgreSQL поддържа поръчка за ден / месец / година. Поддържаните формати са DMY, MDY, YMD

Времеви типове данни

Име Размер Обхват Резолюция
Времево клеймо без часова зона 8 байта 4713 г. пр. н. е. до 294276 XNUMX г. сл. н. е 1 микросекунда/14 цифри
Времево клеймо с часова зона 8 байта 4713 г. пр. н. е. до 294276 XNUMX г. сл. н. е 1 микросекунда/14 цифри
дата 4 байта 4713 г. пр. н. е. до 294276 XNUMX г. сл. н. е Един ден
Време без часова зона 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 цифри

Примери

Вход Descriptйон
2025-09-07 ISO 8601, 7 септември с произволен стил на дата (препоръчителен формат)
Септември 7, 2025 7 септември с всеки стил на дата
9/7/2025 7 септември с MDY, 9 юли с DMY
9/7/25 7 септември 2025 г. с MDY
2025-Sep-7 7 септември с всеки стил на дата
7 септември-2018 7 септември с всеки стил на дата
7-Sep-25 7 септември 2025 г. с YMD
20250907 ISO 8601,7 септември 20225 във всеки режим
2025.250 година и ден от годината, в този случай 7 септември 2025 г
J25250 Юлианска среща

Час/ Време с въвеждане на часова зона

Вход Descriptйон
11:19:38.507
11:19:38
11:19
111938
ISO 8601
11: 19 AM Същото като 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 булева ключова дума за деклариране на колона с булев тип данни.

Когато вмъквате стойности в булева колона, Postgre преобразува стойности като

  • Да
  • y
  • 1
  • t
  • вярно

до 1 г.

Докато ценности като

  • Не
  • N
  • 0
  • F
  • Фалшив

се преобразуват в 0

Докато избирате данни, стойностите отново се преобразуват обратно в да, вярно, у и т.н.

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

Геометричните типове данни представляват двумерни пространствени обекти. Те помагат при извършването на операции като ротации, мащабиране, превод и т.н.

Име Размер на съхранението Представителство Descriptйон
Точка 16 байта Точка на равнина (x,y)
Линия 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 — Помага ви да покажете клеймо за време без часова зона
  • странно — Позволява ви да показвате клеймо за време с часова зона
  • период от време — Период от дата

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

Име Descriptйон
който и да е Функцията приема всички типове входни данни.
Масив Функцията приема всеки тип масив от данни.
Всеки елемент Функцията приема всеки тип данни.
Всяко изброяване Функцията приема всеки тип данни enum.
Nonarray Функцията приема всеки тип данни без масив.
Cstring Функцията приема или връща C низ, завършващ с нула.
вътрешен Вътрешна функция приема или връща вътрешен тип данни на сървъра.
Езиков_обработчик Декларира се да връща езиков манипулатор.
Рекорд Намерете функция, която връща неопределен тип ред.
Тригер За връщане на тригер се използва тригерна функция.

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

Най-добри практики при използване на типове данни

  • Използвайте тип данни „текст“, освен ако не искате да ограничите въвеждането
  • Никога не използвайте „char“.
  • Целите числа използват "int." Използвайте bigint само когато имате наистина големи числа
  • Използвайте „числово“ почти винаги
  • Използвайте float in PostgreSQL ако имате източник на данни IEEE 754

Oбобщение

  • PostgreSQL предлага богат набор от собствени типове данни за потребителите
  • PostgreSQL поддържа символни типове данни за съхраняване на текстови стойности
  • PostgreSQL поддържа два различни типа числа: 1. Цели числа, 2. Числа с плаваща запетая
  • Двоичният низ е поредица от байтове или октети
  • PostgreSQL има тип мрежов адрес, за да ви помогне да оптимизирате съхранението на мрежови данни
  • Търсене на текст PostgreSQL структурите от данни са проектирани да поддържат пълнотекстово търсене
  • Дата/час PSQL типовете данни позволяват информация за дата и час в различни формати
  • Булевите типове полета на Postgres могат да съдържат три стойности 1. True 2. False 3. Null
  • геометричен PostgreSQL типовете данни представляват двумерни пространствени обекти
  • Изброени типове данни в PostgreSQL е полезно за представяне на рядко променяща се информация като код на държава или идентификатор на клон
  • Universally Unique Identifies (UUID) е 128-битова величина, която се генерира от алгоритъм
  • PostgreSQL има много записи със специално предназначение, които се наричат ​​псевдотипове
  • Най-добрата практика е да използвате тип данни „текст“, освен ако не искате да ограничите въвеждането

Обобщете тази публикация с: