随笔分类 -  SQL Server

摘要:SQL Server提供了在T-SQL 代码中用于处理错误的工具。进行错误处理的主要工具是一种称为TRY...CATCH的结构,它是在SQL Server 2005中引入的。SQL Server 也提供了一组函数,调用它们可以获得有关错误的信息。当使用 TRY...CATCH结构时,通常是把T-SQ... 阅读全文
posted @ 2014-06-23 22:08 守护之翼 阅读(158) 评论(0) 推荐(0)
摘要:触发器是一种特殊的存储过程,一种不能被显式执行,而必须依附于一个事件的过程。只要事件发生,就会调用触发器,运行它的代码。SQL Server 支持把触发器和两种类型的事件关联:数据操作事件(如INSERT)和数据定义事件(如CREATE TABLE),和这两种事件关联的触发器分别称为DML 触发器和... 阅读全文
posted @ 2014-06-22 19:56 守护之翼 阅读(205) 评论(0) 推荐(0)
摘要:存储过程是封装了T-SQL代码的服务器端例程。存储过程可以有输入和输出参数,可以返回多个查询的结果集,也允许调用具有副作用的代码。通过存储过程不但可以对数据进行修改,也可以对数据库架构进行修改。和使用特定的普通代码相比,使用存储过程可以获得以下好处:1.存储过程可以封装逻辑处理。如果需要修改存储过程... 阅读全文
posted @ 2014-06-22 11:22 守护之翼 阅读(149) 评论(0) 推荐(0)
摘要:用户自定义函数(UDF,user-defined function)的目的是要封装计算的逻辑处理,有可能需要基于输入的参数,并返回结果。SQL Server 支持两种用户定义函数:标量UDF和表值UDF。标量UDF只返回单个数据值。而表值UDF则返回一个表。使用UDF 的优点之一是可以在查询中集成U... 阅读全文
posted @ 2014-06-22 11:09 守护之翼 阅读(342) 评论(0) 推荐(0)
摘要:SQL Server 允许用字符串来动态构造 T-SQL 代码的一个批处理,接着再执行这个批处理。这种功能称为动态SQL (dynamic SQL)。SQL Server提供了两种执行动态 SQL 的方法:使用 EXEC(EXECUTE 的缩写)命令和sp_executesql 存储过程。动态SQL... 阅读全文
posted @ 2014-06-21 01:08 守护之翼 阅读(325) 评论(0) 推荐(1)
摘要:SQL Server 支持三种类型的临时表:局部临时表、全局临时表及表变量。所有三种类型的临时表都是在tempdb数据库中创建的。1. 局部临时表要创建局部临时表,只需要在命名时以单个数字符号(#)作为前缀,例如#T1。局部临时表只对创建它的会话在创建级和调用堆栈内部级(内部的过程、函数、触发器、以... 阅读全文
posted @ 2014-06-20 00:06 守护之翼 阅读(221) 评论(0) 推荐(0)
摘要:不带ORDER BY 子句的查询返回的是一个集合(或多集),而带有ORDER BY 子句的查询返回的是一种ANSI 称为游标(cursor)的对象,因为这种结果的行之间具有固定的顺序,所以不是关系的结果。在默认情况下应该使用基于集合的查询,只在有令人信服的理由时才考虑使用游标。因为1.如果使用游标,... 阅读全文
posted @ 2014-06-18 23:52 守护之翼 阅读(165) 评论(0) 推荐(0)
摘要:IF ... ELSE 流程控制元素用于根据条件来控制代码的执行流程。如果条件取值为TRUE,则执行指定的语句或语句块;如果条件取值为FALSE或UNKNOWN,则执行指定的另一语句或语句块(此部分为可选的)。IF YEAR(CURRENT_TIMESTAMP) YEAR(DATEADD(day,... 阅读全文
posted @ 2014-06-14 16:18 守护之翼 阅读(107) 评论(0) 推荐(0)
摘要:1.锁锁是事务获取的一种控制资源,用于数据资源,防止其他事务对数据进行冲突的或不兼容的访问。锁模式及其兼容性排他锁(exclusive lock),共享锁(shared lock);还有一些其他类型的锁(更新锁,意向锁、架构锁)。当试图修改数据时,事务会为所依赖的数据资源请求排他锁,一旦授予,事务将... 阅读全文
posted @ 2014-06-10 23:26 守护之翼 阅读(378) 评论(0) 推荐(0)
摘要:事务是作为单个工作单元而执行的一系列操作,如查询和修改数据,甚至可能是修改数据定义。定义事务边界的方式有显式和隐式两种。显式事务的定义需要以BEGIN TRAN 语句作为开始。如果想提交事务,则应该以COMMIT TRAN 语句显式结束事务;如果不想提交事务(撤消事务中的修改),则应该以ROLLBA... 阅读全文
posted @ 2014-06-09 00:50 守护之翼 阅读(210) 评论(0) 推荐(0)
摘要:除了修改数据以外,一般不会希望修改语句后再做其他事情。也就是说,一般不会希望修改语句能够返回任何输出。然而,在有些场合下,能够从修改过的行中返回数据,这个功能可能也有一定的用处。例如,考虑UPDATE语句,除了修改数据以外,对于发生更新的列,UPDATE 语句还可以返回这个列更新之前和更新之后的值。... 阅读全文
posted @ 2014-06-05 23:29 守护之翼 阅读(2175) 评论(0) 推荐(0)
摘要:SQL Server 2008 引入了一个称为MERGE 的语句,它能在一条语句中根据逻辑条件对数据进行不同的修改操作(INSERT、UPDATE和DELETE)。MERGE语句是SQL 标准的一部分,而T-SQL版本的MERGE语句也增加了一些非标准的扩展。因为MERGE语句是新增的,所以必须使用... 阅读全文
posted @ 2014-05-28 23:34 守护之翼 阅读(133) 评论(0) 推荐(0)
摘要:T-SQL支持标准的UPDATE 语句,用于更新表中的数据。T-SQL 也支持UPDATE 语句的一种非标准用法,在UPDATE 语句中使用联接和变量1.UPDATE 语句UPDATE 语句是标准的SQL 语句,用于对表中数据 行的一个子集进行更新。为了标识作为更新目标的子集行,须要在WHERE 子... 阅读全文
posted @ 2014-05-27 23:46 守护之翼 阅读(203) 评论(0) 推荐(0)
摘要:T-SQL 提供了两个从表中删除数据行的语句:DELETE 和 TRUNCATE 。1.DELETE 语句DELETE 语句是标准的SQL 语句,它用于根据指定的谓词从表中删除数据。这个标准的语句只有两个子句:用于指定目标表名的FROM子句和用于指定谓词条件的WHERE 子句。只有能让谓词条件计算结... 阅读全文
posted @ 2014-05-27 00:12 守护之翼 阅读(221) 评论(0) 推荐(0)
摘要:1.INSERT VALUES 语句INSERT VALUES 语句可以将基于指定值的行插入表。INSERT INTO dbo.Orders(orderid,orderdate) VALUES(10001,'20090212');SQL Server 2008增强了VALUES 语句的功能,允许在一... 阅读全文
posted @ 2014-05-26 00:47 守护之翼 阅读(286) 评论(0) 推荐(0)
摘要:逆透视转换(unpivoting)是一种把数据从列的状态旋转为行的状态的技术。通常,它涉及查询数据的透视状态,将来自单个记录中多个列的值扩展为单个列中具有相同值的多个记录。换句话说,把透视表中的每个源行潜在地转换成多个行,每行代表源透视表的一个指定的列值。使用标准SQL 进行逆透视转换逆透视转换的标... 阅读全文
posted @ 2014-05-19 00:09 守护之翼 阅读(1346) 评论(0) 推荐(0)
摘要:透视数据(pivoting)是一种把数据从行的状态旋转为列的状态的处理,在这个过程中可能需要对值进行聚合。每个透视转换将涉及三个逻辑处理阶段,每个阶段都有相关的元素:分组阶段处理相关的分组或行元素,扩展(spreading)阶段处理相关的扩展或列元素,聚合阶段处理相关的聚合元素和聚合函数。总之,透视... 阅读全文
posted @ 2014-05-18 23:29 守护之翼 阅读(277) 评论(0) 推荐(0)
摘要:在集合论中,集合A与B的差集(A-B)是由属于集合A,但不属于集合B的元素组成的集合。可以认为两个集合的差A-B就是从A中减去B中也属于A的元素。在T-SQL中,集合之差是用EXCEPT集合运算实现的。EXCEPT运算对两个输入查询的结果集进行操作,返回出现在第一个结果集中,但不出现在第二个结果集中... 阅读全文
posted @ 2014-05-17 23:14 守护之翼 阅读(3689) 评论(2) 推荐(0)
摘要:在集合论中,两个集合(记为集合A和B)的交集是由既属于A,也属于B的所有元素组成的集合。在T-SQL 中,INTERSECT 集合运算对两个输入查询的结果集取其交集,只返回在两个查询结果集中都出现的行。INTERSECT DISTINCT集合运算INTERSECT 集合运算在逻辑上首先删除两个输入多... 阅读全文
posted @ 2014-05-16 00:07 守护之翼 阅读(1935) 评论(0) 推荐(0)
摘要:在集合论中,两个集合(记为集合A和B)的并集是一个包含集合A和B中所有元素的集合。换句话说,如果一个元素属于任何一个输入集合,那么它也属于结果集。在T-SQL中,UNION 集合运算可以将两个输入查询的结果集组合成一个结果集。如果一个行在任何一个输入集合中出现,它也会在UNION运算的结果中出现。T... 阅读全文
posted @ 2014-05-15 23:26 守护之翼 阅读(1978) 评论(0) 推荐(0)