在PostgreSQL中,您可以使用以下语法定义各种数据类型:
-
数值类型:
- 整数类型:
smallint
,integer
,bigint
- 浮点类型:
real
,double precision
,numeric
(可以指定精度和标度) - 定点类型:
decimal
(可以指定精度和标度) - 数值类型别名:
bit
,bit varying
,varbit
(bit varying
可以指定长度,varbit
是bit varying
的别名)
- 整数类型:
-
日期和时间类型:
- 日期类型:
date
- 时间类型:
time
(可以指定精度) - 日期时间类型:
timestamp
(可以指定时区) - 时间戳类型:
timestamptz
(时区感知的时间戳) - 日期时间间隔类型:
interval
- 周期类型:
interval
(与interval
相同,但用于表示周期)
- 日期类型:
-
字符串类型:
- 字符串类型:
character varying
(可以指定最大长度,通常简写为varchar
) - 固定长度字符串类型:
char
(可以指定固定长度) - 文本类型:
text
- 字符串类型别名:
citext
(不区分大小写的文本比较)
- 字符串类型:
-
二进制数据类型:
- 二进制数据类型:
bytea
- 二进制数据类型别名:
varbinary
(与bytea
相同,但用于表示可变长度的二进制数据)
- 二进制数据类型:
-
布尔类型:
- 布尔类型:
boolean
(true
或false
)
- 布尔类型:
-
枚举类型:
- 枚举类型:
enum
(定义一组预定义的字符串值)
- 枚举类型:
-
JSON数据类型:
- JSON数据类型:
json
- JSONB数据类型:
jsonb
(存储JSON数据的二进制格式,支持索引和查询优化)
- JSON数据类型:
-
数组类型:
- 数组类型:
array
(例如integer[]
,varchar[]
等)
- 数组类型:
-
元组类型:
- 元组类型:
record
(定义一个记录类型,包含多个字段) - 元组类型别名:
row
(与record
相同,但用于表示行类型)
- 元组类型:
-
集合类型:
- 集合类型:
hstore
(键值对的哈希表) - 集合类型:
jsonb[]
(JSONB数组的数组) - 集合类型:
integer[]
(整数数组的数组)
- 集合类型:
以下是一些示例:
CREATE TABLE example_table ( id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL, age SMALLINT, salary NUMERIC(10, 2), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, is_active BOOLEAN NOT NULL, hobbies TEXT[], address RECORD( street VARCHAR(255), city VARCHAR(255), country VARCHAR(255) ) );
在这个示例中,我们定义了一个名为example_table
的表,其中包含各种数据类型的字段。