复制并创建新表/快速删除表记录/合并查询union/两表去重Except/两表取同intersect/

1.复制并创建新表

现存表A,A表中有记录50条,一般复制并创建新表是用来备份某一张表的记录,可以使用以下语句

select * into [新表名] from [老表名]

实例

select * into a01 from a

 还有一种情况,比如我们只需要A表的结构并不需要其中的50条记录,可以用下面的写法

select * into a02 from a where 1=2

 注意:用这个方法来复制表的话,表的主键,约束,缺省值,都是带不到新表里去的,这个一定要注意.

 

2.快速删除表记录

日常开发中,我们删除表记录最常使用的语句就是delete from tablename where ....,类似这样的语句,但是在某种特殊的情况下,如果我们需要把一张表的记录全部删除,并且不需要where条件的话,可以使用以下语句,来提高删除的效率。

truncate table [tablename]

实例,删除表Order

truncate table order

现在已知这样做的唯一好处就是删除的效率比较高,其他有什么地方好的也不是很清楚。

 

3.合并查询结果union

在SQL中当我们需要把2此的查询结果合并在一起的时候可以使用union来进行操作

实例

select a,b,c,d, from TableA

union

select name as a,money as b,home as c,d from tableB

以上语句会把2个查询的结果合并在一起,union操作符会自动筛选不重复的记录进行合并,如果需要把重复的记录也显示可以使用union all操作符,

需要注意的是,在使用union的时候,N此查询中的列数,字段名,字段类型,是必须一样的,但是那些数据可以来自不同的表,还有一点需要注意的是union在一句SQL语句中使用的次数是有限的,具体多少次我忘记了,但是超过一定数量后,这句SQL语句就会报错,需要注意。

 

4.两表去重Except

EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。

select * from customer
except
select * from customer where customerid<>'17203'

最终显示的客户记录是ID=17203的记录。

 

 5.两表取同intersect

INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。

 

 

 

 

posted @ 2011-11-29 10:19  适渊  阅读(462)  评论(0编辑  收藏  举报