SQL SERVER技术内幕之10 可编程对象】的更多相关文章

一.变量 变量用于临时保存数据值,以供在声明它们的同一批处理语句中引用.例如,以下代码先声明一个数据类型为INT的变量@i,再将它赋值为10; DECLARE @i as INT; SET @i = ; SQL SERVER 2008新增加了对在同一语句中同时声明和初始化变量的支持,如下所示: DECLARE @i ; 可以使用一个DECLARE语句同时声明多个变量,但是SET语句只能对一个变量进行操作,所以如果需要把值赋值给多个变量,就必须使用多个SET语句.当从同一行取出多个列的值时,这可能…
1.事务 1.1事务的定义 事务是作为单个工作单元而执行的一系列操作.定义事务边界有显式和隐式两种.显式事务的定义以BEGIN TRAN作为开始,以COMMIT TRAN提交事务,以ROLLBACK TRAN撤销事务.如果不显式定义事务的边界,SQL Server会默认把每个单独的语句作为一个事务.也就是说,SQL Server默认在执行完每个语句之后就自动提交事务.可以通过IMPLICIT_TRANSACTIONS会话选项来改变SQL Server处理隐式事务的方式. 1.2事务的属性 (1)…
SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnblogs.com/lyhabc/articles/3914213.html Microsoft SQL Server 2005技术内幕:T-SQL查询笔记http://www.cnblogs.com/lyhabc/articles/3912608.html Microsoft SQL Server 2…
1.定义 集合运算会对两个输入查询的结果集进行逐行比较,根据比较结果和所使用的集合运算来确定某一行是否应该包含在集合运算的结果中.因为集合运算是针对集合之间进行的计算,所以集合运算涉及的两个查询不能包含Order By子句.包含Order By子句的查询可以确保结果的排列顺序,因此,这样的查询返回的不是集合,而是游标. ANSI SQL对每种集合运算都支持两个选项:DISTINCT(默认值)和ALL,DISTINCT逻辑上可以从两个输入的多集中消除重复的行,然后返回一个集合.ALL对两个多集进行…
分组集就是分组(GROUP BY子句)使用的一组属性,在传统的SQL中,一个聚合查询只能定义一个分组集: 假设现在不想生成4个单独的结果集,而是希望生成一个统一的结果集,其中包含所有4个分组集的聚合 数据,下面是经过调整后的代码: 虽然设法得到了期望的结果,但这种解决方案存在两个主要 问题:代码长度和性能. 1.GROUPING SETS从属子句 借助该从属子句,就可以在同一查询中定义多个分组集.只要简单地在GROUPING SETS从属子句的圆括号内列出想要定义的各分组集,分组集之间用逗号分隔…
表表达式是一种命名的查询表达式,代表一个有效的关系表.可以像其他表一样,在数据处理语句中使用表表达式.SQL Server支持4种类型的表表达式:派生表(derived table).公用表表达式(CTE,common table expression).视图以及内联表值函数(inline TVF,inline table-valued function). 表表达式并不是物理上真实存在的什么对象,它们是虚拟的.对于表表达式的查询在数据库引擎内部都将转换为对底层对象的查询.使用表表达式的好处通常…
JOIN表运算符对两个输入表进行操作.联接有三种基本类型:交叉联接.内联接和外联接.这三种联接的区别是它们采用的逻辑查询处理步骤各不相同,每种联接都有一套不同的步骤.交叉联接只有一个步骤----笛卡尔积;内联接有两个步骤----笛卡尔积.过滤;外联接有三个步骤----笛卡尔积.过滤.添加外部行. 3.1 交叉联接 SQL SERVER支持交叉联接的两种标准语法:ANSI SQL-92和ANSI SQL-89,推荐使用SQL-92的语法. 3.1.1 ANSI SQL-92语法 SELECT C.…
1.透视转换 透视数据(pivoting)是一种把数据从行的状态旋转为列的状态的处理,在这个过程中可能须要对值进行聚合. 每个透视转换将涉及三个逻辑处理阶段,每个阶段都有相关的元素:分组阶段处理相关的分组或行元素,扩展(spreading)阶段处理相关的扩展或列元素,聚合阶段处理相关的聚合元素和聚合函数.例子中的分组元素是empid,扩展元素为custid,聚合函数为SUM(),聚合元素为qty. (1)使用标准SQL进行透视转换 SELECT empid, SUM(CASE WHEN cust…
最外层查询的结果集会返回给调用者,称为外部查询.内部查询的结果是供外部查询使用的,也称为子查询.子查询可以分成独立子查询和相关子查询两类.独立子查询不依赖于它所属的外部查询,而相关子查询则须依赖它所属的外部查询.子查询的期望值可以是单值的.多值的或以表为值. 1.独立子查询 独立子查询是独立于其外部查询的子查询.在逻辑上,独立子查询在执行外部查询之前只要先执行一次,接着外部查询再使用子查询的结果继续进行查询. 1.1 独立标量子查询 标量子查询是返回单个值的子查询,标量子查询可以出现在外部查询中…
变量 --------------------------------------------------------------------- -- Variables --------------------------------------------------------------------- -- Declare a variable and initialize it with a value DECLARE @i AS INT; ; GO -- Declare and in…
原文:SQL SERVER 数据有CHAR(10),CHAR(13),CHAR(9)隐藏字符 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Giving_bestself/article/details/89515390 SQL SERVER 数据有CHAR(10),CHAR(13),CHAR(9)隐藏字符 char(9) \t 水平制表符 char(10) \r 换行 char(13) \n 回车 EXCEL导入SQL SERVER ,会有\…
Chapter 10 Programmable Objects 声明和赋值一个变量: DECLARE @i AS INT; SET @i = 10; 变量可以让你暂时存一个值进去,然后之后再用,作用域是同一个Batch(批处理). 也可以这么用: DECLARE @firstname AS NVARCHAR(10), @lastname AS NVARCHAR(20); SELECT @firstname = firstname, @lastname = lastname FROM HR.Emp…
T-SQL编程 T-SQL编程与C语言类似,只是语法稍有不同而已,总体思想还是没有变化的.多的就不说了,还是从变量开始. 变量也分为全局变量和局部变量,表示方式稍有不同. 局部变量: 局部变量必须以标记@作为前缀,如@age 局部变量的使用也是先声明,再赋值 全局变量: 全局变量必须以标记@ @作为前缀,如@@version 全局变量由系统定义和维护,我们只能读取,不能修改全局变量的值 局部变量 声明局部变量语法为:declare @变量名 数据类型 例:declare @age int dec…
今天来分享下T-SQL高级编程中的事务.索引.视图,可以和之前的SQL server系列文章结合起来. 一.事务 事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个整体一起向系统提交,要么都执行.要么都不执行,事务是一个不可分割的工作逻辑单元 这样说可能太笼统,看个实例就会清晰很多,比如银行转账业务,相信大家都办理过. create table bank ( customerName ), --顾客姓名 currentMoney money --当前余额 )…
原文出处:https://blogs.msdn.microsoft.com/sqlcat/2013/09/16/top-10-sql-server-integration-services-best-practices/ 译: 多少人听说过“SQL Server Integration Services(译注:以下简称SSIS)不能扩展”的传说?我们要反问的是“你的系统是否有必要扩展到每秒能够处理超过450万行交易记录?”SSIS是可以适应最极端环境的高性能ETL平台.并且正如在SSIS ETL…
https://support.microsoft.com/en-us/kb/2681562 For SQL Server 2008 R2 SQL Server 2008 R2 is not supported on Windows 10 or Windows Server 2016. For SQL Server 2008 SQL Server 2008 is not supported on Windows 10 or Windows Server 2016.…
周五了,祝大家周末愉快. 之前一直在写SQL server的分享,今天再来个T-SQL编程中的存储过程. 存储过程 存储过程(procedure)类似于C语言中的函数,用来执行管理任务或应用复杂的业务规则,存储过程可以带参数,也可以返回结果. 存储过程可以包含数据操纵语句.变量.逻辑 控制语句等,比如:单个select语句,select语句块,select语句与逻辑控制块. 存储过程优点: 执行速度更快 允许模块化程序设计 提高系统安全性 减少网络流通量 存储过程分类 系统存储过程 由系统定义,…
巧妙优化sql server数据库的几种方法,在实际操作中导致查询速度慢的原因有很多,其中最为常见有以下的几种:没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷). I/O吞吐量小,形成了瓶颈效应. 没有创建计算列导致查询不优化SQL Server数据库. 内存不足. 网络速度慢. 查询出的数据量过大(可以采用多次查询,其他的方法降低数据量). 锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷). sp_lock,sp_who,活动的用户查看,原因是读写竞争资源. 返回了…
转自 http://www.cnblogs.com/CareySon/archive/2012/10/11/2719598.html 1.在生产环境中不要出现Select * 这一点我想大家已经是比较熟知了,这样的错误相信会犯的人不会太多.但我这里还是要说一下. 不使用Select *的原因主要不是坊间所流传的将*解析成具体的列需要产生消耗,这点消耗在我看来完全可以忽略不计.更主要的原因来自以下两点: 扩展方面的问题 造成额外的书签查找或是由查找变为扫描 扩展方面的问题是当表中添加一个列时,Se…
周五了,祝大家周末愉快. 之前一直在写SQL server的分享,今天再来个T-SQL编程中的存储过程. 存储过程 存储过程(procedure)类似于C语言中的函数,用来执行管理任务或应用复杂的业务规则,存储过程可以带参数,也可以返回结果. 存储过程可以包含数据操纵语句.变量.逻辑 控制语句等,比如:单个select语句,select语句块,select语句与逻辑控制块. 存储过程优点: 执行速度更快 允许模块化程序设计 提高系统安全性 减少网络流通量 存储过程分类 系统存储过程 由系统定义,…
优点: 一.简单性.视图不仅可以简化用户对数据的理解,也可以简化他们的操作.那些被经常使用的查询可以被定义为视图,从而使用户不必为以后的操作每次都指定全部的条件. 二.安全性.通过视图用户只能查询和修改他们所能见到的数据.数据库中的其他数据则既看不见也取不到.数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上.通过视图,用户可以被限制在数据的不同子集上. 三. 逻辑数据独立性.视图可以使应用程序和数据库表在一定程度上独立.如果没有视图,应用一…
分类: MS SQL SERVER 支持三种类型的游标:Transact_SQL 游标,API 服务器游标和客户游标. (1) Transact_SQL 游标 Transact_SQL 游标是由DECLARE CURSOR 语法定义.主要用在Transact_SQL 脚本.存储过程和触发器中.Transact_SQL 游标主要用在服务器上,由从客户端发送给服务器的Transact_SQL 语句或是批处理.存储过程.触发器中的Transact_SQL 进行管理.Transact_SQL 游标不支持…
优点: 1. 允许模块化程序设计.2.可维护性高,只需创建存储过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次.存储过程可独立于程序源代码而单独修改,而不需要更改.测试以及重新部署程序集.3.运行速度快.存储过程将比T-SQL批代码的执行要快.存储过程是被编译后存放在数据库服务器的过程高速缓存中,当使用时,服务器不必再重新分析和编译它们. 4. 减少网络流量,在网络中要发送的数百行代码,可由一条执行其存储过程代码的一条单独语句就可实现. 5.代码精简一致,一个存储过程可以用于应用程…
1.数据库 use master; exec sp_helpdb 1.1查询数据库大小 1.2查询数据库状态 use msdb select name, user_access_desc, --用户访问模式 state_desc, --数据库状态 recovery_model_desc, --恢复模式 page_verify_option_desc, --页检测选项 log_reuse_wait_desc --日志重用等待 from sys.databases 查询数据库状态 name user…
原文:http://www.cnblogs.com/CareySon/archive/2012/04/12/SQL-Security-SecurableAndPermission.html 在开始阅读本文之前,请确保你已经阅读过上一篇文章,文章地址: 理解SQL Server中的权限体系(上)----主体 简介 在上一篇文章中,我对主体的概念做了全面的阐述.本篇文章接着讲述主体所作用的安全对象以及所对应的权限. 理解安全对象(Securable) 安全对象,是SQL Server 数据库引擎授权…
这样的问题,对于我们这样的初学者来说,无疑是一个接触sql server后第一个艰难的问题,“实时错误'91' 对象变量或with块变量未设置”这句话到底透露出什么信息?直至写此博文,我依然看不出什么,但是却知道引起的一些原因,是它提示的有问题,还是我学的还不足以理解其中的玄机? 不过现在就不要追究太多了,感觉能解决问题就阿弥陀佛了,等以后自然会理解的. 根据我这些天对数据库的接触,基本上每次出现这档子问题,都是因为“数据库未连接成功”导致的,而且作为一个数据库的初学者,不知道别人怎么样,反正我…
优点: 可以在SQL语句中调用,直接使用返回值,从而可以形成复杂的SQL应用. 缺点: 能在函数中使用的语句有严格限制: 不支持create.ALTER.drop等DDL(Data Definition Language)命令: insert.delete.update只能用在临时表上: 不支持动态SQL: 不支持“不确定”的函数,比如常用的getdate.不确定函数是指输入参数相同,返回结果可能不同的函数. 变通办法: 要解决用户函数的种种限制,可以巧妙运用用户函数调用存储过程.比如,需要在函…
好文章, 简明扼要. Storage Top 10 Best Practices http://technet.microsoft.com/en-us/library/cc966534.aspx…
优点: 1.强化约束:强制复杂业务的规则和要求,能实现比check语句更为复杂的约束. 2.跟踪变化:触发器可以侦测数据库内的操作,从而禁止数据库中未经许可的更新和变化. 3.级联运行:侦测数据库内的操作时,可自动地级联影响整个数据库的各项内容. 4.嵌套调用:触发器可以调用一个或多个存储过程.触发器最多可以嵌套32层. 缺点: 1.可移植性差: 2.占用服务器资源,给服务器造成压力: 3.执行速度主要取决于数据库服务器的性能与触发器代码的复杂程度: 4.嵌套调用一旦出现问题,排错困难,而且数据…
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息. 优点: 正确的索引会大大提高数据查询.对结果排序.分组的操作效率. 缺点: 1.存储空间,每个索引都要空间存储2.如果非聚集索引很多,一旦聚集索引改变,那么所有非聚集索引都会跟着变.3.过多索引会导致优化器优化过程需要评估的组合增多.4.每个索引都有统计信息,索引越多统计信息越多.5.更新开销,一旦一个数据改变,并且改变的列比较多,可能会引起好几个索引跟着改变. 分类: 聚集索引>>聚集索引基于数据行…