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 次 |
| 最近记录: |