在查询的基础上创建新表
功能:将查询的结果放到一个新表中去,查询结果可以来源于一个表或多个表
SQL SERVER中使用SELECT … INTO语句
按照使用场合可以分为以下几类:
1. 实现全表备份:如:SELECT * INOT t1 FROM titles
2. 备份表的一部分列(不写*而写出列的列表)或一部分行(加WHERE条件)
如: SELECT title_id,title,price INTO t2 FROM titles—部分列
SELECT * INTO t2 FROM titles WHREE price>10 –部分行
SELECT title_id,title,price INTO t2 FROM titles WHREE price>10 –部分行和部分列
3. 只复制表的结构:如:SELECT * INOT t1 FROM titles WHERE 1=2
4. 查询结果来源于多个表:如:
SELECT title_id,title,pub_name INTO t3
FROM titles t INNER JOIN publishers p
ON t.pub_id=p.pub_id
Oracle中使用CREATE TABLE … AS SELECT… 语句
实现的功能与SQL SERVER中基本相同,只是语法不同。例如:
CREATE TABLE dept_bak AS SELECT * FROM dept;
请注意:使用此种方法生成的新表中没有主键等约束,如果需要加,请另外创建。
此外,批量插入数据的语句在SQL SERVER 和Oracle中是相同的,都是INSERT INTO SELECT……,如:
INSERT INTO t1 SELECT * FROM titles
INSERT INTO dept_bak SELECT * FROM dept;