使用Sql Server好长时间了,今天特别想总结一下,算是回顾吧!

总结: 其实很多技巧,都是基于SQL Server自带的System ViewsSystem Stored ProceduresSystem Functions (常用函数都在在里面)。

常用函数:

1. ISNULL(columnName, '')

  先判断该字段是否为空,如果为空,返回''; 否则返回该字段本来的值。

2. DATEDIFF(datepart,startdate,enddate)

  不罗嗦,直接参考 链接

3. CONVERT函数

  直接参考链接

4. LEN  计算长度

5. OBJECT_NAME('object_id')  通过object id得到object name

6. OBJECT_ID('object_name')   通过object name得到 object id

7. CAST 函数

实用语句:

1. 有时候项目中定义的储存过程比较多,需要确定某一个表被哪些stored procedure使用了,可以有如下两种方法:

  a. SSMS界面上,选中要查的表,右键,点击查找依赖,就会显示出来

  b. 使用语句:

exec sys.sp_depends <tableName>

例如: exec sys.sp_depends 'TB_Student'

2. 查找 死锁

  用到系统表: sys.sysprocesses (其实是一个系统View)

视图中主要的字段:
1. Spid:Sql Servr 会话ID
2. Kpid:Windows 线程ID
3. Blocked:正在阻塞求情的会话 ID。如果此列为 Null,则标识请求未被阻塞
4. Waittype:当前连接的等待资源编号,标示是否等待资源,0 或 Null表示不需要等待任何资源
5. Waittime:当前等待时间,单位为毫秒,0 表示没有等待
6. DBID:当前正由进程使用的数据库ID
7. UID:执行命令的用户ID
8. Login_time:客户端进程登录到服务器的时间。
9. Last_batch:上次执行存储过程或Execute语句的时间。对于系统进程,将存储Sql Server 的启动时间
10.Open_tran:进程的打开事务个数。如果有嵌套事务,就会大于1
11.Status:进程ID 状态,dormant = 正在重置回话 ; running = 回话正在运行一个或多个批处理 ; background = 回话正在运行一个后台任务 ; rollback = 会话正在处理事务回滚 ; pending = 回话正在等待工作现成变为可用 ; runnable = 会话中的任务在等待获取 Scheduler 来运行的可执行队列中 ; spinloop = 会话中的任务正在等待自旋锁变为可用 ; suspended = 会话正在等待事件完成
12.Hostname:建立链接的客户端工作站的名称
13.Program_name:应用程序的名称,就是 连接字符串中配的 Application Name
14.Hostprocess:建立连接的应用程序在客户端工作站里的进程ID号
15.Cmd:当前正在执行的命令
16.Loginame:登录名 

  例子:

  a. 检查数据库是否发生阻塞

  先查找哪个链接的 blocked 字段不为0。如 SPID10的blocked 字段不为0,而是11。SPID 11 的 blocked 为0,就可以得出结论:此时有阻塞发生,10 被 11 阻塞住了。如果你发现一个连接的 blocked 字段的值等于它自己,那说明这个连接正在做磁盘读写,它要等自己的 I/O 做完。

  b. 查找链接在那个数据库上

  检查 dbid 即可。得到 dbid,可以运行以下查询得到数据库的名字:

Select name,dbid from master.sys.sysdatabases

  

3. 查看View或者Stored Procedure的定义语句,有时候通过SSMS界面比较慢,用语句较快

Select definition, * from sys.sql_modules

  使用系统表(严格意义上,是个View):sys.sql_modules

4. 在Stored Procedure中查找关键字

  之前用下面的语句,但是发现这条语句有问题,因为这里的ROUTINE_DEFINITION,只取到procedure内容的前4000个字符,导致查的结果不正确。

SELECT ROUTINE_NAME, ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%keyWord%'
AND ROUTINE_TYPE = 'PROCEDURE'

  用下面的语句,就可以查到:

SELECT OBJECT_NAME(object_id), OBJECT_DEFINITION(object_id)
FROM SYS.PROCEDURES
WHERE OBJECT_DEFINITION(object_id) LIKE '%keyWord%'

  看完上面的第3条,其实使用sys.sql_modules 也是可以用来查找关键字。

5.  在数据库中,我们会经常看到,一些表中,只有一个id做为主键,那我们怎么快速确认它是否是自增的呢?

  使用下面的语句查询,objectId和columnName根据实际情况填写。如果id_identity的值为1,它就是自增的,否则,就不是自增的。

select id_identity, * from sys.columns where object_id = 'objectId' and name = 'columnName'

  一般在建表语句中,定义自增使用的是  identity(1, 1) , 表示自增,从1开始,递增量为1。

CREATE TABLE T_test
(ID int IDENTITY(1,1),
Name varchar(50)
)

  判段一个表是否具有标识列
  可以使用 OBJECTPROPERTY 函数确定一个表是否具有 IDENTITY(标识)列,用法:

Select OBJECTPROPERTY(OBJECT_ID('表名'),'TableHasIdentity')

  如果有,则返回1,否则返回0

  判断某列是否是标识列
  可使用 COLUMNPROPERTY 函数确定 某列是否具有IDENTITY 属性,用法

SELECT COLUMNPROPERTY( OBJECT_ID('表名'),'列名','IsIdentity')

  如果该列为标识列,则返回1,否则返回0

  查询某表标识列的列名
  SQL Server中没有现成的函数实现此功能,实现的SQL语句如下

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.columns
WHERE TABLE_NAME='表名' AND COLUMNPROPERTY(
OBJECT_ID('表名'),COLUMN_NAME,'IsIdentity')=1

  

转载于:https://www.cnblogs.com/FocusIN/p/7341380.html

Sql Server常用函数及技巧相关推荐

  1. oracle sql常用的函数,界别Oracle和SQL Server常用函数

    区分Oracle和SQL Server常用函数 一.数学函数 1.绝对值 S:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) ...

  2. sql server常用函数、常用语句

    一.常用函数 1.字符串函数 : charindex(':','abc:123')    --寻找一个字符在一段字符串中起始的位置 len('zhangsan')   --获取一段字符串的长度 lef ...

  3. sql server 常用函数

    Sql Server基本函数 1.字符串函数  长度与分析用 datalength(Char_expr) 返回字符串包含字符数,但不包含后面的空格 substring(expression,start ...

  4. SQL SERVER Reverse函数使用技巧

    Reverse函数,是SQL SERVER是一个函数,主要是用来实现字符串倒置的一个功能,可以把字符串里各个字符的顺序倒过来,看下这个例子: DECLARE @str NVARCHAR(100) SE ...

  5. 精心整理了一套SQL Server常用函数,速速收藏!

    点击上方SQL数据库开发,关注获取SQL视频教程 SQL专栏 SQL数据库基础知识汇总 SQL数据库高级知识汇总 1.统计函数(聚合函数) AVG() --求平均值 COUNT() --统计数目 MA ...

  6. 函数、返回-Sql Server常用函数之统计、算数、字符串函数-by小雨

    新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 统计函数 Ø  AVG(expression)函数----按列算计平均值 Ø  SUM(expression)函数----按列算计值 ...

  7. sql server常用函数

    datalength(Char_expr) 返回字符串包含字符数,但不包含后面的空格 substring(expression,start,length) 不多说了,取子串 right(char_ex ...

  8. sql server 之函数小技巧 整数类型为空是用空字符串替代实现

    1.判空函数 说明:使用指定的替换值替换 NULL. 语法:ISNULL ( check_expression , replacement_value ) 参数: check_expression:将 ...

  9. SQL Server常用函数 -- 更新中

    1.截取字段:left(),right(),substring select 字段名, left(字段名, 2) from 表名 --截取字段内容的前四位 2.去除左右空格:ltrim()与rtrim ...

最新文章

  1. ubuntu搭建nginx环境
  2. 如何查看linux 操作系统信息
  3. 在迷失中前进--hatita22年蹉跎岁月的长嘘短叹(短叹篇)
  4. Web MVC模式实现
  5. nvidia控制面板点了没反应win7_win7 nvidia控制面板没反应打不开 解决办法
  6. 企业全面运营管理沙盘模拟心得_企业经营沙盘模拟心得总结
  7. android4.4 计算器,卡西欧仿真计算器
  8. 向日葵显示无法连接到服务器,请修复电信卡使用向日葵远程无法连接服务问题!!!...
  9. 计算机科学与技术导论结课报告,计算机科学与技术导论课程报告.doc
  10. Halo博客建站小记
  11. 没有服务器认证消息,关于《跑跑卡丁车》没有服务器认证消息的问题,怎么解决?...
  12. 获取自己win10系统的产品密匙
  13. 长安十二时辰大结局一段时间了
  14. Smart-Link、Monitor-Link介绍与配置举例
  15. 叉乘点乘混合运算公式_小学数学所有公式和顺口溜都在这里了,假期让孩子背熟!...
  16. 如何将mp4视频压缩变小,视频压缩快速完成
  17. 立足现实 与时俱进:C++ 1991-2006 reference
  18. 赖世雄老师---主语
  19. 苹果给出的ARKit界面设置建议~
  20. 电商微信小程序(教你一个页面一个数据接口搞定所有分类订单页面(未支付 未发货 已发货 全部订单))

热门文章

  1. Java Experiment 3 PairProgramming
  2. Activity隐式启动IntentFilter
  3. ASP.NET状缓存Cache的应用-提高数据库读取速度
  4. Oracle 协议适配器错误
  5. mongodb分片概念和原理-实战分片集群
  6. mysqldump参数详细说明(转)
  7. Servlet执行时要实现的方法
  8. Spark 宽依赖和窄依赖
  9. 老李推荐:第6章6节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-命令队列...
  10. 用来做 favicon 的站点