15.2 从一个表复制到另一个表
有一种数据插入不使用INSERT
语句。要将一个表的内容复制到一个全新的表(运行中创建的表),可以使用SELECT INTO
语句。
说明:DB2不支持
DB2不支持这里描述的SELECT INTO
。
与INSERT SELECT
将数据添加到一个已经存在的表不同,SELECT INTO
将数据复制到一个新表(有的DBMS可以覆盖已经存在的表,这依赖于所使用的具体DBMS)。
说明:
INSERT SELECT
与SELECT INTO
它们之间的一个重要差别是前者导出数据,而后者导入数据。
下面的例子说明如何使用SELECT INTO
:
输入▼
SELECT *
INTO CustCopy
FROM Customers;
分析▼
这条SELECT
语句创建一个名为CustCopy
的新表,并把Customers
表的整个内容复制到新表中。因为这里使用的是SELECT *
,所以将在CustCopy
表中创建(并填充)与Customers
表的每一列相同的列。要想只复制部分的列,可以明确给出列名,而不是使用*
通配符。
MariaDB、MySQL、Oracle、PostgreSQL和SQLite使用的语法稍有不同:
输入▼
CREATE TABLE CustCopy AS
SELECT * FROM Customers;
在使用SELECT INTO
时,需要知道一些事情:
- 任何
SELECT
选项和子句都可以使用,包括WHERE
和GROUP BY
; - 可利用联结从多个表插入数据;
- 不管从多少个表中检索数据,数据都只能插入到一个表中。
提示:进行表的复制
SELECT INTO
是试验新SQL语句前进行表复制的很好工具。先进行复制,可在复制的数据上测试SQL代码,而不会影响实际的数据。
说明:更多例子
如果想看INSERT
用法的更多例子,请参阅附录A中给出的样例表填充脚本。