随笔分类 - SQL SERVER

微软数据库
摘要: 在进行ETL开发时,数据类型(Data Type)是最基础的,但也容易被忽略,楼主使用的SQL Server 版本是2012,用此博文记录,常用的SSIS数据类型和TSQL数据类型的映射。SSIS的数据类型,是指数据流组件使用的数据类型和变量的数据类型(Data Flow 和 Variable)。 阅读全文
posted @ 2016-10-31 17:34 指尖流淌| 编辑
摘要: 文章继续 桦仔兄的文章将表里的数据批量生成INSERT语句的存储过程 增强版继续增强...本来打算将该内容回复于桦仔兄的文章的下面的,但是不知为何博客园就是不让提交!....所以在这里贴出来吧,算作继续增加文章中解决的:根据查询条件自动生成插入脚本的需求,其实这种需求还是蛮常见的。本文着重解决了文中...阅读全文
posted @ 2015-02-07 21:48 指尖流淌 阅读(1897) | 评论 (3) 编辑
摘要: 前言一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案。简单的举几个应用场景:在线生产库为何突然宕机?数百张数据表为何不翼而飞?刚打好补丁的系统为何屡遭黑手?新添...阅读全文
posted @ 2014-11-22 21:29 指尖流淌 阅读(53536) | 评论 (15) 编辑
摘要: Tempdb系统数据库是一个全局资源,可供连接到SQL Server实例的所有用户使用。存储的内容项:1、用户对象用户对象由用户显示创建。这些对象可以位于用户会话的作用域中,也可以位于创建对象所用例程的作用域中。例程可以是存储过程、触发器或用户自定义函数。用户对象可以是一下项内容之一:用户定义的表和...阅读全文
posted @ 2014-11-20 15:56 指尖流淌 阅读(1566) | 评论 (0) 编辑
摘要: 前言 本篇主要是上一篇文章的补充篇,上一篇我们介绍了SQL Server服务启动过程所遇到的一些问题和解决方法,可点击查看,我们此篇主要介绍的是SQL Server启动过程中关于用户数据库加载的流程,并且根据加载过程中所遇到的一系列问题提供解决方案。 其实SQL Server作为微软的一款优秀RDB阅读全文
posted @ 2014-11-17 21:26 指尖流淌 阅读(9604) | 评论 (8) 编辑
摘要: 目前SQL Server数据库作为微软一款优秀的RDBMS,其本身启动的时候是很少出问题的,我们在平时用的时候,很少关注起启动过程,或者很少了解其底层运行过程,大部分的过程只关注其内部的表、存储过程、视图、函数等一系列应用方式,而当有一天它运行的正常的时候突然启动不起来了,这时候就束手无策了,能做的...阅读全文
posted @ 2014-11-10 15:57 指尖流淌 阅读(136140) | 评论 (56) 编辑
摘要: master数据库master作为数据库的主要数据库,记录着SQL Server系统的所有系统级信息,例如登录用户、系统配置设置、端点和凭证以及访问其他数据服务器所需要的信息。master数据库还记录着启动服务器实例所需要的初始化信息,每个其它数据库的主文件位置。master数据库是SQL Serv...阅读全文
posted @ 2014-11-09 21:12 指尖流淌 阅读(1196) | 评论 (1) 编辑
摘要: 作为数据库管理员最最痛苦的莫过于,当数据库宕机的时候需要找备份,但在这个时候突然发现备份文件也是坏的,这就意味着数据会丢失,为此可能会丢掉职位,饭碗不保,所以为此,我们一定要保证好备份的完整性,一般发生这种情况的原因莫过于一下几种:1、备份文件和数据库放在同一个(或一组)的物理磁盘上。磁盘出现故障,...阅读全文
posted @ 2014-11-09 11:20 指尖流淌 阅读(841) | 评论 (0) 编辑
摘要: SQL Server允许用户设置数据库初始值和最大值,可以通过自动增长或者自动收缩进行配置。通过这些配置,我们可以防止数据库空间问题而导致的应用程序修改失败或者SQL Server磁盘空间耗尽的事情发生。一般来讲,如果数据库不是很忙,默认的设置为自动增长,这种方式能够满足大部分的需求。但是在大量并发...阅读全文
posted @ 2014-11-07 17:20 指尖流淌 阅读(6761) | 评论 (2) 编辑
摘要: 本篇是继上篇的备份方式,本篇介绍的是还原方案,在SQL Server在2005以上现有的还原方案一般分为以下4个级别的数据还原:1、数据库完整还原级别:还原和恢复整个数据库。数据库在还原和恢复操作期间会处于离线状态2、数据文件级别还原和恢复一个数据文件或一组文件。在文件还原过程中,包含相应文件的文件...阅读全文
posted @ 2014-11-07 10:24 指尖流淌 阅读(992) | 评论 (0) 编辑
摘要: 数据库管理员有时候需要控制文件的大小,可能选择收缩文件,或者把某些数据文件情况以便从数据库里删除。这时候我们就要使用到DBCC SHRINKFILE命令,此命令的脚本为:DBCC SHRINKFILE ( { file_name | file_id } { [ , EMPTYFILE ...阅读全文
posted @ 2014-11-05 12:50 指尖流淌 阅读(2897) | 评论 (0) 编辑
摘要: 数据库日志用于记录所有的事务以及每个事务对数据库所做的修改。这样做的目的就是为了提高数据库的整体性能,SQL Server检索数据时,将数据页读入缓冲区高速缓存。数据修改不是直接在磁盘上行进行,而是修改高速缓存中的页副本。直到数据库中出现检查点(CheckPoint)、或者比如将修改写入磁盘才能使...阅读全文
posted @ 2014-11-04 20:51 指尖流淌 阅读(1166) | 评论 (2) 编辑
摘要: 1、表和索引存储结构在SQL Server2005以前,一个表格是以一个B树或者一个堆(heap)存放的。每个B树或者堆,在sysindexes里面都有一条记录相对应。SQL Server2005以后,引入了分区表的概念(Table Partition),在存储组织上,现有的分区基本上替代了原来表格...阅读全文
posted @ 2014-11-04 16:25 指尖流淌 阅读(848) | 评论 (0) 编辑
摘要: 1、文件分配方式以及文件空间检查方法最常用的检查数据文件和表大小的命令就是:sp_spaceused此命令有三个缺陷:1、无法直观的看出每个数据文件和日志文件的使用情况。2、这个存储过程依赖SQL Server存储在一些系统视图里的空间使用统计信息计算出的结果,如果没有更新空间统计信息,比如刚刚发生...阅读全文
posted @ 2014-11-03 16:13 指尖流淌 阅读(1911) | 评论 (5) 编辑
摘要: 数据备份一直被认为数据库的生命,也就是一个DBA所要掌握的主要技能之一,本篇就是介绍SQL Server备份原则,SQL Server数据库分为数据文件和日志文件。为了使得数据库能够恢复一致点,备份不仅需要拷贝数据数据文件里的内容,还要拷贝日志文件里的内容。那么根据每次备份的目标不同,我们可以将备份...阅读全文
posted @ 2014-10-31 21:00 指尖流淌 阅读(1631) | 评论 (0) 编辑
摘要: ---恢复内容开始---数据库的恢复模式是数据库遭到破坏时还原数据库中数据的数据存储方式,它与可用性、性能、磁盘空间等因素相关。每一种恢复模式都按照不同的方式维护数据库的数据和日志。系统提供了3种数据库的恢复模式:1、完整恢复模式2、大容量日志记录的恢复模式3、简单恢复模式 完整恢复模式是最高等级的数据库恢复模式。在完整恢复模式中,对数据库的所有操作都记录在数据库的事务日志中。即使那些大容量数据库操作和创建索引的操作,也就记录在数据库的事务日志中。当数据库遭到破坏之后,可以使用该数据库的事务日志迅速还原数据库。 在完整恢复模式中,由于事务日志记录了数据库的所有变化,所以可以使用事务日志将数据库阅读全文
posted @ 2013-03-11 23:25 指尖流淌 阅读(624) | 评论 (0) 编辑
摘要: 一、存储过程中使用事务的简单语法 在存储过程中使用事务时非常重要,使用数据库可以保持数据的关联完整性,在SQL Server存储过程中使用事务也很简单,举个例子:Create Procedure MyProcedure( @Param1 nvarchar(10), @Param2 nvarchar(10))AS Begin Set NOCUNT ON; Set XACT_ABORT on; Begin Tran Delete from table1 ...阅读全文
posted @ 2013-01-23 22:29 指尖流淌 阅读(1597) | 评论 (0) 编辑
摘要: 当我们数据量比较大的时候,我们需要将大型表拆分为多个较小的表,则只访问部门数据的查询就可以更快的运行,基本原理就是,因为要扫描的数据变的更小。维护任务(例如,重新生成索引或备份表)也可以更快的运行。 我们可以再不通过将表物理放置在多个磁盘驱动器上来拆分表的情况下获取分区。如果将某个表放置在一个物理驱动器上,将相关表放置在另一个驱动器上,则可以提高查询性能,因为当运行涉及表间连接的查询时,多个磁盘头同时读取数据。可以使用SQL Server文件组来指定放置表的磁盘。 对于分区的方式,基本就三种方式:硬件分区、水平分区、垂直分区。相关方案可以参考SQL联机丛书 这里我们介绍分区表的具体实战方法:.阅读全文
posted @ 2012-10-28 16:49 指尖流淌 阅读(15974) | 评论 (9) 编辑
摘要: 先声明文章非原创,摘自博客园:http://www.cnblogs.com/CareySon/archive/2012/03/06/2381582.html简介 在SQL Server中,数据是按页进行存放的。而为表加上聚集索引后,SQL Server对于数据的查找就是按照聚集索引的列作为关键字进行了。因此对于聚集索引的选择对性能的影响就变的十分重要了。本文旨在从性能角度来谈聚集索引的选择,但这仅仅是从性能方面考虑。对于有特殊业务要求的表,则需要按实际情况进行选择。一、聚集索引所在列或列的组合最好是唯一的 这个原因需要从数据的存放原理来谈。在SQL Server中,数据的存放方式并不是以行(R阅读全文
posted @ 2012-05-16 23:24 指尖流淌 阅读(333) | 评论 (0) 编辑
摘要: --sql server 2000SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表说明 = case when a.colorder=1 then isnull(f.value,'') else '' end, 字段序号 = a.colorder, 字段名 = a.name, 标识 = case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' e阅读全文
posted @ 2012-03-24 23:01 指尖流淌 阅读(432) | 评论 (0) 编辑
摘要: 为了保证原创权益,首先声明,此文章是转自博客园宋沄剑园友的文章,纯属个人学习之用,原文章地址为:http://www.cnblogs.com/CareySon/archive/2011/12/26/2301597.html简介 在SQL Server中,数据库在硬盘上的存储方式和普通文件在windows中的存储方式没有什么不同,仅仅是几个文件而已,SQL Server通过管理逻辑上的文件组的方式管理文件,理解文件和文件组的概念对更好的配置数据库来说是基本的知识理解文件和文件组 在SQL Server中,通过文件组这个逻辑对象对存放数据的文件进行管理。 先看一张图:我们看到的逻辑数据库由一个或者阅读全文
posted @ 2012-02-28 22:58 指尖流淌 阅读(532) | 评论 (0) 编辑
摘要: ACID,是指在可靠数据库管理系统(DBMS)中,事务(transaction)所应该具有的四个特性,原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。 原子性(atomicity) 原子性意味着数据库中的事务执行是作为原子,及不可再分,简单一句话:要么执行,要么不执行。 在SQL Server中,每一个单独的语句都可以看做是默认包含的一个事务之中:所以,每一个语句本身具有原子性,要么全部执行,要么全部不执行,不会有中间状态: 上面说了,每一条T-SQL语句都可以看做是默认包裹在一个事务之中的,SQL Server对.阅读全文
posted @ 2012-02-15 14:26 指尖流淌 阅读(1032) | 评论 (0) 编辑
摘要: 在SQL Server中,非聚集索引其实可以看做是一个含有聚集索引的表,但相比实际的表而言,非聚集索引中所存储的表的列数窄很多,因为非聚集索引仅仅包含原表中非聚集索引的列和指向实际物理表的指针。 并且,对于非聚集索引表来说,其中所存放的的列是按照聚集索引来存放的,所以查找速度要快了很多。但是对于性能的榨取来说,SQL Server总是竭尽所能,假如仅仅是通过索引就可以在B树的叶子节点上获取所需数据,而不再通过叶子节点上的指针去查找实际的物理表,那性能的提升将会更胜一筹。非聚集索引的覆盖 正如前面简洁所说。非聚集索引其实可以看作一个聚集索引表,当这个非聚集索引中包含了查询所需要的所有信息时,则.阅读全文
posted @ 2012-02-05 20:59 指尖流淌 阅读(452) | 评论 (0) 编辑
摘要: 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能。但索引可以在大多数情况下大大提升查询性能高。在OLAP中尤其明显,要完全理解索引的概念,需要了解大量原理性的知识,包括B树,堆,数据库页,区,填充因子,碎片,文件组等等一系列相关知识。 索引时对数据库中表中一列和多列的值进行排序的一种结构,使用索引可以快速访问数据表中特定的信息。 精简来说,索引时一种结构,在SQL Server中,索引和表(这里值得是加了聚集索引的表)的存储结构是一样的,都是B树,B树是一种用于查找平衡多叉树,理解B树的概念如下图: 理解为什么使用B树作为索.阅读全文
posted @ 2012-02-03 17:03 指尖流淌 阅读(7069) | 评论 (6) 编辑
摘要: 最近遇到一个情况,需要在内网系统中出一个统计报表。需要根据不同条件使用多个group by语句,需要将所有聚合的数据进行union操作来完成不同维度的统计查看。 知道发现了在SQL Server 2008之后引入了grouping sets这个对于group by的增强后,上面的需求实现起来就简单的多,下面我们用AdventureWork中的表作为demo来解释一下grouping sets. 假设我现在需要两个维度查询我的销售额度,查询T-SQL如下:而使用SQL Server 2008之后新增的grouping sets语句,仅仅需要这样写:值得注意的是,虽然上面使用grouping s.阅读全文
posted @ 2012-02-02 13:54 指尖流淌 阅读(432) | 评论 (0) 编辑
摘要: 对于Select查询语句来说,通常情况下,为了是T-SQL代码更加简洁和刻度,在一个查询中应用另外的结果集都是通过视图而不是查询进行分解的,但是,视图作为系统对象存储在数据库中,那对于结果集仅仅需要在存储过程或是用户自定义函数中使用一次的时候,使用视图就显得有限奢侈了。 公用表达式(Common Table Expression)是SQL Server2005版本之后引入的一个特性,.CTE可以看做是一个临时的结果集,可以再接下来的select,insert,update,delete,merge语句中被多次使用,使用公用表达式可以让语句更加清晰简练。 初次之外,根据微软对CTE好处的描述,.阅读全文
posted @ 2012-02-02 13:31 指尖流淌 阅读(367) | 评论 (0) 编辑
摘要: 视图可以看做定义在SQL Server上的虚拟表,视图正如其名字的含义一样,是另一种查看数据的入口,常规视图本身并不存储实际的数据,而仅仅存储一个select语句和所涉及的表的关系。 通过视图,客户端不再需要知道底层table的表结构及其之间的关系,视图提供了一个统一访问的数据的接口。视图的优点 1、视图隐藏了底层的表的结构,简化了数据访问的操作 2、因为隐藏了底层的表结构,所以大大加强了安全性,用户只能看到视图提供的数据 3、使用了视图,方便了权限管理,让用户对视图的权限而不是度底层表的权限进一步加强了安全性4、提供了一个用户访问的接口,当底层表改变后,改变视图语句来进行适应,使已经建立在.阅读全文
posted @ 2012-02-01 18:26 指尖流淌 阅读(1315) | 评论 (0) 编辑
摘要: 在关系数据库中,我们对于查询的思考是面向集合的,而游标打破了这一规则,游标使得我们思考方式变为逐行进行。 正常面向集合的思维方式是:而对于游标来说:这也是为什么游标是邪恶的,它会使开发人员变懒,懒得去想面向集合的查询方式实现某些功能。同样的,在性能上,游标会吃更多的内存,减少可用的并发,占用宽带,锁定资源,当然还有更多的代码量....从游标对数据库的读取方式来说,不难看出游标为什么占有更多资源了,打个比方:当你从ATM取钱的时候,是一次去1000效率更高呢,还是取10次100?游标的好处:1、现存系统有一些游标,我们查询必须通过游标来实现2、作为一个备用方式,当我们穷尽了while循环,子查.阅读全文
posted @ 2012-02-01 15:19 指尖流淌 阅读(430) | 评论 (0) 编辑
摘要: 关系数据库的起源起源于数学中的集合概念,所以集合和集合之间,也同样继承了数学集合之间的运算,而对于在关系数据库中,常常用于两个数据库中并没有直接的关系数据库的”关系“,比如外键,但两个数据集会有间接的关系,比如两届比赛,参加比赛人员集合之间会有间接的关系。 在T-SQL中,关系运算实际上可以分为四类,首先看我们举例子用的表:这里的例子表分别为两个不同会以参加的人员记录,分别为Meeting1和Meeting2如下:关系运算的具体可以分为以下四类:1.A∩B,既是所求数据集既在A中,又在B中 在实例表中,实际的例子为即参加第一个会以,有参加第二个会以人的集合,如下图:2.A∪B,既所求数据在数.阅读全文
posted @ 2012-01-31 17:47 指尖流淌 阅读(384) | 评论 (0) 编辑
摘要: 变量对于某一种语言是必不可少的一部分,当然对于T-SQL来讲也是一样,在简单查询中,但是对于复杂的查询或存储过程中,变量都是必不可少的一部分。和高级语言一样,在T-SQL中,变量按生存范围可以分为全局变量(Global Variable)和局部变量(Local Variable)1、全局变量时有系统定义的,在整个SQL Server实例内都能访问到的变量,全部变量以@@作为第一个字符,用户只能访问,不能赋值。2、局部变量由用户定义,生命周期只在一个批处理内有效。局部变量以@作为第一个字符,由用户自己定义和赋值。一个简单的例子如下: 因为全局变量仅仅是用于读取系统的一些参数,具体每个全局变量所.阅读全文
posted @ 2012-01-31 16:34 指尖流淌 阅读(575) | 评论 (0) 编辑
摘要: 和其他高级语言一样,T-SQL中也有用于控制流程的语句。T-SQL中的流程控制语句进一步扩展了T-SQL的力量....使得大部分业务逻辑都可以用在数据库层里面进行。但很多对于T-SQL中的流程控制语句并没有系统的了解 在没有流程控制语句的情况下,T-SQL语句是按照从上到下的顺序逐个执行;使用流程控制语句可以让开发人员可以基于某些逻辑进行选择性的跳转,实现了类似高级语言的跳转结构流程控制语句的使用范围和Go关键字 流程控制语句只能在单个批处理段(Batch),用户自定义函数和存储过程中使用。不能跨多个批处理段或者用户自定义函数和存储过程。 一个批处理段是有一个或者多个语句组成的一个批处理,之.阅读全文
posted @ 2012-01-31 15:28 指尖流淌 阅读(494) | 评论 (0) 编辑
摘要: T-SQL不仅仅是一个用于查询数据库的语言,还是一个可以对数据进行操作的语言。基于列的case表达式就是其中一种,不像其他查询语言可以互相替代(比如用子查询实现的查询也可以使用join来实现),case表达式在控制基于列的逻辑表达式大部分是无法替代的。 基于列的逻辑表达式,其实就是case表达式,可以用在select,update,delete,set以及in,where,order by和having子句之后。由于这里讲的是T-SQL查询,所以只说到case表达式在select子句和order by子句中的使用。 case表达式实现的功能类似编程语言中的if....then....else.阅读全文
posted @ 2012-01-31 12:29 指尖流淌 阅读(285) | 评论 (0) 编辑
摘要: SQL有着非常强大且灵活的查询方式,而多表连接操作往往也可以用子查询进行替代,子查询本质上是嵌套进其他select,update,insert,delete语句的一个被限制的select语句,在子查询中,只有下面几个子句可以使用1、select子句(必须)2、from子句(必须)3、where子句(可选)4、group by(可选)5、having(可选)6、order by(只有在top关键字被使用时才可用)子查询可以嵌套在其他子查询中,这个嵌套最多可以达到32层。子查询也叫内部查询(inner query)或者内部选择(innder select),而包含子查询的查询语句也叫外部查询(o.阅读全文
posted @ 2012-01-29 22:41 指尖流淌 阅读(11083) | 评论 (0) 编辑
摘要: sql server 2008提供了一个增强的Sql命令Merge,用法参看MSDN。能根据两张表数据的不同,对两张表进行数据执行插入,更新或删除等操作,一般用在数据的抽取,例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以对两张表数据进行同步。看例子,假如,有一总产品列表,一个分店产品列表,需要从分店添加产品时更新产品列表。总产品表,分店产品表结构完全一致:if OBJECT_ID('Demo_AllProducts')is not null drop table Demo_AllProductsgoCreate table Demo_AllProducts(阅读全文
posted @ 2012-01-29 18:35 指尖流淌 阅读(224) | 评论 (0) 编辑
摘要: 在SQL Server 2008中新增功能,可以使用单个insert命令插入多行举例:CREATE TABLE [dbo].[test2]( [编号] [int] NULL, [姓名] [varchar](20) NULL, [一季度] [int] NULL, [二季度] [int] NULL, [三季度] [int] NULL, [四季度] [int] NULL) insert into test2(编号,姓名,一季度,二季度,三季度,四季度)values(1,'a1',1,1,1,1),(2,'a2',2,2,2,2),(2,'a3',3,3阅读全文
posted @ 2012-01-29 17:33 指尖流淌 阅读(187) | 评论 (0) 编辑
摘要: SQL Server查询1、查询的时候应该尽量按照复合索引中的顺序来做条件查询;2、如果在程序中有for或者是freach,在存储过程中又有if exist,那就要看是否可以再表中加入复合索引了,if not exists可以转换为if exists来使用索引;3、在查询尽量少使用*或者全表字段来查询。第一,返回的数据集比较大;第二,产生更多的IO操作;第三,会使用到Bookmarklookup的查询计划,性能有所下降;如果能使用覆盖索引来查询是最理想的。4、下面关于查询的性能比较1、返回行数较多:索引覆盖>聚集索引>表扫描>堆积的非聚集索引>聚集的非聚集索引2、返回行阅读全文
posted @ 2012-01-29 17:02 指尖流淌 阅读(201) | 评论 (0) 编辑
摘要: 游标1、尽量少用游标,如果不得不用,那就要看是否可以对逻辑进行整合,分出不同的情况,让在一部分情况是使用Insert select的方式来一次性插入(注意下例中的业务分析,这个是关键)2、如果存储过程花费的时间比较长,而且无法避免使用游标,那我们就要分析系统的业务,看大部分的情况是走哪条路的,那我们对大部分会发生的事做优化,也是可以达到我们优化的目的的;(比如IXC发起的时候在insert到tb Todo表中都要先判断tbTodo是否存在数据的,那把部分情况是不存在的,那我们就一次性判断count,如果没有就使用Insert select一次性插入到tb Todo)转自http://gaiza阅读全文
posted @ 2012-01-20 21:09 指尖流淌 阅读(172) | 评论 (0) 编辑
摘要: 1、查询的时候尽量按照复合索引的顺序来做条件查询,(比如IXC中spInterActiveInstance_GetByIDToStat条件and ProcessState<>99的位置)2、如果在程序中有For或者Foreach,在存储过程中又有If Exists,那么就要看是否可以再表中加入复合索引了,If Not Exists可以转换为If Exists来使用索引;3、在查询中尽量少使用*或者全表字段来查询数据。第一、返回的数据集比较大;第二,产生更多的IO操作,第三,会使得Bookmarklookup的查询计划,性能有所下降;如果能使用到覆盖索引来查询是最理想的。4、下面关于阅读全文
posted @ 2012-01-20 21:00 指尖流淌 阅读(184) | 评论 (0) 编辑
摘要: 索引1、复合索引(where a and b)如果没有对a和a做单一索引,查询的时间为a;如果对a做单一索引,查询时间为b;如果对b做单一索引,查询时间为c;如果对a,b做复合索引,查询时间为d,那么时间的比较就应该是a>b=c>d;(比如spMsgreader_Distribute中使用where inforID=@infoID and UserID=@userID,插入7000次的时候就明显的看到性能了;(8秒:1:50秒)注意升序和降序的区别?)2、当高选择性的非聚集索引达到5%的选择性时,该索引时非常有用的3、关于复合索引属性列位置问题,应该把高选择性的列放在坐左边(以前就阅读全文
posted @ 2012-01-20 20:45 指尖流淌 阅读(236) | 评论 (2) 编辑
摘要: create table site_user ( id int IDENTITY(1,1) PRIMARY KEY, [name] varchar(20), code varchar(20), date datetime )用索引实现数据优化,一个基本的了解,参照http://www.cnblogs.com/gaobanana/archive/2012/01/16/2323967.html1、建表create table site_user ( id int IDENTITY(1,1) PRIMARY KEY, [name] varchar(20), c...阅读全文
posted @ 2012-01-18 22:46 指尖流淌 阅读(295) | 评论 (0) 编辑
摘要: 锁的分类锁的类别有两种分法:1、从数据库系统的角度看:分为独占锁(即排它锁),共享锁和更新锁MS SQL Server使用一下资源锁形式锁模式描述共享(S)用于不更改或不更新数据的操作(只读操作),如select更新(U)用于可更新的资源中,。防止当多个回话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。排它(X)用于数据库修改操作,例如Insert、update或delete。确保不会同时统一资源多重更新。意向锁,用于建立锁的层次结构,意向锁的类型为:意向共享(IS)、意向排他(IX)以及意向排他共享(SIX)。架构锁 在执行依赖于表架构的操作时使用,架构所的类型为:架构修改(S阅读全文
posted @ 2012-01-14 23:53 指尖流淌 阅读(241) | 评论 (0) 编辑
摘要: /* 连接数 */select connectnum=count(distinct net_address)-1 from master..sysprocesses/* 返回一组有关计算机和有关 SQL Server 可用资源及其已占用资源的有用杂项信息 */select * from sys.dm_os_sys_info/* 从操作系统返回内存信息 */select * from sys.dm_os_sys_memory/* 返回有关调用进程的虚拟地址空间中的页范围的信息 */select * from sys.dm_os_virtual_address_dump/* 命令提供了SQL Se阅读全文
posted @ 2012-01-14 23:36 指尖流淌 阅读(496) | 评论 (0) 编辑
摘要: select row_number() over(排序条件,必不可少),字段名(也可以是*) from 表名select row_number() over(order by id asc),id,name from table1我们可以应用此进行简单的分页。例如:select * from test我们查询3行数据 SELECT A.* FROM ( SELECT ROW_NUMBER() over (order by [编号] desc) as RowNumber,* FROM test ) A WHERE RowNumber > 2 and R...阅读全文
posted @ 2012-01-14 23:25 指尖流淌 阅读(5230) | 评论 (0) 编辑
摘要: 在做报表时,经常需要将数据表中的行转列,或者列转行,如果不知道方法,你会觉得通过SQL语句来实现非常难。这里,我将使用Pivot和unpivot来实现看似复杂的功能。这个功能在SQL2005及以上版本才有。MSDN解释:可以使用PIVOT和UNPIVOT关系运算符将表值表达式更改为另一个表。PIVOT通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出所需的任何其余列值执行聚合。Unpivot与pivot执行相反的操作,将表值表达式的列转换为列值,但是在实际应用中,有些聚合之后的数据很难进行拆分。所以,unpivot并非pivot的逆过程。pivot提供的语法阅读全文
posted @ 2012-01-13 12:18 指尖流淌 阅读(352) | 评论 (0) 编辑
摘要: 众所周知的几个结果集集合操作命令,今天详细地测试了一下,发现一些问题,记录备考。假设我们有一个表Student,包括以下字段与数据:drop table student; create table student(id int primary key,name nvarchar2(50) not null,score number not null);录入数据insert into student values(1,'Aaron',78);insert into student values(2,'Bill',76);insert into student va阅读全文
posted @ 2012-01-12 12:42 指尖流淌 阅读(279) | 评论 (0) 编辑
摘要: case具有两种格式。简单case函数和case搜索函数,也就是说既能实现多条件分析,又能实现语句搜索。点滴---简单的case函数,即多条件分析case sex when '1' then '男' when '0' then '女' else '其他' end---case 查询功能case when sex='1' then '男' when sex='0' then '女' else '其他' end 这两种方式,可以实现相同的功阅读全文
posted @ 2012-01-12 10:38 指尖流淌 阅读(2921) | 评论 (0) 编辑
摘要: 文章转自:http://www.cnblogs.com/CareySon/archive/2011/05/18/2049727.html引言在前两篇文章中,对于单表查询和多表查询的概念做出了详细的介绍,在本篇文章中会主要介绍聚合函数的使用和数据的分组.简介简单的说,聚合函数是按照一定的规则将多行(Row)数据汇总成一行的函数。对数据进行汇总后,可以按照特定的列(column)将所汇总的其他列进行分组(Group by),并可以在再次给定条件进行筛选(Having).聚合函数将多行数据进行汇总的概念可以简单用下图解释:简单聚合函数简单聚合函数是那些拥有很直观将多行(Row)汇总为一行(Row)计阅读全文
posted @ 2012-01-02 22:57 指尖流淌 阅读(270) | 评论 (0) 编辑
摘要: 本篇文章中,主要说明SQL中各种连接以及使用范围,以及更进一步的理解关系代数法和关系演算法对在同一条件查询的不同思路。多表连接简介 在关系数据库中,一个查询往往会涉及多个表,因为很少有数据库只有一张表,而如果大多查询只涉及到一个表的,那么那个表也往往低于第三范式,存在大量冗余和异常。 因为连接(join)就是一种把多个表连接成一个表的重要手段。比如简单两个表连接学生表和班级表,如图:进行连接后如图:笛卡尔积 迪科尔积在SQL中的实现方式即使交叉连接。所有的连接方式都会先生成一个临时笛卡尔积表,笛卡尔积是关系代数里面的一个概念,表示两个表中的每一行数据任意组合,上图中两个表连接即为笛卡尔积(交.阅读全文
posted @ 2012-01-02 18:36 指尖流淌 阅读(457) | 评论 (0) 编辑
摘要: SQL语言是一门简单易学却又功能强大的语言,它能让你快速上手并写出比较复杂的查询语句。但对于大多数开发者来说,使用SQL查询数据库并没有一个抽象的过程和一个合理的步骤,这很可能会使在写一些特定的SQL查询语言来解决特定问题时被"卡"住,本系列文章主要讲述SQL查询时一些基本理论,以及写查询语句的抽象思路。sql查询简介 SQL语言起源于1970年E.J.Codd发表的关系数据库理论,所以SQL是为了关系数据库服务的。而对于SQL查询是指从数据库中取得数据的子集,这句话貌似听着有些晦涩是吧,下面通过几张图简单的说一下: 假如一个数据库中只有一个表,再假如所有数据如下图而对于子阅读全文
posted @ 2012-01-01 23:04 指尖流淌 阅读(407) | 评论 (0) 编辑
摘要: 文章转自:http://www.cnblogs.com/CareySon/archive/2010/02/16/1668803.html简介: 数据库范式在数据库设计中的地位一直很暧昧,教科书中对于范式倒是都给出了学术性的定义,但在实际引用中范式的应用却不甚乐观,这篇文章会用简单的语言和一个简单的数据库DEMO将一个不符合范式的数据库一步步动第一范式实现到第四范式。范式的目标: 应用数据库范式可以带来许多好处的,但是重要的好处归结为三点: 1、减少数据冗余(这是主要的好处,其他好处都是由此而附带的) 2、消除异常(插入异常、更新异常、删除异常) 3、让数据组织的更加和谐 但剑是双刃的,应用数据阅读全文
posted @ 2012-01-01 20:23 指尖流淌 阅读(300) | 评论 (0) 编辑
摘要: 索引的定义SQL Server的索引值是对数据库中一个或者多个列的值进行排序的结构。索引几个特性:1)索引可以提高数据的访问速度只有在适当的位置建立索引,就能大幅度提高,实际上,您可以把索引理解为一种特殊目录。微软的SQL SERVER提供了两种索引:聚集索引和非聚集索引。 其实,我们的汉语字典的正文本身就是一个聚集索引,比如,我们要查"安"字,就会很自然的翻开字典的前几页,因为"安"的拼音是"an",而按照拼音排序汉字的字典是以英文字母"a"开头并以"z"结尾的,那么"安"阅读全文
posted @ 2011-12-30 22:56 指尖流淌 阅读(513) | 评论 (0) 编辑
摘要: 这个存储过程用来数据的分页,里面构造的一个函数实现这个功能;if object_id('fenye','p') is not null/*判断是否存在fenye这个存储过程*/ drop proc fenye GO CREATE PROCEDURE [dbo].[fenye] @currentpage int=1,/*记录当前的页数,初始值为1*/@count int=10, /*每一个页面所显示的数据量*/@tablename varchar(20),/*所查询的表的名字*/@colunm varchar(20) /*表中查询的字段*/AS declare @阅读全文
posted @ 2011-11-16 09:18 指尖流淌 阅读(276) | 评论 (0) 编辑
摘要: 转载于http://www.cnblogs.com/Bytime/archive/2011/10/27/2226004.html下面是全部代码:class SqliteHelper { private string connStr = ""; public SqliteHelper(string dbName, bool isFullPath) { if (isFullPath) { connStr = @"Data Source=" + dbName + ";Initial Catalog=sqlite;Integrated S...阅读全文
posted @ 2011-10-28 08:33 指尖流淌 阅读(642) | 评论 (0) 编辑