postgresql
Typy danych
Szukaj…
Wprowadzenie
PostgreSQL ma bogaty zestaw rodzimych typów danych dostępnych dla użytkowników. Użytkownicy mogą dodawać nowe typy do PostgreSQL za pomocą polecenia CREATE TYPE.
Typy numeryczne
Nazwa | Rozmiar przechowywania | Opis | Zasięg |
---|---|---|---|
smallint | 2 bajty | liczba całkowita małego zakresu | Od -32768 do +32767 |
integer | 4 bajty | klasyczny wybór liczby całkowitej | -2147483648 do +2147483647 |
bigint | 8 bajtów | liczba całkowita dużego zakresu | -9223372036854775808 do +9223372036854775807 |
decimal | zmienna | dokładność określona przez użytkownika, dokładna | do 131072 cyfr przed przecinkiem; do 16383 cyfr po przecinku |
numeric | zmienna | dokładność określona przez użytkownika, dokładna | do 131072 cyfr przed przecinkiem; do 16383 cyfr po przecinku |
real | 4 bajty | zmienna precyzja, niedokładna | Dokładność 6 cyfr dziesiętnych |
double precision | 8 bajtów | zmienna precyzja, niedokładna | 15 cyfr po przecinku |
smallserial | 2 bajty | mała liczba całkowita autoinkrementująca | Od 1 do 32767 |
serial | 4 bajty | liczba całkowita autoinkrementująca | 1 do 2147483647 |
bigserial | 8 bajtów | duża liczba całkowita autoinkrementująca | 1 do 9223372036854775807 |
int4range | Zakres liczb całkowitych | ||
int8range | Zakres biginta | ||
numrange | Zakres liczbowy |
Typy daty / godziny
Nazwa | Rozmiar przechowywania | Opis | Niska wartość | Wysoka wartość | Rozkład |
---|---|---|---|---|---|
timestamp (bez strefy czasowej) | 8 bajtów | zarówno data, jak i godzina (bez strefy czasowej) | 4713 pne | 294276 ne | 1 mikrosekunda / 14 cyfr |
timestamp (ze strefą czasową) | 8 bajtów | data i godzina, wraz ze strefą czasową | 4713 pne | 294276 ne | 1 mikrosekunda / 14 cyfr |
date | 4 bajty | data (bez pory dnia) | 4713 pne | 5874897 AD | 1 dzień |
time (bez strefy czasowej) | 8 bajtów | pora dnia (bez daty) | 00:00:00 | 24:00:00 | 1 mikrosekunda / 14 cyfr |
time (ze strefą czasową) | 12 bajtów | tylko pory dnia, ze strefą czasową | 00: 00: 00 + 1459 | 24: 00: 00-1459 | 1 mikrosekunda / 14 cyfr |
interval | 16 bajtów | Przedział czasowy | -178000000 lat | 178000000 lat | 1 mikrosekunda / 14 cyfr |
tsrange | zakres znacznika czasu bez strefy czasowej | ||||
tstzrange | zakres datownika ze strefą czasową | ||||
daterange | zakres dat |
Typy geometryczne
Nazwa | Rozmiar przechowywania | Opis | Reprezentacja |
---|---|---|---|
point | 16 bajtów | Wskaż na samolot | (x, y) |
line | 32 bajty | Linia nieskończona | {ABC} |
lseg | 32 bajty | Segment linii skończonej | ((x1, y1), (x2, y2)) |
box | 32 bajty | Prostokątne pudełko | ((x1, y1), (x2, y2)) |
path | 16 + 16n bajtów | Zamknięta ścieżka (podobna do wielokąta) | ((x1, y1), ...) |
path | 16 + 16n bajtów | Otwarta ścieżka | [(x1, y1), ...] |
polygon | 40 + 16n bajtów | Wielokąt (podobny do zamkniętej ścieżki) | ((x1, y1), ...) |
circle | 24 bajty | okrąg | <(x, y), r> (punkt środkowy i promień) |
Typy adresów sieciowych
Nazwa | Rozmiar przechowywania | Opis |
---|---|---|
cidr | 7 lub 19 bajtów | Sieci IPv4 i IPv6 |
inet | 7 lub 19 bajtów | Hosty i sieci IPv4 i IPv6 |
macaddr | 6 bajtów | Adresy MAC |
Rodzaje postaci
Nazwa | Opis |
---|---|
character varying(n) , varchar(n) | zmienna długość z ograniczeniem |
character(n) , char(n) | wyściełane na blank o stałej długości |
text | zmienna nieograniczona długość |
Tablice
W PostgreSQL możesz tworzyć tablice dowolnego typu wbudowanego, zdefiniowanego przez użytkownika lub wyliczeniowego. Domyślnie tablica nie ma ograniczenia, ale można ją określić.
Deklarowanie tablicy
SELECT integer[];
SELECT integer[3];
SELECT integer[][];
SELECT integer[3][3];
SELECT integer ARRAY;
SELECT integer ARRAY[3];
Tworzenie tablicy
SELECT '{0,1,2}';
SELECT '{{0,1},{1,2}}';
SELECT ARRAY[0,1,2];
SELECT ARRAY[ARRAY[0,1],ARRAY[1,2]];
Dostęp do tablicy
Domyślnie PostgreSQL stosuje jedną tablicę numeracji dla tablic, to znaczy tablica n elementów zaczyna się od array[1]
i kończy na 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)
Uzyskiwanie informacji o tablicy
--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)
Funkcje tablicowe
zostanie dodane
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow