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

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