postgresql
Типы данных
Поиск…
Вступление
PostgreSQL имеет богатый набор собственных типов данных, доступных пользователям. Пользователи могут добавлять новые типы в PostgreSQL с помощью команды CREATE TYPE.
Числовые типы
название | Размер хранилища | Описание | Спектр |
---|---|---|---|
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