随笔分类 -  SQL Server

摘要:在数据处理时,我们经常会使用一些“自增”的插入方式来处理数据。比如学生学号:B07051001,B07051002....类似的递增关系的数据。但是,如果中途因为某些原因将其中的一些记录删除掉之后,就会出现断续的记录。这时,我们可能期待将这些中间的缺失值再次利用。以下,就谈谈如何查找最小缺失值。首先,我们建一个测试表:tb_Test(主键并未设置为自增长):create table tb_Test( id int primary key, val char(1) null) 插入一些数据:insert into tb_Test values(1,'a')insert into 阅读全文
posted @ 2011-03-20 12:25 程序员天下 阅读(457) 评论(0) 推荐(0) 编辑
摘要:Exists:根据子查询是否返回行,该谓词返回true或false,不同于其他谓词和逻辑表达式,无论输入子查询是否返回行,Exists都不会返回unknown。如果子查询的筛选器为某一行返回unknown,则该行不返回。在筛选器中,unknown被认为类似于false,换句话说,当输入子查询包含一个筛选器时,只要该筛选器至少为一行得到true,则Exists将返回true。在Exists谓词的子查询中,Exists只关心行是否存在,不关心特定属性,优化器将忽略子查询中的select列表。在SQL SERVER 2000之前的版本,两者其实是有区别的,优化器会为他们生成不同的执行计划,而且EXI 阅读全文
posted @ 2011-03-17 16:21 程序员天下 阅读(971) 评论(0) 推荐(0) 编辑
摘要:在Select列表中创建的别名不能在Select子句之前执行的子句中使用。实际上,表达式别名甚至不能用于Select列表的其他表达式。该限制是由于SQL的另一个独有的特性,即同时操作(all-at-once operation)。例如,在下面这个Select列表中,计算表达式的逻辑顺序无关紧要,而且具有不确定性:Select c1+1 As e1,c2+1 As e2.因此,不支持下面这个表达式:Select c1+1 As e1,e1+1 As e2.你只能在Select列表后面的步骤(如Order By步骤)中使用列的别名。理解:同时操作(all-at-once operation)我们在 阅读全文
posted @ 2011-02-14 15:58 程序员天下 阅读(235) 评论(0) 推荐(0) 编辑
摘要:以下这段对SQL Server执行逻辑查询时,SQL被解析的步骤。摘自《SQL Server 2005技术内幕 T-SQL查询》。这是一本非常好的讲解SQL Server的书,整个SQL Server 2005技术内幕系列都是,个人强烈推荐。我一直认为,学好任何一种技术,没有什么比学好它的基础知识和底层原理更重要。如果你相信有“捷径”,那么这就是唯一的“捷径”。了解这些,有助于你更快地掌握技术最本质的核心。我真希望早点看到那些好书,也希望看到这篇文章的你,能有点收获,多读好书,少走一些弯路。他山之石可以攻玉!以上步骤从1-11按顺序被执行,如果没有将跳过相应步骤;以上每个步骤都会产生一个虚拟表 阅读全文
posted @ 2011-02-12 16:54 程序员天下 阅读(244) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示