CREATE TABLE AS

一种用于从查询结果定义新表的 SQL 命令

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

CREATE TABLE AS 添加于 PostgreSQL 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)

分类

DDL, SQL 命令

另请参阅

CREATE TABLE, SELECT INTO

反馈

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