1.对于CROSS APPLY 和 OUTER APPLY 的应用:

CROSS APPLY 类似于INNER JOIN 但是,可以规定对于满足条件的数据需要关联几行,应用场景: 每个零件把第一个工单关联出来;

OUTER APPLY 类似于LEFT JOIN ,不同之处同上;

--inner join

SELECT a.part_no,b.workorder FROM dbo.sys_part a INNER JOIN dbo.g_workorder_detail b ON a.part_id =b.part_id

---执行结果:

part_no   workorder
1144514
1912900
1912900
1912900
1912900
1912900
1144514

---cross apply

SELECT a.part_no,c.workorder FROM dbo.sys_part a CROSS APPLY
(SELECT TOP 1 * FROM dbo.g_workorder_detail b WHERE a.part_id =b.part_id ORDER BY b.workorder_id) AS c

执行结果:

part_no workorder
1144514
1912900

---outer apply

SELECT a.part_no,c.workorder FROM sys_part a OUTER APPLY
(SELECT TOP 1 * FROM dbo.g_workorder_detail b WHERE a.part_id =b.part_id ORDER BY b.workorder_id) AS c

---执行结果:

part_no workorder

90740 NULL

90789 NULL
369832 NULL
507994 NULL

2.SQL语句执行结果增加列显示:

--其中对于over之后的排序为整个语句显示信息的排序

SELECT TOP 5 ROW_NUMBER() OVER(ORDER BY part_id) AS row_id ,part_no  FROM sys_part

3.SQL语句对于锁表的查询:

SELECT b.name AS [database], a.spid, a.blocked, a.waittime / 1000 AS wait_time, a.loginame,CONVERT(VARCHAR(50),login_time,120) login_time,
CONVERT(VARCHAR(50),last_batch,120) last_batch, open_tran, a.status, hostname, program_name, cmd
FROM sys.sysprocesses a
JOIN sys.sysdatabases b ON a.dbid = b.dbid
WHERE spid IN ( SELECT blocked
FROM sys.sysprocesses
WHERE blocked > 0 AND spid != blocked )
UNION
SELECT b.name AS [database], a.spid, a.blocked, a.waittime / 1000 AS wait_time,a.loginame, CONVERT(VARCHAR(50),login_time,120) login_time,
CONVERT(VARCHAR(50),last_batch,120) last_batch, open_tran, a.status, hostname, program_name, cmd
FROM sys.sysprocesses a
JOIN sys.sysdatabases b ON a.dbid = b.dbid
WHERE blocked > 0 AND waittime >0 AND spid != blocked
ORDER BY spid

--对于得到的具体spid可以根据语句来得到具体的sql语句: DBCC INPUTBUFFER(SPID)

4.SQL中对于登录信息的获取:

SELECT
s.[host_name],
con.client_net_address,
s.login_name,
s.[program_name]
FROM sys.dm_exec_connections AS con INNER JOIN sys.dm_exec_sessions AS s
ON con.session_id=s.session_id AND s.session_id=@@SPID  ---当前执行此内容的SPID

5.对于表碎片的查看,决定是否要重建索引:

DBCC SHOWCONTIG(sys_part)

---显示结果:

DBCC SHOWCONTIG scanning 'sys_part' table...
Table: 'sys_part' (308912172); index ID: 0, database ID: 46
TABLE level scan performed.
- Pages Scanned................................: 276
- Extents Scanned..............................: 39
- Extent Switches..............................: 38
- Avg. Pages per Extent........................: 7.1
- Scan Density [Best Count:Actual Count].......: 89.74% [35:39] ---此百分比越大越好
- Extent Scan Fragmentation ...................: 33.33%  ---扩展盘区扫描碎片,越小越好
- Avg. Bytes Free per Page.....................: 2542.0
- Avg. Page Density (full).....................: 68.59%  ------------每叶的密度 --此值太低,就得考虑索引重建
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

---如需要重建索引,可执行: DBCC DBREINDEX(sys_part)

6.对于JOB 方面的查询,归属,及其执行的内容 

---对于Job是归属那个账号 在执行的查询
SELECT a.name AS job_name,b.loginname,a.date_created AS job_createtime,a.date_modified AS jobmodifytime
FROM msdb.dbo.sysjobs a INNER JOIN master.dbo.syslogins b ON a.owner_sid =SUSER_SID(B.loginname)
WHERE 1=1
AND A.enabled =1 --表示启用的JOB
AND B.loginname='sa' --账号
ORDER BY a.job_id

--关于在运行中的job执行的语句

SELECT a.name AS job_name,b.step_name,b.database_name,b.step_id,b.command
FROM msdb.dbo.sysjobs a INNER JOIN msdb.dbo.sysjobsteps b ON a.job_id=b.job_id
WHERE 1=1
AND a.enabled =1
ORDER BY a.job_id,b.step_id

sql中的不常见查询的更多相关文章

  1. SQL 中的多条件查询

    在应用程序开发中,多条件查询是个经常遇到的情况,最简单最麻烦的方法是把所有的可能情况都考虑到,但是无疑是繁琐的,而且很容易漏掉可能的情形,下面是SQL语句实现多条件查询的情况 select * fro ...

  2. SQL中的SELECT_简单查询语句总结

    --以scott用户下的dept和emp表为例 --注意:如果scott用户不能使用,请使用system用户登录--解锁scott用户ALTER USER SCOTT ACCOUNT UNLOCK;- ...

  3. sql中的跨库查询

    在sql查询时,需要关联2个服务器上的不同数据库,只需要在所需查询的表名前加上服务器地址即可. 例如:在 192.168.0.15,8020的db110库 和 192.168.0.150,8082的d ...

  4. SQL中的join连接查询

      inner join(交集 ,自然连接, 简写成join)   是最普通的连接查询,相当于早期根据where条件连接的查询     outer join(并集或部分并集,左表 + 右表)   le ...

  5. SQL中对连表查询的建议

    多表连查时,如果存在多个唯一键可以做关联,尽可能选择有意义的code或name,能不选择无意义的id或者uuid最好! 所以在存储的时候也是这样,并且从始至终保持一致性.这样既降低了维护和阅读的难度, ...

  6. SQL中新建注释、查询注释和说明

    1.查询注释 SELECT A.name AS table_name, B.name AS column_name, C.value AS column_description FROM sys.ta ...

  7. SQL中的多表查询,以及JOIN的顺序重要么?

    说法是,一般来说,JOIN的顺序不重要,除非你要自己定制driving table. 示例: SELECT a.account_id, c.fed_id, e.fname, e.lname -> ...

  8. linq to ef(相当于sql中in的用法)查询语句

    select * from DoctorInfo doctor where doctor.HosDepartId in (select Id from HospitalDepartment hd wh ...

  9. sql中给逗号分隔的查询结果替换单引号

    技术交流群:233513714 第一种方法: SELECT * FROM pay_inf_config a WHERE a.id IN ( SELECT REPLACE ( concat('''', ...

随机推荐

  1. Spark:将DataFrame写入Mysql

    Spark将DataFrame进行一些列处理后,需要将之写入mysql,下面是实现过程 1.mysql的信息 mysql的信息我保存在了外部的配置文件,这样方便后续的配置添加. //配置文件示例: [ ...

  2. [Java] 練習用對戰小遊戲

    繼承.介面自我練習時所建立的小遊戲,一開始輸入名稱來建立對戰腳色,之後以輸入招式號碼的方式互相打鬥,最後沒血的一方就輸了. 人物種族 abstract public class Human { int ...

  3. NFPA, UL

    Who or what is NFPA? NFPA (National Fire Protection Association) is an organization in the USA that ...

  4. Dubbo和Spring Cloud

    1.Dubbo和Spring Cloud区别 1).通信方式不同 Dubbo使用RPC通信,Spring Cloud使用Http RestFul方式 2) 组成部分不同 组件 Dubbo Spring ...

  5. 定时任务模块 schedule

    # coding:utf-8 from learning_python.Telegram_push.check_hardware import check_cpu import schedule im ...

  6. EVM项目管理

    详细参照:https://zhuanlan.zhihu.com/p/33925657 报告日实际: 按预算完成 按原始cpi完成 按时完成

  7. python读写文件\r\n问题

    newline controls how universal newlines mode works (it only applies to text mode). It can be None, ' ...

  8. nginx1.14.0版本https加密配置

    修改host文件,为最后访问域名准备 C:\Windows\System32\drivers\etc host文件目录192.168.10.140 www.joyce.com 在最后添加这个自定义域名 ...

  9. ActiveMQ( 一) 同步,异步,阻塞 JMS 消息模型

    同步请求:浏览器 向服务器 发送一个登录请求,如果服务器 没有及时响应,则浏览器则会一直等待状态,直至服务器响应或者超时. 异步请求:浏览器 向服务器 发送一个登录请求,不管服务器是否立即响应,浏览器 ...

  10. 使用docker加载已有镜像安装Hyperledger Fabric v1.1.0

    背景 每次在新的服务器上安装Hyperledger Fabric网络时,通过fabric官方提供的脚本安装时,需要从网络上down下近10G的fabric相关镜像,这个过程是漫长及痛苦的,有时因网络问 ...