PostgreSQL是一種功能強(qiáng)大的開(kāi)源關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),具有廣泛的數(shù)據(jù)類型支持。在本教程中,我們將介紹PostgreSQL中可用的各種數(shù)據(jù)類型,包括數(shù)值、字符串、幾何、時(shí)間、日期、布爾、貨幣和json類型。
數(shù)值類型
PostgreSQL支持各種數(shù)值類型,包括整數(shù)、小數(shù)和浮點(diǎn)數(shù)。下面是一些常見(jiàn)的數(shù)值類型及其有效值范圍。
整數(shù)類型
PostgreSQL支持以下整數(shù)類型:
- ?
smallint
:2字節(jié),范圍為-32768到+32767 - ?
integer
:4字節(jié),范圍為-2147483648到+2147483647 - ?
bigint
:8字節(jié),范圍為-9223372036854775808到+9223372036854775807
這些類型可以存儲(chǔ)整數(shù)值,例如:
CREATE TABLE example (
id serial PRIMARY KEY,
small smallint,
int integer,
big bigint
);
INSERT INTO example (small, int, big) VALUES (-32768, 2147483647, 9223372036854775807);
小數(shù)類型
PostgreSQL支持以下小數(shù)類型:
- ?
decimal
:用戶指定的精度和標(biāo)度,最大精度為131072位,最大標(biāo)度為16383 - ?
numeric
:用戶指定的精度和標(biāo)度,最大精度為131072位,最大標(biāo)度為16383 - ?
real
:4字節(jié),單精度浮點(diǎn)數(shù) - ?
double precision
:8字節(jié),雙精度浮點(diǎn)數(shù)
這些類型可以存儲(chǔ)小數(shù)值,例如:
CREATE TABLE example (
id serial PRIMARY KEY,
dec decimal(10,2),
num numeric(10,2),
r real,
d double precision
);
INSERT INTO example (dec, num, r, d) VALUES (1234.56, 1234.56, 1234.56, 1234.56);
字符串類型
PostgreSQL支持各種字符串類型,包括固定長(zhǎng)度和可變長(zhǎng)度字符串。下面是一些常見(jiàn)的字符串類型及其有效值范圍。
固定長(zhǎng)度字符串類型
PostgreSQL支持以下固定長(zhǎng)度字符串類型:
- ?
char(n)
:長(zhǎng)度為n的固定長(zhǎng)度字符串,n的范圍是1到10485760 - ?
character(n)
:長(zhǎng)度為n的固定長(zhǎng)度字符串,n的范圍是1到10485760
這些類型可以存儲(chǔ)固定長(zhǎng)度的字符串,例如:
CREATE TABLE example (
id serial PRIMARY KEY,
c char(10),
ch character(10)
);
INSERT INTO example (c, ch) VALUES ('hello', 'world');
可變長(zhǎng)度字符串類型
PostgreSQL支持以下可變長(zhǎng)度字符串類型:
- ?
varchar(n)
:長(zhǎng)度為n的可變長(zhǎng)度字符串,n的范圍是1到10485760 - ?
character varying(n)
:長(zhǎng)度為n的可變長(zhǎng)度字符串,n的范圍是1到10485760 - ?
text
:可變長(zhǎng)度字符串,最大長(zhǎng)度為10485760
這些類型可以存儲(chǔ)可變長(zhǎng)度的字符串,例如:
CREATE TABLE example (
id serial PRIMARY KEY,
v varchar(10),
cv character varying(10),
t text
);
INSERT INTO example (v, cv, t) VALUES ('hello', 'world', 'hello world');
幾何類型
PostgreSQL支持各種幾何類型,包括點(diǎn)、線、多邊形和圓。下面是一些常見(jiàn)的幾何類型及其有效值范圍。
點(diǎn)類型
點(diǎn)類型表示二維平面中的一個(gè)點(diǎn),由x和y坐標(biāo)組成。PostgreSQL支持以下點(diǎn)類型:
- ?
point
:由x和y坐標(biāo)組成的點(diǎn)
這些類型可以存儲(chǔ)點(diǎn)坐標(biāo),例如:
CREATE TABLE example (
id serial PRIMARY KEY,
p point
);
INSERT INTO example (p) VALUES ('(1,2)');
線類型
線類型表示二維平面中的一條線,由起點(diǎn)和終點(diǎn)坐標(biāo)組成。PostgreSQL支持以下線類型:
- ?
line
:由起點(diǎn)和終點(diǎn)坐標(biāo)組成的線 - ?
lseg
:由起點(diǎn)和終點(diǎn)坐標(biāo)組成的線段 - ?
box
:由左下和右上角坐標(biāo)組成的矩形框
這些類型可以存儲(chǔ)線段和矩形框,例如:
CREATE TABLE example (
id serial PRIMARY KEY,
l line,
ls lseg,
b box
);
INSERT INTO example (l, ls, b) VALUES ('[(1,2),(3,4)]', '[(1,2),(3,4)]', '((1,2),(3,4))');
多邊形類型
多邊形類型表示二維平面中的一個(gè)多邊形,由一組點(diǎn)坐標(biāo)組成。PostgreSQL支持以下多邊形類型:
- ?
path
:由一組點(diǎn)坐標(biāo)組成的多邊形 - ?
polygon
:由一組點(diǎn)坐標(biāo)組成的封閉多邊形
這些類型可以存儲(chǔ)多邊形,例如:
CREATE TABLE example (
id serial PRIMARY KEY,
pa path,
po polygon
);
INSERT INTO example (pa, po) VALUES ('((1,2),(3,4),(5,6))', '((1,2),(3,4),(5,6))');
圓類型
圓類型表示二維平面中的一個(gè)圓,由圓心坐標(biāo)和半徑組成。PostgreSQL支持以下圓類型:
- ?
circle
:由圓心坐標(biāo)和半徑組成的圓
這些類型可以存儲(chǔ)圓,例如:
CREATE TABLE example (
id serial PRIMARY KEY,
c circle
);
INSERT INTO example (c) VALUES ('< (1,2),3 >');
時(shí)間類型
PostgreSQL支持各種時(shí)間類型,包括日期、時(shí)間和時(shí)間戳。下面是一些常見(jiàn)的時(shí)間類型及其有效值范圍。
日期類型
日期類型表示一個(gè)日期,由年、月和日組成。PostgreSQL支持以下日期類型:
- ?
date
:日期類型,范圍為0001-01-01到5874897-12-31
這些類型可以存儲(chǔ)日期,例如:
CREATE TABLE example (
id serial PRIMARY KEY,
d date
);
INSERT INTO example (d) VALUES ('2022-01-01');
時(shí)間類型
時(shí)間類型表示一天中的時(shí)間,由小時(shí)、分鐘和秒組成。PostgreSQL支持以下時(shí)間類型:
- ?
time
:時(shí)間類型,范圍為00:00:00到24:00:00 - ?
time with time zone
:帶時(shí)區(qū)的時(shí)間類型,范圍為00:00:00到24:00:00
這些類型可以存儲(chǔ)時(shí)間,例如:
CREATE TABLE example (
id serial PRIMARY KEY,
t time,
tz time with time zone
);
INSERT INTO example (t, tz) VALUES ('12:34:56', '12:34:56+08');
時(shí)間戳類型
時(shí)間戳類型表示日期和時(shí)間的組合,由年、月、日、小時(shí)、分鐘和秒組成。PostgreSQL支持以下時(shí)間戳類型:
- ?
timestamp
:時(shí)間戳類型,范圍為0001-01-01 00:00:00到294276-12-31 23:59:59 - ?
timestamp with time zone
:帶時(shí)區(qū)的時(shí)間戳類型,范圍為0001-01-01 00:00:00到294276-12-31 23:59:59
這些類型可以存儲(chǔ)日期和時(shí)間,例如:
CREATE TABLE example (
id serial PRIMARY KEY,
ts timestamp,
tsz timestamp with time zone
);
INSERT INTO example (ts, tsz) VALUES ('2022-01-01 12:34:56', '2022-01-01 12:34:56+08');
日期類型
PostgreSQL支持各種日期類型,包括日期、時(shí)間和時(shí)間戳。下面是一些常見(jiàn)的日期類型及其有效值范圍。
日期類型
日期類型表示一個(gè)日期,由年、月和日組成。PostgreSQL支持以下日期類型:
- ?
date
:日期類型,范圍為0001-01-01到5874897-12-31
這些類型可以存儲(chǔ)日期,例如:
CREATE TABLE example (
id serial PRIMARY KEY,
d date
);
INSERT INTO example (d) VALUES ('2022-01-01');
時(shí)間類型
時(shí)間類型表示一天中的時(shí)間,由小時(shí)、分鐘和秒組成。PostgreSQL支持以下時(shí)間類型:
- ?
time
:時(shí)間類型,范圍為00:00:00到24:00:00 - ?
time with time zone
:帶時(shí)區(qū)的時(shí)間類型,范圍為00:00:00到24:00:00
這些類型可以存儲(chǔ)時(shí)間,例如:
CREATE TABLE example (
id serial PRIMARY KEY,
t time,
tz time with time zone
);
INSERT INTO example (t, tz) VALUES ('12:34:56', '12:34:56+08');
時(shí)間戳類型
時(shí)間戳類型表示日期和時(shí)間的組合,由年、月、日、小時(shí)、分鐘和秒組成。PostgreSQL支持以下時(shí)間戳類型:
- ?
timestamp
:時(shí)間戳類型,范圍為0001-01-01 00:00:00到294276-12-31 23:59:59 - ?
timestamp with time zone
:帶時(shí)區(qū)的時(shí)間戳類型,范圍為0001-01-01 00:00:00到294276-12-31 23:59:59
這些類型可以存儲(chǔ)日期和時(shí)間,例如:
CREATE TABLE example (
id serial PRIMARY KEY,
ts timestamp,
tsz timestamp with time zone
);
INSERT INTO example (ts, tsz) VALUES ('2022-01-01 12:34:56', '2022-01-01 12:34:56+08');
布爾類型
PostgreSQL支持布爾類型,表示真或假。以下是布爾類型的有效值:
- ?
true
:真 - ?
false
:假
這些類型可以存儲(chǔ)布爾值,例如:
CREATE TABLE example (
id serial PRIMARY KEY,
b boolean
);
INSERT INTO example (b) VALUES (true);
貨幣類型
PostgreSQL支持貨幣類型,表示貨幣值。以下是貨幣類型的有效值:
- ?
money
:貨幣類型,范圍為-92233720368547758.08到+92233720368547758.07
這些類型可以存儲(chǔ)貨幣值,例如:
CREATE TABLE example (
id serial PRIMARY KEY,
m money
);
INSERT INTO example (m) VALUES ('$1234.56');
JSON類型
PostgreSQL支持JSON類型,可以存儲(chǔ)JSON格式的數(shù)據(jù)。以下是JSON類型的有效值:
- ?
json
:JSON類型,存儲(chǔ)JSON格式的數(shù)據(jù) - ?
jsonb
:二進(jìn)制JSON類型,存儲(chǔ)JSON格式的數(shù)據(jù)
這些類型可以存儲(chǔ)JSON格式的數(shù)據(jù),例如:
CREATE TABLE example (
id serial PRIMARY KEY,
j json,
jb jsonb
);
INSERT INTO example (j, jb) VALUES ('{"name": "John", "age": 30}', '{"name": "John", "age": 30}');
總結(jié)
本教程介紹了PostgreSQL中可用的各種數(shù)據(jù)類型,包括數(shù)值、字符串、幾何、時(shí)間、日期、布爾、貨幣和json類型。熟悉這些數(shù)據(jù)類型及其有效值范圍可以幫助您更好地使用PostgreSQL。
-
存儲(chǔ)
+關(guān)注
關(guān)注
13文章
4266瀏覽量
85685 -
數(shù)值
+關(guān)注
關(guān)注
0文章
80瀏覽量
14352 -
數(shù)據(jù)類型
+關(guān)注
關(guān)注
0文章
236瀏覽量
13610 -
postgresql
+關(guān)注
關(guān)注
0文章
20瀏覽量
209
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論