CREATE TABLE 是用于定义新表的 DDL 命令。
CREATE TABLE 一直存在于 PostgreSQL 中。
变更历史
注意:PostgreSQL 7.2 之前的更改未在此列表中记录。
- PostgreSQL 18
- PostgreSQL 17
- PostgreSQL 16
CREATE TABLE ... STORAGE ...语法已添加 (commit 784cedda)
- PostgreSQL 15
- PostgreSQL 14
- 为列定义添加了
COMPRESSION选项 (commit bbe0a81d)
- 为列定义添加了
- PostgreSQL 13
CREATE TABLE ... LIKE现在将CHECK约束的NO INHERIT属性传播到创建的表 (commit cacef172)
- PostgreSQL 12
- 添加了
GENERATED ALWAYS AS ( ... ) STORED语法(提交 fc22b662)
- 添加了
- PostgreSQL 11
- PostgreSQL 10
- PostgreSQL 9.4
- PostgreSQL 9.3
- 更新了
ON UPDATE SET { NULL | DEFAULT }引用操作的行为 (commit c75be2ad)
- 更新了
- PostgreSQL 9.2
- PostgreSQL 9.1
- PostgreSQL 9.0
- 添加了
CREATE TABLE ... (LIKE ... INCLUDING ALL)语法 (commit faa1afc6) - 添加了
CREATE TABLE ... (LIKE ... INCLUDING COMMENTS)语法 (commit faa1afc6) - 添加了
CREATE TABLE ... (LIKE ... INCLUDING STORAGE)语法 (commit faa1afc6) - 添加了
CREATE TABLE ... OF TYPE语法 (commit e7b3349a)composite_type UNIQUE、PRIMARY KEY和EXCLUDE约束可以设置为[ NOT ] DEFERRABLE(commit 25d9bf2e)
- 添加了
- PostgreSQL 8.4
- PostgreSQL 8.3
- 添加了
CREATE TABLE ... (LIKE ... INCLUDING INDEXES)语法 (commit 47477491)
- 添加了
- PostgreSQL 8.2
- PostgreSQL 8.0
- PostgreSQL 7.4
- PostgreSQL 7.3
- 添加了外键定义的
MATCH SIMPLE子句 (commit 90edb265)
- 添加了外键定义的
- PostgreSQL 7.2
- 添加了
WITH OIDS/WITHOUT OIDS语法 (commit bf56f075)
- 添加了
示例
CREATE TABLE 的基本用法示例
postgres=# CREATE TABLE foo (id INT NOT NULL PRIMARY KEY, val TEXT);
CREATE TABLE
postgres=# \d foo
Table "public.foo"
Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+---------
id | integer | | not null |
val | text | | |
Indexes:
"foo_pkey" PRIMARY KEY, btree (id)
参考资料
- PostgreSQL 文档: CREATE TABLE
