數值類型
數值類型由 2 字節、4 字節或 8 字節的整數以及 4 字節或 8 字節的浮點數和可選精度的十進制數組成。
名字 | 存儲長度 | 描述 | 范圍 |
---|---|---|---|
smallint | 2 字節 | 小范圍整數 | -32768 到 +32767 |
integer | 4 字節 | 常用的整數 | -2147483648 到 +2147483647 |
bigint | 8 字節 | 大范圍整數 | -9223372036854775808 到 +9223372036854775807 |
decimal | 可變長 | 用戶指定的精度,精確 | 小數點前 131072 位;小數點后 16383 位 |
numeric | 可變長 | 用戶指定的精度,精確 | 小數點前 131072 位;小數點后 16383 位 |
real | 4 字節 | 可變精度,不精確 | 6 位十進制數字精度 |
double precision | 8 字節 | 可變精度,不精確 | 15 位十進制數字精度 |
smallserial | 2 字節 | 自增的小范圍整數 | 1 到 32767 |
serial | 4 字節 | 自增整數 | 1 到 2147483647 |
bigserial | 8 字節 | 自增的大范圍整數 | 1 到 9223372036854775807 |
貨幣類型
money 類型存儲帶有固定小數精度的貨幣金額。
numeric、int 和 bigint 類型的值可以轉換為 money,不建議使用浮點數來處理處理貨幣類型,因為存在舍入錯誤的可能性。
名字 | 存儲長度 | 描述 | 范圍 |
---|---|---|---|
money | 8字節 | 貨幣金額 | -92233720368547758.08 到 +92233720368547758.07 |
字符類型
序號 | 描述 |
---|---|
1 | character varying(n), varchar(n)變長,有長度限制 |
2 | character(n), char(n) 定長,不足補空白 |
3 | text 變長,無長度限制 |
日期/時間類型
名字 | 存儲空間 | 描述 | 最低值 | 最高值 | 分辨率 |
---|---|---|---|---|---|
timestamp [ (p) ] [ without time zone ] | 8 字節 | 日期和時間(無時區) | 4713 BC | 294276 AD | 1 毫秒 / 14 位 |
timestamp [ (p) ] with time zone | 8 字節 | 日期和時間,有時區 | 4713 BC | 294276 AD | 1 毫秒 / 14 位 |
date | 4 字節 | 只用於日期 | 4713 BC | 5874897 AD | 1 天 |
time [ (p) ] [ without time zone ] | 8 字節 | 只用於一日內時間 | 00:00:00 | 24:00:00 | 1 毫秒 / 14 位 |
time [ (p) ] with time zone | 12 字節 | 只用於一日內時間,帶時區 | 00:00:00+1459 | 24:00:00-1459 | 1 毫秒 / 14 位 |
interval [ fields ] [ (p) ] | 12 字節 | 時間間隔 | -178000000 年 | 178000000 年 | 1 毫秒 / 14 位 |
布爾類型
PostgreSQL 支持標准的 boolean 數據類型。
boolean 有"true"(真)或"false"(假)兩個狀態, 第三種"unknown"(未知)狀態,用 NULL 表示。
名稱 | 存儲格式 | 描述 |
---|---|---|
boolean | 1 字節 | true/false |
枚舉類型
枚舉類型是一個包含靜態和值的有序集合的數據類型。
PostgtesSQL中的枚舉類型類似於 C 語言中的 enum 類型。
與其他類型不同的是枚舉類型需要使用 CREATE TYPE 命令創建。
CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
創建一周中的幾天,如下所示:
CREATE TYPE week AS ENUM ('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun');
JSON 類型
json 數據類型可以用來存儲 JSON(JavaScript Object Notation)數據, 這樣的數據也可以存儲為 text,但是 json 數據類型更有利於檢查每個存儲的數值是可用的 JSON 值。
對象標識符類型
PostgreSQL 在內部使用對象標識符(OID)作為各種系統表的主鍵。
同時,系統不會給用戶創建的表增加一個 OID 系統字段(除非在建表時聲明了WITH OIDS 或者配置參數default_with_oids設置為開啟)。oid 類型代表一個對象標識符。除此以外 oid 還有幾個別名:regproc, regprocedure, regoper, regoperator, regclass, regtype, regconfig, 和regdictionary。
名字 | 引用 | 描述 | 數值例子 |
---|---|---|---|
oid | 任意 | 數字化的對象標識符 | 564182 |
regproc | pg_proc | 函數名字 | sum |
regprocedure | pg_proc | 帶參數類型的函數 | sum(int4) |
regoper | pg_operator | 操作符名 | + |
regoperator | pg_operator | 帶參數類型的操作符 | *(integer,integer) 或 -(NONE,integer) |
regclass | pg_class | 關系名 | pg_type |
regtype | pg_type | 數據類型名 | integer |
regconfig | pg_ts_config | 文本搜索配置 | english |
regdictionary | pg_ts_dict | 文本搜索字典 | simple |
偽類型
PostgreSQL類型系統包含一系列特殊用途的條目, 它們按照類別來說叫做偽類型。偽類型不能作為字段的數據類型, 但是它可以用於聲明一個函數的參數或者結果類型。 偽類型在一個函數不只是簡單地接受並返回某種SQL 數據類型的情況下很有用。
名字 | 描述 |
---|---|
any | 表示一個函數接受任何輸入數據類型。 |
anyelement | 表示一個函數接受任何數據類型。 |
anyarray | 表示一個函數接受任意數組數據類型。 |
anynonarray | 表示一個函數接受任意非數組數據類型。 |
anyenum | 表示一個函數接受任意枚舉數據類型。 |
anyrange | 表示一個函數接受任意范圍數據類型。 |
cstring | 表示一個函數接受或者返回一個空結尾的 C 字符串。 |
internal | 表示一個函數接受或者返回一種服務器內部的數據類型。 |
language_handler | 一個過程語言調用處理器聲明為返回language_handler。 |
fdw_handler | 一個外部數據封裝器聲明為返回fdw_handler。 |
record | 標識一個函數返回一個未聲明的行類型。 |
trigger | 一個觸發器函數聲明為返回trigger。 |
void | 表示一個函數不返回數值。 |
opaque | 一個已經過時的類型,以前用於所有上面這些用途。 |
轉載地址:https://m.runoob.com/postgresql/postgresql-data-type.html