日期:2014-05-16  浏览次数:20842 次

oracle,sqlserver数据库在查询结果基础上创建新表
功能:将查询的结果放到一个新表中去,查询结果可以来源于一个表或多个表

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;

?

来源:http://www.cnblogs.com/lgzslf/archive/2008/11/25/1340323.html