PostgreSQL – 创建表作为
在 PostgreSQL 中,CREATE TABLE AS 语句用于创建一个新表并用查询返回的数据填充它。
Syntax:
CREATE TABLE new_table_name
AS query;
我们来分析一下上面的语法:
- 首先,在 CREATE TABLE 子句之后指定新表名。
- 最后,提供一个查询,其结果集添加到新表中的 AS 关键字之后。
TEMPORARY 或 TEMP 关键字允许您创建临时表:
Syntax:
CREATE TEMP TABLE new_table_name
AS query;
UNLOGGED 关键字允许将新表创建为未unlogged
表:
Syntax:
CREATE UNLOGGED TABLE new_table_name
AS query;
新表的列将具有与 SELECT 子句的输出列相关联的名称和数据类型。 如果您希望表列具有不同的名称,可以在新表名称后指定新表列,如下所示:
Syntax:
CREATE TABLE new_table_name ( column_name_list)
AS query;
如果您想通过创建一个已经存在的新表来避免错误,您可以使用 IF NOT EXISTS 选项,如下所示:
Syntax:
CREATE TABLE IF NOT EXISTS new_table_name
AS query;
例如,我们将使用示例数据库(即 dvdrental)。
示例 1:
在此示例中,我们将使用film_category
表,使用以下语句创建属于类别 1 的动作电影表:
CREATE TABLE action_film AS
SELECT
film_id,
title,
release_year,
length,
rating
FROM
film
INNER JOIN film_category USING (film_id)
WHERE
category_id = 1 ;
现在我们可以使用以下语句验证新表:
SELECT * FROM action_film ORDER BY title;
输出:
示例 2:
在本例中,我们将创建一个新表film_rating
并使用以下语句使用film
表中的摘要数据填充它:
CREATE TABLE IF NOT EXISTS film_rating (rating, film_count)
AS
SELECT
rating,
COUNT (film_id)
FROM
film
GROUP BY
rating;
现在要验证新表,请使用以下语句:
SELECT * FROM film_rating;
输出: