SqlServer学习(二)【知识点记录】

SQL时间区间条件查询三种方法比较

在某一时间区间条件的查询

后来再了一次测试,数据比较少,大概500条数据,结果如下:

declare   @ct   datetime 
  
set @ct=getdate() 
SELECT  * FROM [siso].[dbo].[Activity] WHERE ASDateTime < getDate() and AEDateTime > getDate();
select   datediff(ms,   @ct   ,getdate())   as   '查询时间(毫秒)' 
(16 ms)   
set @ct=getdate()  
SELECT  * FROM [siso].[dbo].[Activity] WHERE getDate() BETWEEN ASDateTime AND AEDateTime;
select   datediff(ms,   @ct   ,getdate())   as   '查询时间(毫秒)'  
(36 ms)  
set @ct=getdate()  
SELECT * FROM [siso].[dbo].[Activity] where datediff(S,ASDateTime,@ct)>0 AND  datediff(S,AEDateTime,@ct)<0; 
select   datediff(ms,   @ct   ,getdate())   as   '查询时间(毫秒)'  
(50 ms) 

SQL 中DATENAME()的使用

1.获取星期(显示中文如:星期一)

Select DateName(dw,getdate())

2.获取季度

Select DateName(qq,getdate())

3.本年已过天数

Select Datename(dy,getdate())

4.本年第几个星期

Select Datename(wk,getdate()) 

第二个参数为指定日期数据,第一个参数说明如下:

日期部分缩写
yearyy, yyyy
quarterqq, q
monthmm, m
dayofyeardy, y
daydd, d
weekwk, ww
weekdaydw
hourhh
minutemi, n
secondss, s
millisecondms

一.替换 Null

1.COALESCE (expression_1, expression_2, ...,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。

使用COALESCE在于大部分包含空值的表达式最终将返回空值。

在下面的示例中,显示包含三列有关某个雇员每年工资收入信息的 wages 表:hourly_wagesalarycommission。但是,每个雇员只能接受一种付款方式。若要确定支付给所有雇员的工资总额,请使用 COALESCE 函数接受在 hourly_wagesalarycommission 中找到的非空值。

SELECT CAST(COALESCE(hourly_wage * 40 * 52,salary,commission * num_sales) AS money) AS 'Total Salary' FROM wages

2.ISNULL使用

SELECT E.Name AS Employee, ISNULL(M.Name, 'NO MANAGER') AS Manager FROM EMP E LEFT JOIN EMP M ON E.EmployeeID = M.ManagerID

3.使用CASE ...WHEN...

SELECT E.Name AS Employee,

CASE WHEN M.Name IS NULL 

THEN 'NO MANAGER' 

ELSE M.Name END AS Manager 

FROM EMP E LEFT JOIN EMP M 

ON E.EmployeeID = M.ManagerID

二.重置主键Identity

USE demoDB
GO
DBCC CHECKIDENT('tblEmployee', RESEED , 0)

三. SQL Server中的Merge

  use AllCityData
  Merge into StudentTarget as T 
  Using StudentSource as S
  On T.Id = S.Id
    
  When Matched Then
  Update Set T.Name = S.Name

  When Not Matched Then --目标表中没有的ID,在原表中有,则插入相关数据
  Insert (Id,Name )values(S.Id, S.Name)
	
  When Not Matched By Source Then --目标表中存在,源表中不存在,则删除
  Delete;

sqlserver一次性删除master数据库中的所有用户添加的表

use master;
go
sp_msforeachtable @command1="drop table ?"
go
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值