Поиск…


Вступление

PostgreSQL имеет богатый набор собственных типов данных, доступных пользователям. Пользователи могут добавлять новые типы в PostgreSQL с помощью команды CREATE TYPE.

https://www.postgresql.org/docs/9.6/static/datatype.html

Числовые типы

название Размер хранилища Описание Спектр
smallint 2 байта малое целое число -32768 - +32767
integer 4 байта ypical выбор для целого -2147483648 - +2147483647
bigint 8 байт целочисленный целочисленный -9223372036854775808 - +9223372036854775807
decimal переменная заданная пользователем точность, точная до 131072 цифр до десятичной точки; до 16383 цифр после десятичной точки
numeric переменная заданная пользователем точность, точная до 131072 цифр до десятичной точки; до 16383 цифр после десятичной точки
real 4 байта переменная точность, неточная 6 десятичных цифр
double precision 8 байт переменная точность, неточная 15 десятичных цифр
smallserial 2 байта небольшое автоинкрементное целое число 1 до 32767
serial 4 байта автоинкрементное целое число 1 до 2147483647
bigserial 8 байт большое число автоинкрементных чисел 1 до 9223372036854775807
int4range Диапазон целых чисел
int8range Диапазон bigint
numrange Диапазон числовых

Типы даты и времени

название Размер хранилища Описание Низкая стоимость Высокое значение разрешение
timestamp (без часового пояса) 8 байт и дата и время (без часового пояса) 4713 г. до н. 294276 н.э. 1 микросекунда / 14 цифр
timestamp (с часовым поясом) 8 байт дата и время, с часовым поясом 4713 г. до н. 294276 н.э. 1 микросекунда / 14 цифр
date 4 байта дата (нет времени суток) 4713 г. до н. 5874897 гг. Н.э. 1 день
time (без часового пояса) 8 байт время суток (нет даты) 00:00:00 24:00:00 1 микросекунда / 14 цифр
time (с часовым поясом) 12 байт время суток, с часовым поясом 00: 00: 00 + 1459 24: 00: 00-1459 1 микросекунда / 14 цифр
interval 16 байт интервал времени -178000000 лет 178000000 лет 1 микросекунда / 14 цифр
tsrange диапазон временной метки без часового пояса
tstzrange диапазон временной метки с часовым поясом
daterange диапазон дат

Геометрические типы

название Размер хранилища Описание Представление
point 16 байт Точка на плоскости (Х, у)
line 32 байт Бесконечная линия {A, B, C},
lseg 32 байт Конечный сегмент ((X1, y1), (х2, у2))
box 32 байт Прямоугольная коробка ((X1, y1), (х2, у2))
path 16 + 16n байт Закрытый путь (аналогично полигону) ((X1, y1), ...)
path 16 + 16n байт Открытый путь [(X1, y1), ...]
polygon 40 + 16n байт Многоугольник (аналогично замкнутому пути) ((X1, y1), ...)
circle 24 байта Круг <(x, y), r> (центральная точка и радиус)

Типы сетевых адресов

название Размер хранилища Описание
cidr 7 или 19 байт Сети IPv4 и IPv6
inet 7 или 19 байт Хосты и сети IPv4 и IPv6
macaddr 6 байт MAC-адреса

Типы символов

название Описание
character varying(n) , varchar(n) переменная длина с ограничением
character(n) , char(n) фиксированная длина, пустая прокладка
text переменная неограниченная длина

Массивы

В PostgreSQL вы можете создавать массивы любого встроенного, определенного пользователем или перечисляемого типа. По умолчанию для массива нет ограничений, но вы можете указать его.

Объявление массива

SELECT integer[];
SELECT integer[3];
SELECT integer[][];
SELECT integer[3][3];
SELECT integer ARRAY;
SELECT integer ARRAY[3];

Создание массива

SELECT '{0,1,2}';
SELECT '{{0,1},{1,2}}';
SELECT ARRAY[0,1,2];
SELECT ARRAY[ARRAY[0,1],ARRAY[1,2]];

Доступ к массиву

По умолчанию PostgreSQL использует одноуровневое соглашение о нумерации для массивов, то есть массив из n элементов начинается с array[1] и заканчивается array[n] .

--accesing a spefific element
WITH arr AS (SELECT ARRAY[0,1,2] int_arr) SELECT int_arr[1] FROM arr;

int_arr
---------
        0
(1 row)

--sclicing an array
WITH arr AS (SELECT ARRAY[0,1,2] int_arr) SELECT int_arr[1:2] FROM arr;

int_arr
---------
    {0,1}
(1 row)

Получение информации о массиве

--array dimensions (as text)
with arr as (select ARRAY[0,1,2] int_arr) select array_dims(int_arr) from arr;

array_dims
------------
       [1:3]
(1 row)

--length of an array dimension
 WITH arr AS (SELECT ARRAY[0,1,2] int_arr) SELECT array_length(int_arr,1) FROM arr;

 array_length
 --------------
              3
 (1 row)

--total number of elements across all dimensions
 WITH arr AS (SELECT ARRAY[0,1,2] int_arr) SELECT cardinality(int_arr) FROM arr;
 
 cardinality
 -------------
             3
 (1 row)

Функции массива

будет добавлено



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow