PostgreSQL 支持CREATE TABLE AS
,SELECT INTO
我什么时候同时使用两者?
CREATE TABLE AS
-- 根据查询结果定义一个新表
CREATE TABLE AS
创建一个表并用SELECT
命令计算的数据填充它。表列具有与输出列关联的名称和数据类型SELECT
(除了您可以通过提供新列名的显式列表来覆盖列名)。
CREATE TABLE AS
与创建视图有些相似,但实际上完全不同:它创建一个新表并仅对查询求值一次以填充新表。新表不会跟踪对查询源表的后续更改。相反,SELECT
每当查询时,视图都会重新评估其定义语句。
进而。
SELECT INTO
-- 根据查询结果定义一个新表
SELECT INTO
创建一个新表并用查询计算的数据填充它。数据不会返回给客户端,因为它是普通的SELECT
. 新表的列的名称和数据类型与SELECT
.
Eva*_*oll 20
没有说明,总是CREATE TABLE AS
无一例外地使用。在每个底部的NOTES下,这被清除了,
注意事项SELECT INTO
,
CREATE TABLE AS
在功能上类似于SELECT INTO
.CREATE TABLE AS
是推荐的语法,因为这种形式SELECT INTO
在 ECPG 或 PL/pgSQL 中不可用,因为它们对 INTO 子句的解释不同。此外,CREATE TABLE AS
还提供了由 提供的功能的超集SELECT INTO
。
注意事项CREATE TABLE AS
,
此命令在功能上类似于
SELECT INTO
,但它是首选,因为它不太可能与SELECT INTO
语法的其他用法混淆。此外,CREATE TABLE AS
还提供了SELECT INTO
.
同样在它的文档的兼容性部分SELECT INTO
更进一步,
SQL 标准用于
SELECT INTO
表示将值选择到宿主程序的标量变量中,而不是创建新表。这确实是 ECPG(见第 34 章)和 PL/pgSQL(见第 41 章)中的用法。PostgreSQLSELECT INTO
用于表示表创建的用法是历史性的。最好CREATE TABLE AS
在新代码中用于此目的。
所以我们有,
SELECT INTO
上下文中的其他内容仅在 PL/pgSQL 和 ECPG 中可用。CREATE TABLE
支持更多功能(我假设他们指的是WITH OIDS
, 和TABLESPACE
, IF NOT EXISTS
)。SELECT INTO
表创建是“弃用”。附带说明一下,带有 CTE的CTAS的语法可能看起来有点奇怪。,也SELECT INTO
可能是对QUEL 的RETRIEVE INTO
某种控制。QUEL 是 SQL 的前身,PostgreSQL (INGRES) 的前身使用了它。
归档时间: |
|
查看次数: |
11926 次 |
最近记录: |