SELECT INTO 语句
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
SELECT INTO 语句常用于创建表和备份复件或者用于对记录进行存档。
SELECT INTO 语法
你可以把所有的列插入新表:
SELECT * INTO NEW_TABLE_NAME [IN EXTERNALDATABASE] FROM OLD_TABLENAME
或者只把希望的列插入新表:
SELECT COLUMN_NAME(S) INTO NEW_TABLE_NAME [IN EXTERNALDATABASE] FROM OLD_TABLENAME
SQL SELECT INTO 实例 - 制作备份复件
制作DUCK表的备份复件:
SELECT * INTO DUCK_BACKUP FROM DUCK
IN子句用于向另一个数据库中拷贝表:
SELECT * INTO DUCK IN 'BACKUP.mdb' FROM DUCK
如果我们希望拷贝某些域,可以在SELECT语句后列出这些域:
SELECT (NAME1,NAME2,NAME2,...) INTO DUCK_BACKUP FROM DUCK
SQL SELECT INTO 实例 - 带有 WHERE 子句
我们也可以添加WHERE子句。
把DUCK表中的IDENTIFIER和NAME提取出来汇成一张表
SELECT IDENTIFIER,NAME INTO DUCK_BACKUP FROM DUCK WHERE NAME='DUCKVO'
SQL SELECT INTO 实例 - 被连接的表
从一个以上的表中选取数据也是可以做到的。
SELECT DUCK.NAME CHICKEN.BIRTHDAY INTO DUCK_CHICKEN_BACKUP FROM DUCK INNER JOIN CHICKEN ON DUCK.IDENTIFIER=CHICKEN.IDENTIFIER
注意:如果在sql/plus或者PL/SQL执行这条语句,会报”ORA-00905:缺失关键字”错误,原因是PL/Sql与T-SQL的区别。
T-SQL中该句正常,但PL/SQL中解释是:
select..into is part of PL/SQL language which means you have to use it inside a PL/SQL block. You can not use it in a SQL statement outside of PL/SQL.
即不能单独作为一条sql语句执行,一般在PL/SQL程序块(block)中使用。
如果想在PL/SQL中实现该功能,可使用
Create table newTable as select * from ...:
如:
create table NewTable as select * from OLDTable;
NewTable 除了没有键,其他的和OLDTable一样