CREATE TABLE
是用于定义新表的 DDL 命令。
CREATE TABLE
一直存在于 PostgreSQL 中。
更改历史记录
注意:在此列表中未记录 PostgreSQL 7.2 之前的更改。
- PostgreSQL 17
- PostgreSQL 16
- 添加了
CREATE TABLE ... STORAGE ...
语法 (提交 784cedda)
- 添加了
- PostgreSQL 15
- PostgreSQL 14
- 添加了列定义的
COMPRESSION
选项 (提交 bbe0a81d)
- 添加了列定义的
- PostgreSQL 13
CREATE TABLE ... LIKE
现在将CHECK
约束的NO INHERIT
属性传播到创建的表 (提交 cacef172)
- PostgreSQL 12
- 添加了
GENERATED ALWAYS AS ( ... ) STORED
语法 (提交 fc22b662)
- 添加了
- PostgreSQL 11
- PostgreSQL 10
- PostgreSQL 9.4
- PostgreSQL 9.3
- 更新了
ON UPDATE SET { NULL | DEFAULT }
引用操作的行为 (提交 c75be2ad)
- 更新了
- PostgreSQL 9.2
- PostgreSQL 9.1
- PostgreSQL 9.0
- 添加了
CREATE TABLE ... (LIKE ... INCLUDING ALL)
语法 (提交 faa1afc6) - 添加了
CREATE TABLE ... (LIKE ... INCLUDING COMMENTS)
语法 (提交 faa1afc6) - 添加了
CREATE TABLE ... (LIKE ... INCLUDING STORAGE)
语法 (提交 faa1afc6) - 添加了
CREATE TABLE ... OF TYPE
语法 (提交 e7b3349a)composite_type
UNIQUE
、PRIMARY KEY
和EXCLUDE
约束可以设置为[ NOT ] DEFERRABLE
(提交 25d9bf2e)
- 添加了
- PostgreSQL 8.4
- PostgreSQL 8.3
- 添加了
CREATE TABLE ... (LIKE ... INCLUDING INDEXES)
语法 (提交 47477491)
- 添加了
- PostgreSQL 8.2
- PostgreSQL 8.0
- PostgreSQL 7.4
- PostgreSQL 7.2
- 添加了语法
WITH OIDS
/WITHOUT OIDS
(提交 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