1. 基础dml,ddl不解释,有手就行

1)常用语法

select top(2) * from #Test1 --前两条
select distinct * from #Test1 --去重Create table #Test1(id int,name Nvarchar(20),Age int)
INSERT INTO #Test1
VALUES(1,N'诸|葛|亮',70),(2,N'诸|葛|暗',70),
(3,N'刘|备',41),(4,N'张|飞',45)select max(Age),MIN(Age),STDEV(Age),MIN(Age) from #Test1
select SUBSTRING(name,2,1)截取,charindex(N'刘',name)字符位置,REPLACE(name,N'诸葛','') 替换,CONVERT(varchar(30),name)类型转换
,CONVERT(datetime,'2023-01-01 01:01:01',120)时间转换 from #Test1

2)cross apply和outer apply

都是将左表的每一条数据带到右表中匹配(如果是函数就去执行)

corss apply:返回成功匹配的(inner join 类似)

outer apply:返回成功匹配的和未匹配到的,但右表为null(left join 类似)

两表相连

Create table #Test1(id int,name Nvarchar(20),Age int)
INSERT INTO #Test1
VALUES(1,N'诸|葛|亮',70),(2,N'诸|葛|暗',70),
(3,N'刘|备',41),(4,N'张|飞',45)Create table #Test2(id int,name Nvarchar(20),Age int)
INSERT INTO #Test2
VALUES(1,N'诸|葛|亮',70),(2,N'诸|葛|暗',70),
(3,N'刘|备',41),(4,N'张小飞',45)select * from #Test1
--以|分割数据,分割后数据都占一行
select * from #Test1 aa
cross apply(select * from #Test2 bb where aa.name =bb.name )f
select * from #Test1 aa
outer apply(select * from #Test2 bb where aa.name =bb.name )f

函数相连

Create table #Test1(id int,name Nvarchar(20),Age int)
INSERT INTO #Test1
VALUES(1,N'诸|葛|亮',70),(2,N'诸|葛|暗',70),
(3,N'刘|备',41),(4,N'张|飞',45)--以|分割数据,分割后数据都占一行
select * from #Test1
cross apply(select * from string_split(name,'|')f)s

2.临时表,用来写sp非常好用,一般使用方法为

if OBJECT_ID('tempdb.dbo.#test')is not null
drop table #test
select Id into #test  from T_Test  where Id<10

3.cte用来做递归非常好用,也可以当做临时表使用,但是切记不能套娃

创建测试表

Create table #TestCTE(id int,name varchar(20),Parentid int)
INSERT INTO #TestCTE
VALUES(1,'grandpa',0),(2,'grandma',0),
(3,'mom',1),(4,'dad',1),
(3,'mom',2),(4,'dad',2),
(5,'me',4),(5,'me',3),
(6,'younger sister',3),(6,'younger sister',4),
(7,'son',5)

查询出我的所有长辈

;with cte as(
select *from #TestCTE where id =5--找出最低层数据
union all
select  aa.*  from #TestCTE aa
inner join cte bb on aa.id =bb.Parentid --递归出来的表
)
select distinct *from cte

4.函数

1)窗口函数,包括rownumber,rank,dese_rank(以前只会用,不知道名字,面试一脸懵逼,野生开发者太悲惨)

select *from (
select ROW_NUMBER() over(partition by type order by type)rk,* from sys.all_objects
)s where s.rk <5

2)行转列(pivot/case when)和列转行(unpivot/union),


Create table #Test(id int,name varchar(20),Age int)
INSERT INTO #Test
VALUES(1,'grandpa',70),(2,'grandma',70),
(3,'mom',41),(4,'dad',45)select *from #Test
select *   from (
select * from (select  name,Age from #Test )s1
pivot (max(Age) for [name] in (grandpa,grandma,mom,dad))s2)s3select * into #pt  from (
select * from (select  name,Age from #Test )s1
pivot (max(Age) for [name] in (grandpa,grandma,mom,dad))s2)s3select * from (
select *from #pt
unpivot (name for age in (grandpa,grandma,mom,dad))s1)s2

3)STUFF 经常配合 for xml,将多列合并为一列,再用pivot进行动态行转列

Create table #Test(id int,name varchar(20),Age int)
INSERT INTO #Test
VALUES(1,'grandpa',70),(2,'grandma',70),
(3,'mom',41),(4,'dad',45)declare @name varchar(200)='',@sql varchar(max) =''
select @name=STUFF( (select ','+name from #Test  for xml path('')),1,1,'')
--select STRING_AGG(name,',') from #Test 也可
select @nameselect @sql='
select *   from (
select * from (select  name,Age from #Test )s1
pivot (max(Age) for [name] in ('+@name+'))s2)s3
'
exec(@sql)

5.常用的系统表

select * from INFORMATION_SCHEMA.TABLES --本数据库所有表信息
select * from INFORMATION_SCHEMA.COLUMNS --本数据库所有列信息
select * from INFORMATION_SCHEMA.SCHEMATA --本数据看所有schema信息
select *from sys.all_columns  --本数据库所有列信息,包括了许多系统级的view的列
select *from sys.columns --本数据库所有列信息,主要是用户定义的table和view列
select *from sys.tables --本数据库所有表信息
select *from sys.all_objects -- 所有object,USER_TABLE(u),SQL_STORED_PROCEDURE(p),view(V),PRIMARY_KEY_CONSTRAINT(PK),SQL_SCALAR_FUNCTION(fn)等--columns和all_columns的区别
select *from sys.all_objects where object_id  in
(select object_id from (select *from sys.all_columns
except
select *from sys.columns)s)
select *from sys.all_objects where object_id  in
(
select object_id from sys.columns)select *from msdb..sysjobs --所有job
select *from msdb..sysjobschedules -- job和schedule中间表
select *from msdb..sysjobsteps --job的step
select * from msdb..sysschedules --schedule
select * from msdb..sysjobhistory
select case run_statusWHEN 0 THEN N'失败'WHEN 1 THEN N'成功'WHEN 2 THEN N'重试'WHEN 3 THEN N'取消'WHEN 4 THEN N'正在运行'end RunState,convert(datetime,left(run_date,4)+'-'+SUBSTRING(convert(varchar(11),run_date),5,2)+'-'+RIGHT(run_date,2)+' ' + left(run_time,2)+':'+SUBSTRING(convert(varchar(11),run_time),3,2)+':'+RIGHT(run_time,2)+':000')lastTime,RunTime,job_id, step_id, step_name from(select job_id, h.step_id, h.step_name, h.run_duration,run_status , run_date, right('000000' + convert(varchar(10), run_time),6) run_time,   STUFF(STUFF( RIGHT ( '000000' + CAST ([run_duration] AS VARCHAR ( 6 )), 6 ),3 , 0 , ':' ), 6 , 0 , ':' ) AS 'RunTime'from msdb..sysjobhistory h)s --所有job的历史记录(可用来监控job执行状态)

SQL SERVER高级知识梳理一:语法,函数,系统表笔记相关推荐

  1. SQL Server基础知识概念要点详细讲解

    SQL Server基础知识概念要点详细讲解 目录 基础概念 1.网状模型数据库 2.层次模型数据库 3.关系模型数据库 知识点实例总结 基础概念 SQL语言中,between and表示包括两边参数 ...

  2. SQL Server相关知识

    SQL Server 中科永联高级技术培训中心(www.itisedu.com) SQL Server是微软公司开发的一个关系数据库管理系统,以Transact_SQL作为它的数据库查询和编程语言.T ...

  3. SQL Server 2012新增的内置函数尝试

    SQL Server 2012新增的内置函数尝试 简介 SQL Server2012新增了一些内置函数来让开发人员使用起来更加容易.可以减少代码量,下面我们将SQL Server新增的函数分为几类分别 ...

  4. SQL Server 高级技术(二)—— 安全

    SQL Server 高级技术(二)-- 安全 一.概述 SQL Server 广泛使用安全主体和安全对象管理安全,一个请求.服务器.数据库或架构资源的实体称为安全主体,每一个安全主体有唯一的安全标识 ...

  5. 通过程序获得SQL Server自增型字段的函数:GetKey

    通过程序获得SQL Server自增型字段的函数:GetKey 概述: 通过程序来产生自增型字段,可以避免多用户操作的读取脏数据,操作也很简便.可以更好的在程序中控制这些关键字段的数值. 关键步骤: ...

  6. php sql 时间 函数,PHP模拟SQL Server的两个日期处理函数

    PHP模拟SQL Server的两个日期处理函数 2021-01-21 17:04:27149 //在PHP中处理日期非常不方便,比如求两个日期之间相差的月份?该怎么办呢? //文件名:date.in ...

  7. 在SQL SERVER中实现Split功能的函数,并在存储过程中使用

    CREATE FUNCTION dbo.SplitString (@Expression NVARCHAR(4000), --要拆分的字符串          @Delimiter NVARCHAR( ...

  8. SQL Server 中截取字符串常用的函数

    SQL Server 中截取字符串常用的函数:1.LEFT ( character_expression , integer_expression ) 函数说明:LEFT ( '源字符串' , '要截 ...

  9. SQL Server中的LEFT、RIGHT函数

    SQL Server中的LEFT.RIGHT函数.LEFT:返回字符串中从左边开始指定个数字符. LEFT(character_expression,integer_expression); RIGT ...

最新文章

  1. An overview of gradient descent optimization algorithms
  2. leetcode18. 四数之和(双指针)
  3. python-第一个python程序-向世界问好
  4. 【9603】最大整数
  5. 数字视频内容行业调研报告 - 市场现状分析与发展前景预测
  6. 标准正交表与混合正交表的使用
  7. 用eviews做svar模型_SVAR操作步骤Eviews教程分析.ppt
  8. win7计算机里的桌面不见了怎么办,win7桌面图标不见了怎么办,教您解决win7桌面图标不见了...
  9. Thinkpad E430C 跳过电池检测更新bios
  10. sql server备份及导出表数据和结构
  11. 公司、办公司内如何限制上外网因特网、只能连内网局域网 - 注册表工具软件、批处理办法 - 注册表转换成批处理BAT,批处理如何修改注册表
  12. java中length的使用法_java -length的三种用法说明
  13. Java、JSP 基于微信小程序 宠物在线医疗管理系统的设计与实现
  14. android广告轮播无限
  15. php30 罗马仕_再也不信罗马仕移动电源了!真是个大坑。。。
  16. BUUCTF WEB exec+lovesql
  17. 橙仕汽车荣膺中国商业联合会商贸物流与供应链分会“副会长单位”
  18. Word 2010之简单图文混排
  19. XAMPP安装配置教程(Windows)
  20. 使用ESP32驱动QMA7981读取三轴加速度(带例程)

热门文章

  1. 如何强制安卓平板谷歌浏览器桌面版网页
  2. 程序员的训练日记:编程也是一项耐力活动
  3. Flink sink doris案例
  4. 电子笔记本的思考(1)
  5. midjourney starter入门笔记:当代的神笔马良
  6. 第七章 :Hadoop+Zookeeper 3节点高可用集群搭建和原理解释
  7. 三菱PLC若想实现简单CPU通讯,需要具备哪些条件?
  8. 灵性图书馆:好书推荐-《零极限》
  9. android canvas光晕绘制_Unity实现UI光晕效果(发光效果)
  10. 计算机网络安全知识征文,网络安全从我做起作文(精选5篇)