摘要:
什么情况下使用表变量?什么情况下使用临时表?表变量: DECLARE @tb table(id int identity(1,1), name varchar(100)) INSERT @tb SELECT id, name FROM mytable WHERE name like ‘zhang%’ 临时表: SELECT name, address INTO #ta FROM mytable WHERE name like ‘zhang%’表变量和临时表的比较:临时表是利用了硬盘(tempdb数据库) ,表名变量是占用内存,因此小数据量当然是内存中的表变量更快。当大数据量时,就不... 阅读全文
摘要:
利用带关联子查询Update语句更新数据 Update是T-sql中再简单不过的语句了,update table set column=expression[where condition],我们都会用到。但update的用法不仅于此,真正在开发的时候,灵活恰当地使用update可以达到事半功倍的效果。 假定有表Table1(a,b,c)和Table2(a,c),现在Table1中有些记录字段c为null,要根据字段a在Table2中查找,取出字段a相等的字段c的值来更新Table1。一种常规的思路,通过游标遍历Table1中字段c为null的所有记录,在循环体内查找Table2并进行更新,即 阅读全文
摘要:
Union因为要进行重复值扫描,所以效率低。如果合并没有刻意要删除重复行,那么就使用Union All两个要联合的SQL语句 字段个数必须一样,而且字段类型要“相容”(一致);如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。 union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。 Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序; Union A 阅读全文
摘要:
a: Insert into Table2 values('AAA','90')b: INSERT Table2 select Table1.a,Table1.b from Table1C: Insert into Table2(field1,field2,...) select value1,value2,... from Table1d: SELECT vale1, value2 into Table2 from Table1转载:http://www.cnblogs.com/freshman0216/archive/2008/08/15/1268316.h 阅读全文
摘要:
TRUNCATETABLE在功能上与不带WHERE子句的DELETE语句相同:二者均删除表中的全部行。但TRUNCATETABLE比DELETE速度快,且使用的系统和事务日志资源少。DELETE语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATETABLE通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。TRUNCATETABLE删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用DELETE。如果要删除表定义及其数据,请使用DROPTABLE语句。对于由FOREIGNKEY约束引 阅读全文