CREATE TABLE
是用于定义新表的DDL命令。
CREATE TABLE
一直存在于PostgreSQL中。
更改历史
注意:在此列表中未记录PostgreSQL 7.2之前的更改。
- PostgreSQL 18
- 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