随笔分类 - [10]SQLSERVER
SQL Server:获得用户最新或前n条订单的几种SQL语句
摘要:场景:有一张用户表,一个订单表,要求获得一个用户对应的最新的一条订单信息。 实现以上要求,我们可以用以下几种方式,但是效率却相差很远。 首先我们在Order表中,创建一个索引: CREATEUNIQUEINDEXidx_eid_odD_oidDONOrders(EmployeeID,OrderDateDESC,OrderIDDESC) 多个OrderId是为了在OrderData相同的情况下,按订单号倒序,是个辅助属性。 方法1: SELECTEmployeeID,OrderIDFROMOrdersASO1WHEREOrderID=(SELECTTOP(1)OrderIDFROMOrders.
阅读全文
SQL Server:APPLY表运算符
摘要:新增的APPLY表运算符把右表表达式应用到左表表达式中的每一行。它不像JOIN那样先计算那个表表达式都可以,APPLY必选先逻辑地计算左表达式。这种计算输入的逻辑顺序允许吧右表达式关联到左表表达式。APPLY有两种形式,一个是OUTER APPLY,一个是CROSS APPLY,区别在于指定OUTER,意味着结果集中将包含使右表表达式为空的左表表达式中的行,而指定CROSS,则相反,结果集中不包含使右表表达式为空的左表表达式中的行。
阅读全文
SQL Server:查询当前服务器有多少连接请求
摘要:有时DBA需要检查当前服务器有多少连接请求,以及连接请求的登录名,客户端版本,主机名,程序名等等之类的信息,我们就可以对服务器的连接状况有所了解,防止不明用户使用。 SQL Server本身提供了这么一个DMV来返回这些信息,它就是sys.dm_exec_sessions 。 比如在我的机器上做一下查询: SELECT*FROMsys.dm_exec_sessionsWHEREhost_nameISNOTNULL 如图: 我们也可以根据登录名来分组: SELECTlogin_name,COUNT(session_id)ASsession_countFROMsys.dm_exec_sessio.
阅读全文
SQL Server:关于Null的一些事
摘要:我们设计表时,在字段是否允许Null值这个问题上,有时会争论一番。数据库牛人Kalen Delaney则给了一下建议
1,永远不要在用户表中允许NULL值
2,在用户表定义中包含一个NOT NULL限制
3,不要依赖数据库属性来控制NULL值的行为
阅读全文
SQL Server:在Management Studio中使用Web浏览器
摘要:在SQL Server Management Studio中使用Web浏览器
阅读全文
SQL Server:把CSV文件导入到SQL Server表中
摘要:有时候我们可能会把CSV中的数据导入到某个数据库的表中,比如做报表分析的时候。 对于这个问题,我想一点也难不倒程序人员吧!但是要是SQL Server能够完成这个任务,岂不是更好! 对,SQL Server确实有这个功能。 首先先让我们看一下CSV文件,该文件保存在我的D:盘下,名为csv.txt,内容是: 现在就是SQL Server的关键部分了; 我们使用的是SQL...
阅读全文
SQL Server:使用一个语句块插入多条记录
摘要: 我们在日常操作中,免不了对数据库的某张表,一次性的要插入多条记录,但是首先想到的就是复制,粘帖N多重复的INSERT INTO 语句,万一某一个少了一个分号,或多个逗号之类的,产生错误,要找起来可就费尽了,既浪费时间,又耽误工作。 除了上面所说的方法外,其实还有二中方法,相比较起来要比之前那个要简洁...
阅读全文
SQL Server:在事务中回滚TRUNCATE操作
摘要:我们一般都认为TRUNCATE是一种不可回滚的操作,它会删除表中的所有数据以及重置Identity列。 如果你在事务中进行TRUNCATE操作,就能回滚。反之,它就不会从日志文件文件恢复数据。它不会在日志文件中记录删除的那些数据,它只在日志中记录数据页的单元分配。 下面的例子就能解释上面的所说的. &...
阅读全文
SQL Server:移动系统数据库
摘要:说到这个问题,基本上有人就会想到三个问题: 1,什么是系统数据? 2,为什么要移动系统数据库? 3,移动系统数据库我们可以用附加和分离,为什么还要单独拿出来说呢? 对于这三个问题我一个一个讲吧,也算是自己做个笔记。 1,什么是系统数据? 所谓系统数据库就是我们在装SQL Server之后,系统自带的数据库(这样的回答是不是很白痴^_^). 如果你装SQL Server2005或200...
阅读全文
SQL Server:分离和重新附加数据库
摘要:对于分离一个数据库来说,我们可以用Manage Studio界面或者存储过程。但是对于每一种方法都必须保证没有用户使用这个数据库.接下来所讲的都是对于用命令来分离或附加一个数据库。对于用Manage Studio自己看着界面操作就可以应付了。分离数据库 对于用存储过程来分离数据库,如果发现无法终止用户链接,可以使用ALTER DATABASE命令,并利用一个能够中断已存在链接的终止选项来把数据库设...
阅读全文
SQL Server:将6字节的十六进制页面号转化成【文件号:页面号】格式函数
摘要: 有时候我们需要知道存储在表中某条记录的所属文件号以及页面编号,但是经过我们自己查询,查询出来是一个十六进制页面号,那么我们怎么才能根据该十六进制页面号计算出该记录所对的“所属文件号”以及“页面编号”呢?
阅读全文
细说Sql Server中的视图(下)
摘要:1,什么是视图? 2,为什么要用视图;3,视图中的ORDER BY;4,刷新视图;5,更新视图;6,视图选项;7,索引视图;细说Sql Server中的视图(上) 应大家要求已在“细说Sql Server中的视图(上)”中添加“为什么要用视图”一小节。5.更新视图视图是一个虚拟表,我们在查询视图的时候,实际上是对基础表的查询。视图不仅可以作为SELE...
阅读全文
细说Sql Server中的视图(上)(更新)
摘要:什么是视图?
视图中的ORDER BY;
刷新视图;
更新视图;
索引视图;
阅读全文
远程连接端口号改变的数据库服务器
摘要: 我们在维护数据库服务器的时候,为了保证安全,经常要改变数据库服务的默认端口号(默认1433),但是这样一来,客户端连接数据库服务器的时候,就稍微有点麻烦了
阅读全文
SqlServer附加数据库出错,错误代码5123
摘要:今天在Attach一个以前的数据库(没有在SqlServer初始安装的目录下)的时候,老是附加不上,总是出现5123的错误代码,如图: 一开始以为是SqlServer2008不兼容原来的数据库所致,因...
阅读全文
SqlServer 打开或关闭自增列
摘要:在往数据库表中添加一行的时候,要针对自增列插入一个特定值的时候,这个函数就很有用了
阅读全文
SQLServer : EXEC和sp_executesql的区别
摘要:摘要 1,EXEC的使用 2,sp_executesql的使用 MSSQL为我们提供了两种动态执行SQL语句
阅读全文
浙公网安备 33010602011771号