sql中的不常见查询
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中的不常见查询的更多相关文章
- SQL 中的多条件查询
在应用程序开发中,多条件查询是个经常遇到的情况,最简单最麻烦的方法是把所有的可能情况都考虑到,但是无疑是繁琐的,而且很容易漏掉可能的情形,下面是SQL语句实现多条件查询的情况 select * fro ...
- SQL中的SELECT_简单查询语句总结
--以scott用户下的dept和emp表为例 --注意:如果scott用户不能使用,请使用system用户登录--解锁scott用户ALTER USER SCOTT ACCOUNT UNLOCK;- ...
- sql中的跨库查询
在sql查询时,需要关联2个服务器上的不同数据库,只需要在所需查询的表名前加上服务器地址即可. 例如:在 192.168.0.15,8020的db110库 和 192.168.0.150,8082的d ...
- SQL中的join连接查询
inner join(交集 ,自然连接, 简写成join) 是最普通的连接查询,相当于早期根据where条件连接的查询 outer join(并集或部分并集,左表 + 右表) le ...
- SQL中对连表查询的建议
多表连查时,如果存在多个唯一键可以做关联,尽可能选择有意义的code或name,能不选择无意义的id或者uuid最好! 所以在存储的时候也是这样,并且从始至终保持一致性.这样既降低了维护和阅读的难度, ...
- SQL中新建注释、查询注释和说明
1.查询注释 SELECT A.name AS table_name, B.name AS column_name, C.value AS column_description FROM sys.ta ...
- SQL中的多表查询,以及JOIN的顺序重要么?
说法是,一般来说,JOIN的顺序不重要,除非你要自己定制driving table. 示例: SELECT a.account_id, c.fed_id, e.fname, e.lname -> ...
- linq to ef(相当于sql中in的用法)查询语句
select * from DoctorInfo doctor where doctor.HosDepartId in (select Id from HospitalDepartment hd wh ...
- sql中给逗号分隔的查询结果替换单引号
技术交流群:233513714 第一种方法: SELECT * FROM pay_inf_config a WHERE a.id IN ( SELECT REPLACE ( concat('''', ...
随机推荐
- c# 坑人的发邮件组件
System.Net.Mail 在服务器25端口被封禁的情况下,无法使用其它诸如SSL 465端口发送.用过时的System.Web.Mail却可以.是微软更新速度太快呢,还是标准不一致呢. Syst ...
- vs编码对编译的影响(UTF-8 no BOM编译通不过)
VS的编译器对Unicode源代码支持如下: UTF-16 little endian with or without byte order mark (BOM). UTF-16 big endian ...
- websocket 2 rest api
需要开发一个prometheus 的exporter 使用jmespath 获取对应metrics的数据,并进行转换处理,但是因为那个服务 提供的接口是通过websoket 的实时api,所以基于no ...
- UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-5: ordinal not in range(128)
原因是pip安装python包会加载我的用户目录,我的用户目录恰好是中文的,ascii不能编码.解决办法是: python目录 Python27\Lib\site-packages 建一个文件site ...
- Hibernate运行原生sql并将查询的结果转化为对象
原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口.下面来描述如何使用这个API进行查询.标量查询(Scalar queri ...
- H5外包团队 android视频压缩,使用ffmpeg方案
android视频压缩,使用ffmpeg方案,集成fdk-aac与264编码,适用于32位系统与64位系统,支持ARM 32/64 cpu与x86 32/64 cpu,mips 32/64 cpu,即 ...
- VS2017编译GDAL(64bit)+解决C#读取Shp数据中文路径的问题
编译GDAL过程比较繁琐,查阅了网上相关资料,同时通过实践,完成GDAL的编译,同时解决了SHP数据中文路径及中文字段乱码的问题,本文以“gdal-2.3.2”版本为例阐述整个编译过程. 一.编译准备 ...
- [UE4]修改瞬移操作方式,默认正前方
瞬移的时候,如果箭头指向正前方的角度跟中心线相差不大,则可以强制箭头指向中心线. 因为向量也可以表示方向,因此只要只要判断向量长度就是了,判断VectorLength值即可:
- Windows中的备份和还原
1:增量备份 (查看文件属性,只备打了勾的,备完后把勾取消掉,修改后勾都会打上) 2:差异备份(备份有勾的 ,备份完后不会取消勾) 周一:备一 周二:备二 周三:备三 周四:备三,四
- 4、hello world
package com.ourteam.firstexample; import io.netty.bootstrap.ServerBootstrap;import io.netty.channel. ...