sql 语法

以前写报表的时候,数据都是强哥写好的,我也是偶尔闲着会看看sql语句,一大堆的存储过程,(*&&……%%

这次强哥说,以后数据有我来写,0_0

其实今天天气挺好的,不过,看代码看得我浑身发热,老是冒汗,很明显,我看不太懂,

一段一段的百度,请教同事,现在终于明白了20%  \(^o^)/


1 isNULL()函数用法

语法
ISNULL ( check_expression , replacement_value ) 

检查指定的字段
使用指定的替换值替换 NULL。


这一句代码,就很明确了:

h.pc_qty - ISNULL(tsq.total_ship_qty, 0) os_balance,


2 pivot () 这个函数的意思是:变行为列,变列为行

3 dateadd()  在日期中添加或减少制定的时间间隔

 datepart  返回日期或时间的单独部分,比如,年月日,时,分,秒

    set @startweek = dateadd( day, case when 6-datepart(dw,@today) < 0 then 6 else 6-datepart(dw,@today) end, @today)


OrderIdProductNameOrderDate
1'Computer'2008-12-29 16:25:46.635

SELECT DATEPART(yyyy,OrderDate) AS OrderYear,
DATEPART(mm,OrderDate) AS OrderMonth,
DATEPART(dd,OrderDate) AS OrderDay
FROM Orders
WHERE OrderId=1

结果:

OrderYear  
2   

12    29


4 with  nolock

from AX2009DEV.dbo.wmsshipment a  with (nolock)

所有Select加 With (NoLock)解决阻塞死锁

处理一个数据库死锁的异常时候,其中一个建议就是使用 NOLOCK 或者 READPAST 。有关 NOLOCK 和 READPAST的一些技术知识点:

对于非银行等严格要求事务的行业,搜索记录中出现或者不出现某条记录,都是在可容忍范围内,所以碰到死锁,应该首先考虑,我们业务逻辑是否能容忍出现或者不出现某些记录,而不是寻求对双方都加锁条件下如何解锁的问题。

NOLOCK 和 READPAST 都是处理查询、插入、删除等操作时候,如何应对锁住的数据记录。但是这时候一定要注意NOLOCK 和 READPAST的局限性,确认你的业务逻辑可以容忍这些记录的出现或者不出现:


简单来说:

NOLOCK 可能把没有提交事务的数据也显示出来.

READPAST 会把被锁住的行不显示出来 

3  连接

什么内连接,左连接  做一个小练习均可

drop table a
create table a (
  id  int primary key identity(1,1) ,
  value varchar(30)
)

insert into a values('bo')
drop table b
create table b (
    id int primary key identity(1,2),
    value varchar(30)
)
insert into b values('we')
drop table c
create table c (
id int primary key identity(1,2),
value varchar(30)
)
insert into c values('s')
select a.*, b.*, c.* from (ctarticle a left join ctclass b on a.classid=b.classid) left join ctnclass c on a.nclassid=c.nclassid


select a1.*,b1.*,c1.* from (a a1 left join b b1 on a1.id = b1.id)left join c c1 on a1.id = c1.id

select * from a
select * from b
select * from c
select * from a join b on a.id = b.id
select a.id,a.value,b.id,b.value from a join b on a.id = b.id join c on c.id = a.id  


左连接:以左边表格为基准 比如a left join b

b表中不存在的数据以null来代替




 -- 臨時表的創建 添加及查詢
 drop table #Temp
 create table #Temp(
    id int identity(1,1),
    value varchar(30)
 )
 
 insert into #Temp values('qiqi')
 
 select * from #Temp
 truncate table #Temp  --清空臨時表所有數據和約束



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值