postgresql
Datatyper
Sök…
Introduktion
PostgreSQL har en rik uppsättning infödda datatyper tillgängliga för användare. Användare kan lägga till nya typer i PostgreSQL med kommandot CREATE TYPE.
Numeriska typer
namn | Lagringsstorlek | Beskrivning | Räckvidd |
---|---|---|---|
smallint | 2 byte | småskaligt heltal | -32768 till +32767 |
integer | 4 bytes | ypical val för heltal | -2147483648 till +2147483647 |
bigint | 8 byte | stort antal heltal | -9223372036854775808 till +9223372036854775807 |
decimal | variabel | användarspecificerad precision, exakt | upp till 131072 siffror före decimalpunkten; upp till 16383 siffror efter decimalpunkten |
numeric | variabel | användarspecificerad precision, exakt | upp till 131072 siffror före decimalpunkten; upp till 16383 siffror efter decimalpunkten |
real | 4 bytes | variabel precision, inexakt | 6 decimalers precision |
double precision | 8 byte | variabel precision, inexakt | 15 decimalers precision |
smallserial | 2 byte | litet autoinkrementering heltal | 1 till 32767 |
serial | 4 bytes | autoinkrementering heltal | 1 till 2147483647 |
bigserial | 8 byte | stort autoinkrement heltal | 1 till 9223372036854775807 |
int4range | Område för heltal | ||
int8range | Utbud av bigint | ||
numrange | Numerisk räckvidd |
Datum / tidstyper
namn | Lagringsstorlek | Beskrivning | Lågt värde | Högt värde | Upplösning |
---|---|---|---|---|---|
timestamp (utan tidszon) | 8 byte | både datum och tid (ingen tidszon) | 4713 f.Kr. | 294276 e.Kr. | 1 mikrosekund / 14 siffror |
timestamp (med tidszon) | 8 byte | både datum och tid, med tidszon | 4713 f.Kr. | 294276 e.Kr. | 1 mikrosekund / 14 siffror |
date | 4 bytes | datum (ingen tid på dagen) | 4713 f.Kr. | 5874897 AD | 1 dag |
time (utan tidszon) | 8 byte | tid på dagen (inget datum) | 00:00:00 | 24:00:00 | 1 mikrosekund / 14 siffror |
time (med tidszon) | 12 byte | bara dagar på dagen, med tidszon | 00: 00: 00 + 1459 | 24: 00: 00-1459 | 1 mikrosekund / 14 siffror |
interval | 16 byte | tidsintervall | -178000000 år | 178000000 år | 1 mikrosekund / 14 siffror |
tsrange | intervall av tidsstämpel utan tidszon | ||||
tstzrange | tidsstämpel med tidszon | ||||
daterange | datumintervall |
Geometriska typer
namn | Lagringsstorlek | Beskrivning | Representation |
---|---|---|---|
point | 16 byte | Peka på ett plan | (X, y) |
line | 32 byte | Oändlig linje | {A, B, C} |
lseg | 32 byte | Finite linjesegment | ((X1, y1), (x2, y2)) |
box | 32 byte | Rektangulär låda | ((X1, y1), (x2, y2)) |
path | 16 + 16n byte | Stängd väg (liknande polygon) | ((X1, y1), ...) |
path | 16 + 16n byte | Öppen väg | [(X1, y1), ...] |
polygon | 40 + 16n byte | Polygon (liknande stängd väg) | ((X1, y1), ...) |
circle | 24 byte | Cirkel | <(x, y), r> (mittpunkt och radie) |
Nätverksadresstyper
namn | Lagringsstorlek | Beskrivning |
---|---|---|
cidr | 7 eller 19 byte | IPv4- och IPv6-nätverk |
inet | 7 eller 19 byte | IPv4- och IPv6-värdar och nätverk |
macaddr | 6 byte | MAC-adresser |
Karaktärstyper
namn | Beskrivning |
---|---|
character varying(n) , varchar(n) | variabel längd med gräns |
character(n) , char(n) | fast längd, tom vadderad |
text | variabel obegränsad längd |
arrayer
I PostgreSQL kan du skapa matriser av alla inbyggda, användardefinierade eller enum-typer. Som standard finns det ingen gräns för en matris, men du kan ange den.
Förklara en array
SELECT integer[];
SELECT integer[3];
SELECT integer[][];
SELECT integer[3][3];
SELECT integer ARRAY;
SELECT integer ARRAY[3];
Skapa en matris
SELECT '{0,1,2}';
SELECT '{{0,1},{1,2}}';
SELECT ARRAY[0,1,2];
SELECT ARRAY[ARRAY[0,1],ARRAY[1,2]];
Åtkomst till en matris
Som standard använder PostgreSQL en en-baserad numreringskonvention för matriser, det vill säga en matris med n-element börjar med array[1]
och slutar med 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)
Få information om en matris
--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)
Array-funktioner
kommer läggas till
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow