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.

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

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