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. sqlserver2008 T_SQL篇

    事物 事物的概念:--转自百度百科事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务,SQL Server能将逻 ...

  2. C 语言经典例子

    1. 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. #inc ...

  3. 通过type类型 新建对象

    Activator根System命名空间中的类非常强大. 将参数传递给构造函数等有很多重载.查看以下文档: http://msdn.microsoft.com/en-us/library/system ...

  4. Go 知识点

    必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main. package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包. main 函 ...

  5. Python中第三方的用于解析HTML的库:BeautifulSoup

    背景 在Python去写爬虫,网页解析等过程中,比如: 如何用Python,C#等语言去实现抓取静态网页+抓取动态网页+模拟登陆网站 常常需要涉及到HTML等网页的解析. 当然,对于简单的HTML中内 ...

  6. 安装.net 服务时出现0x80131515错误的解决办法

    使用InstallUtil.exe安装一个用.NET写的Windows服务时,报错了,错误信息如下: Exception occurred while initializing the install ...

  7. MYSQL-联合索引

    深入理解 index merge 是使用索引进行优化的重要基础之一.理解了 index merge 技术,我们才知道应该如何在表上建立索引. 1. 为什么会有index merge 我们的 where ...

  8. 后台文本编辑器KindEditor介绍

    后台文本编辑器KindEditor介绍 我们在自己的个人主页添加文章内容的时候,需要对文章内容进行修饰,此时就需要文本编辑器助阵了! 功能预览 KindEditor文本编辑器 KindEditor文本 ...

  9. TableVie优化方法和优化机制

    1,UITableview的优化方法(缓存高度,异步绘制,减少层级,hide,避免离屏渲染) (1)缓存高度:当我们创建frame模型的时候,计算出来cell的高度的时候,我们可以将cell的高度缓存 ...

  10. sql查询统计

    SELECT TOP 50 (select text from sys.dm_exec_sql_text(sql_handle)) as [SQL], CAST( ((qs.total_elapsed ...