CREATE TABLE AS

用于根据查询结果定义新表的SQL命令

CREATE TABLE AS 是一个DDL命令,用于根据查询结果定义一个新表。

CREATE TABLE ASPostgreSQL 6.3 中添加。

用法

CREATE TABLE AS 将根据提供的 SELECT 查询创建一个表。列名(除非使用 AS 显式修改)和数据类型将是 SELECT 查询生成的那些。请注意,不会创建任何约束或索引,如果需要,则需要手动添加。

与创建视图或物化视图相比,CREATE TABLE AS 会生成一个完全独立的表。

替代方案

更改历史记录

示例

CREATE TABLE AS 的基本用法示例

postgres=# CREATE TABLE foo (id INT NOT NULL PRIMARY KEY, val TEXT);
CREATE TABLE

postgres=# INSERT INTO foo VALUES(generate_series(1,100), clock_timestamp());
INSERT 0 100

postgres=# CREATE TABLE bar AS SELECT * FROM foo WHERE id % 2 = 1;
SELECT 50

创建的表将没有任何索引、约束或其他属性,即使它生成的查询只引用单个源表

postgres=# \d bar
                Table "public.bar"
 Column |  Type   | Collation | Nullable | Default
--------+---------+-----------+----------+---------
 id     | integer |           |          |
 val    | text    |           |          |

要克隆现有表的定义,可以使用 CREATE TABLE ... (LIKE ...),例如:

postgres=# CREATE TABLE baz (LIKE foo INCLUDING ALL);
CREATE TABLE

postgres=# \d baz
                Table "public.baz"
 Column |  Type   | Collation | Nullable | Default
--------+---------+-----------+----------+---------
 id     | integer |           | not null |
 val    | text    |           |          |
Indexes:
    "baz_pkey" PRIMARY KEY, btree (id)

类别

DDLSQL命令

另请参阅

CREATE TABLESELECT INTO

反馈

提交任何关于“CREATE TABLE AS”的评论、建议或更正 此处