由于PostgreSQL中存在一些偽數(shù)據(jù)類型并且一些的客戶端工具還存在別稱所以寫這篇文章記錄。
PostgreSQL支持以下數(shù)據(jù)類型:
布爾類型(boolean)
字符類型烫饼,如
char
,varchar
和text
互婿。數(shù)字類型饱搏,例如整數(shù)和浮點(diǎn)數(shù)。
時(shí)間類型,如
date
,time
,timestamp
用于存儲(chǔ)通用唯一標(biāo)識(shí)符的[UUID]
array(數(shù)組)宙暇,用于存儲(chǔ)數(shù)組字符串输枯,數(shù)字等
json 存儲(chǔ)json數(shù)據(jù)
hstore存儲(chǔ)鍵值對(duì)
特殊類型,如網(wǎng)絡(luò)地址占贫、幾何數(shù)據(jù)桃熄、貨幣數(shù)據(jù)等。
布爾
一個(gè)[布爾]數(shù)據(jù)類型可以容納三個(gè)可能的值之一:true型奥,false或null瞳收。您使用boolean
或者 bool
來聲明具有布爾數(shù)據(jù)類型的列。
當(dāng)將數(shù)據(jù)插入布爾列時(shí)厢汹,PostgreSQL將其轉(zhuǎn)換為布爾值螟深,例如 1
,yes
烫葬,y
界弧,t
,true
會(huì)轉(zhuǎn)換為true搭综;0
垢箕,no
,n
, false
兑巾,f
會(huì)轉(zhuǎn)換為false条获。
當(dāng)您從布爾列中查詢數(shù)據(jù)時(shí)候,PostgreSQL會(huì)將t
值轉(zhuǎn)換為true蒋歌,將f
空格轉(zhuǎn)換為false月匣。
字符
PostgreSQL的提供了三種[字符數(shù)據(jù)類型]:char(n)
,varchar(n)
奋姿,和text
char(n)
是帶有空格填充的固定長(zhǎng)度字符锄开。如果插入的字符串短于列的長(zhǎng)度,PostgreSQL會(huì)填充空格称诗。如果插入的字符串長(zhǎng)度超過列的長(zhǎng)度萍悴,PostgreSQL將發(fā)出錯(cuò)誤。varchar(n)
是可變長(zhǎng)度的字符串寓免。有了varchar(N)
癣诱,您可以存儲(chǔ)最多n
字符。當(dāng)存儲(chǔ)的字符串短于列的長(zhǎng)度時(shí)袜香,PostgreSQL不會(huì)填充空格撕予。text
是可變長(zhǎng)度的字符串。從理論上講蜈首,文本數(shù)據(jù)是一個(gè)長(zhǎng)度不限的字符串实抡。
數(shù)字
PostgreSQL提供兩種不同類型的數(shù)字:
整數(shù)
浮點(diǎn)數(shù)
整數(shù)
PostgreSQL中有三種整數(shù):
smallint(
小整數(shù)
別名int2
)是2字節(jié)有符號(hào)整數(shù)欠母,范圍從-32,768到32,767。integer(別名:
int
吆寨、int4
)是一個(gè)4字節(jié)的整數(shù)赏淌,范圍從-2,147,483,648到-2,147,483,647。bigint(別名:
int8
)是一個(gè)八字節(jié)的整數(shù)啄清,范圍從-9223372036854775808 到9223372036854775807serial(別名:
serial2(smallserial)
六水、serial4(serial)
、serial8(bigserial)
)最大值與整數(shù)相同辣卒,只是PostgreSQL會(huì)自動(dòng)生成值并將值填充到serial
列中掷贾。這類似于MySQL中的AUTO_INCREMENT
浮點(diǎn)數(shù)
有三種主要類型的浮點(diǎn)數(shù):
float(n)
是一個(gè)浮點(diǎn)數(shù),其精度至少為n荣茫,最多為8個(gè)字節(jié)想帅。real
或者float8
是雙精度(8字節(jié))浮點(diǎn)數(shù)。numeric
或者numeric(p,s)
是帶小數(shù)點(diǎn)后帶有s數(shù)的p位數(shù)的實(shí)數(shù)计露。這numeric(p,s)
是確切的數(shù)字博脑。
時(shí)間數(shù)據(jù)類型
時(shí)態(tài)數(shù)據(jù)類型允許您存儲(chǔ)日期和/或時(shí)間數(shù)據(jù)。PostgreSQL有五種主要的時(shí)態(tài)數(shù)據(jù)類型:
date
僅存儲(chǔ)日期值票罐。time
存儲(chǔ)時(shí)間值叉趣。timestamp
存儲(chǔ)日期和時(shí)間值。timestampz
是一種時(shí)區(qū)感知時(shí)間戳數(shù)據(jù)類型该押。它是帶時(shí)區(qū)的[時(shí)間戳]的縮寫疗杉。interval
存儲(chǔ)一段時(shí)間,時(shí)間間隔蚕礼。
這timestampz
是PostgreSQL對(duì)SQL標(biāo)準(zhǔn)的時(shí)間數(shù)據(jù)類型的擴(kuò)展烟具。
數(shù)組
在PostgreSQL中有存儲(chǔ)字符串,整數(shù)等類型的數(shù)組奠蹬。該數(shù)組在某些情況下會(huì)派上用場(chǎng)朝聋,例如,存儲(chǔ)一周中的幾天囤躁,一年中的幾個(gè)月冀痕。
JSON
PostgreSQL提供2種JSON的數(shù)據(jù)類型:json
和jsonb
用于存儲(chǔ)json數(shù)據(jù)。
在json
需要為每個(gè)處理重新分析數(shù)據(jù)類型存儲(chǔ)json數(shù)據(jù)狸演,而jsonb
在二進(jìn)制格式這是更快處理言蛇,但速度慢于插入數(shù)據(jù)類型存儲(chǔ)json數(shù)據(jù)。另外宵距,jsonb
支持索引腊尚,這可能是一個(gè)優(yōu)勢(shì)。
UUID
該UUID
數(shù)據(jù)類型允許您存儲(chǔ)通用唯一標(biāo)識(shí)符被定義 满哪。這些UUID
值保證了更好的唯一性婿斥,serial
并且可以用于隱藏公開的敏感數(shù)據(jù)劝篷,例如id
中的值。
特殊數(shù)據(jù)類型
除原始數(shù)據(jù)類型外受扳,PostgreSQL還提供了幾種與幾何和網(wǎng)絡(luò)相關(guān)的特殊數(shù)據(jù)類型携龟。
box
- 一個(gè)矩形框兔跌。line
- 一組積分勘高。point
- 一對(duì)幾何數(shù)字。lseg
- 線段坟桅。polygon
- 封閉的幾何形狀华望。inet
- IP4地址。macaddr
- 一個(gè)MAC
地址仅乓。money
-貨幣金額