-
SQLSERVER中关于exists和in的简单分析
In与Exists这两个函数是差不多的,但由于优化方案不同,通常NOTExists要比NOTIN要快,因为NOTEXISTS可以使用结合算法二NOTIN就不行了,而EXISTS则不如IN快,因为这时候IN可能更多的使用结合算法。如图,现在有两个数据集,左边表示#tempTable1,右边表示#tempTable2...
数据库操作教程 2022-09-23 17:32:11 -
SQL比较一个集合是否在另一个集合里存在的方法分享
复制代码代码如下:DECLARE@cINTDECLARE@c2INTSELECT@c=COUNT(1)FROMdbo.SplitToTable('1|2|3|4','|')SELECT@c2=COUNT(1)FROMdbo...
数据库操作教程 2022-09-23 17:28:43 -
SqlServer2012中First_Value函数简单分析
First_Value返回结果集中某列第一条数据的值,跟TOP1效果一样,比较简单的一个函数先贴测试用代码DECLARE@TestDataTABLE(IDINTIDENTITY(1,1),DepartmentVARCHAR(20),LastNameVARCHAR(20),RateFLOAT)INSERTINTO@TestData(Department,LastName,Rate)SELECT'DocumentControl','Arifin',17.7885UNIONALLSELECT'DocumentControl','Norred',16...
数据库操作教程 2022-09-23 17:25:59 -
SQLServer2005创建简单的存储过程--总结分析
最近由于工作需要,简单了解了下SQLServer2005数据库创建简单的在存储过程。一、首先说明如何创建存储过程:CREATEPROCEDUERmy_pro@inputDatevarchar,//声明输入变量@Resultvarchar(255)output//声明输出变量ASdeclare@variable1varchar(255)//声明varchar变量declare@variable2int//声明整形变量BEGINIF...(条件)BEGIN....(执行内容)ENDELSEBEGIN....(执行内容)ENDEND以上就是创建一个简单的存储过程方法...
数据库操作教程 2022-09-23 17:25:54 -
MSSQL数据库排序规则如何更改
1.sp_helpsortSELECTSERVERPROPERTY('Collation')查看你的排序规则.不过你的这个应该和字符集有关.2.更改服务器排序规则更改SQLServer2005实例的默认排序规则的操作可能会比较复杂,包括以下步骤:确保具有重新创建用户数据库及这些数据库中的所有对象所需的全部信息或脚本。使用工具(例如大容量复制)导出所有数据...
数据库操作教程 2022-09-23 17:21:18 -
简单判断MSSQL数据库版本(2000或者2005)
最近的一次对mssql数据库迁移操作中发现一个有趣的事情,可以用一条语句判断MSSQL数据库版本(准确度不高):select*fromsys.servers如果返回如下信息,应该是2000数据库:消息208,级别16,状态1,第1行对象名'sys.servers'无效。反之返回类似如下的信息,则可能为2005数据库1www-hostSQLServerSQLNCLIwww-hostNULLNULLNULL0原因:sys.servers这个对象在2000中没有,在2005中有...
数据库操作教程 2022-09-23 17:21:02 -
基于SQLServer中如何比较两个表的各组数据图解说明
开始前一阵子,在项目中碰到这样一个SQL查询需求,有两个相同结构的表(table_left&table_right),如下:图1.检查表table_left的各组(groupId),是否在表table_right中存在有一组(groupId)数据(data)与它的数据(data)完全相等.如图1.可以看出表table_left和table_right存在两组数据完整相等:图2.分析从上面的两个表,可以知道它们存放的是一组一组的数据;那么,接下来我借助数学集合的列举法和运算进行分析。先通过集合的列举法描述两个表的各组数据:图3.这里只有两种情况,相等和不相等...
数据库操作教程 2022-09-23 17:16:46 -
SQLServer简单模式下误删除堆表记录恢复方法(绕过页眉校验)
首先,我需要强调下,这篇主旨是揭示堆表的删除记录找回的原理,我所考虑的方面并不适用于每个人的每种情况,望大家见谅~很多朋友认为数据库在简单模式下,堆表误删除一条记录,是无法找回的,因为没有日志记录。其实不然,某种意义上是可以找回的,因为堆表在删除记录时,只更改了行偏移,实际数据没有被物理删除,所以利用这点,测试了下恢复数据,果然成功了,但是还有点问题没有研究出结果:如果不关闭页面校验,除了更改偏移量,删除数据时还需要更改页眉,这点还没时间去琢磨,所以恢复数据时还要能推断出页眉的16进制对应关系,有兴趣的朋友可以分享下经验给我...
数据库操作教程 2022-09-23 17:15:45 -
SqlServer2012转换函数的比较(Cast、Convert和Parse)
语法结构:1.Cast语法结构:CAST(expressionASdata_type[(length)])2.Convert语法结构:CONVERT(data_type[(length)],expression[,style])3.Parse语法结构:PARSE(string_valueASdata_type[USINGculture])其中,Parse为SqlServer的新特性expression必须要为被转换类型的字符串形式性能分析:总结:1.Convert和Cast的区别CONVERT是专对SQLServer使用的,使日期与时间值,小数之间转换具有更宽的灵活性。CAST是两种功能中更具ANSI标准的功能,即虽然更具便携性(比如,使用CAST的函数能更容易的被其它数据库软件使用),但功能相对弱一些...
数据库操作教程 2022-09-23 17:08:17 -
浅谈SQLServer中的三种物理连接操作(性能比较)
在SQLServer中,我们所常见的表与表之间的InnerJoin,OuterJoin都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为LoopJoin,MergeJoin,HashJoin这三种物理连接中的一种。理解这三种物理连接是理解在表连接时解决性能问题的基础,下面我来对这三种连接的原理,适用场景进行描述...
数据库操作教程 2022-09-23 17:01:23 -
被遗忘的SQLServer比较运算符谓词
官方的参考文档http://technet.microsoft.com/zh-cn/library/ms187074%28SQL.90%29.aspx他们作用于比较运算符和子查询之间,作用类似Exists、notexists、in、notin以及其他逻辑意义,这些语法同样被SQLServer2000支持但是很少看到有人用它们。复制代码代码如下:setnocountonusetempdbgoif(object_id('t1')isnotnull)droptablet1createtablet1(nint)insertintot1select2unionselect3if(object_id('t2')isnotnull)droptablet2createtablet2(nint)insertintot2select1unionselect2unionselect3unionselect4select*fromt2wheren>all(selectnfromt1)--4select*fromt2wheren>any(selectnfromt1)--3,4--select*fro...
数据库操作教程 2022-09-23 16:58:36 -
一个简单的SQL行列转换语句
一个简单的SQL行列转换Author:eaglet在数据库开发中经常会遇到行列转换的问题,比如下面的问题,部门,员工和员工类型三张表,我们要统计类似这样的列表部门编号部门名称合计正式员工临时员工辞退员工1A3020101这种问题咋一看摸不着头绪,不过把思路理顺后再看,本质就是一个行列转换的问题。下面我结合这个简单的例子来实现行列转换...
数据库操作教程 2022-09-23 16:56:59