随笔 - 410
文章 - 0
评论 - 519
阅读 -
147万
09 2014 档案
EXCEPT差集运算
摘要:EXCEPT差集运算在逻辑上先删除两个输入多集中的重复行,把多集变成集合,然后返回只在第一个集合中出现,在第二个集合中不出现的所有行。可以看下面示意图。下面是一个简单的示例。USE TSQLFundamentals2008;GO-- EXCEPT差集运算-- 以下代码返回属于职员地址,但不属于客...
阅读全文
INTERSECT交集运算
摘要:INTERSECT交集是由既属于集合A,又属于集合B的所有元素组成的集合,如示意图1。 INTERSECT DISTINCT集合运算在逻辑上首先先删除两个输入多集中的重复行,把多集变为集合,然后返回只在两个集合中都出现的行。简单来说,如果一行在两个输入多集中都至少出现一次,那么交集返回的结果中...
阅读全文
视图
摘要:前面讲的两种类型的表表达式(派生表和CTE),它们的作用范围都非常有限,仅限于在单个语句范围内使用,只要包含这些表表达式的外部查询完成操作,它们便随它消失了。这也就意味着派生表和CTE都是不可重用的。 相较于派生表和CTE,视图是一种可重用的表表达式,它定义在数据库中。一旦创建,它就是数据库的...
阅读全文
公用表表达式CTE
摘要:公用表表达式CTE表面上和派生表非常相似,看起来只是语义上的区别。但和派生表比较起来,CTE具有几个优势:第一,如果须要在一个CTE中引用另一个CTE,不需要像派生表那样嵌套,相反,只要简单地在同一个WITH子句中定义多个CTE,并用逗号把它们分隔开。每个CTE可以引用在它前面定义的所有CTE。...
阅读全文
派生表
摘要:从这一篇开始要介绍表表达式了,什么是表表达式呢?表表达式是一种命名的查询表达式,代表一个有效的关系表。可以像其它表一样,在数据处理语句中使用表表达式。SQL Server支持四种类型的表表达式:派生表,公用表表达式,视图和内联表值函数。 派生表(也称为表子查询)是在外部查询的FROM子句中定义...
阅读全文
表类型
摘要:表类型简化了表变量的定义。通过创建表类型,可以把表的定义保存到数据库中,以后在定义表变量,存储过程和用户定义函数的输入参数时,就可以将表类型作为表的定义而重用。下面的示例演示了如何通过表类型来简化表变量的定义,并且如何重用它。USE TSQLFundamentals2008;GOIF TYPE_...
阅读全文
表变量
摘要:表变量和局部临时表非常相似,除了能实现相同的功能外,它们主要有两点不同,首先声明表变量是用DECLARE语句,而不是CREATE TABLE语句,第二点是表变量也只对创建它的会话可见,但允许访问的范围更小,它只对当前批处理可见,它对调用堆栈中当前批处理的内部批处理是不可见的,对会话中随后的批处理...
阅读全文
全局临时表
摘要:全局临时表是以两个‘##’符号为前缀,并且它对所有会话可见的一种临时表。全局临时表一般用在需要向所有人共享数据的时候使用。下面是一个全局临时表的示例。-- 全局临时表IF OBJECT_ID('tempdb.dbo.##Globals','U') IS NOT NULL DROP TABLE d...
阅读全文
局部临时表
摘要:局部临时表有两个特点,一是表名以'#'号作为前缀,二是它只对创建它的会话在创建级和调用堆栈内部级(包括内部的过程,函数,触发器和动态批处理)可见。局部临时表的应用场景是,当需要把中间结果临时保存起来,以便供以后查询这些临时数据的时候使用。下面是创建局部临时表的示例代码。USE TSQLFunda...
阅读全文
动态SQL基础
摘要:动态SQL就是我们可以动态构造SQL代码,然后再执行这个批处理。有两种执行动态SQL的方法,分别是EXEC命令和sp_executesql存储过程。下面是示例代码。USE TSQLFundamentals2008;GO-- 动态SQL-- 方法一:EXEC命令(支持普通字符和Unicode字符)...
阅读全文
删除数据
摘要:我们有两种方式删除数据,DELETE语句和TRUNCATE语句。需要注意它们的区别,DELETE语句是以完整模式记录日志的,所以它的性能相对较低。而TRUNCATE语句是以最小模式来记录日志的,并且它会重置标识种子。下面是示例代码。USE tempdb;GO-- 准备测试数据IF OBJECT_...
阅读全文
修改数据
摘要:我们一般使用UPDATE语句对表中数据行的一个子集进行修改,除了使用标准的UPDATE语句外,我们还可以使用基于联接的UPDATE语句。为了测试,我们先创建了两张表,Orders和OrderDetails,测试代码如下。USE tempdb;GO-- 准备测试数据IF OBJECT_ID('db...
阅读全文
插入数据
摘要:我们可以通过以下几种方式向表中插入数据。分别是INSERT VALUES,INSERT SELECT,INSERT EXEC,SELECT INTO和BULK INSERT共五种方法。为了演示,我们先在数据库tempdb中创建表dbo.Orders,然后分别用这几种方法向表中插入数据,下面是示例...
阅读全文