本周学习总结
学习体会
这周好像没有什么知识点
粗略汇总一下
学习内容
1.SET ANSI_NULLS
- ON: NULL 和任何值都不等,包括NULL
- OFF:NULL,可以比较,null=NULL
- is NULL/is not NULL永远不会出错
举个栗子
SET ANSI_NULLS ON --默认
select * FROM SCOREA WHERE DEGREE <>NULL
select * FROM SCOREA WHERE DEGREE =NULL
select * FROM SCOREA WHERE DEGREE is not null
select * FROM SCOREA WHERE DEGREE is null
- 当on的时候,SCOREA中NULL和任何值都不相等,包括NULL,所以前两条语句都返回空
- 当on的时候,可以使用is 和 not is进行判断是否等价,所以后两条有返回结果
SET ANSI_NULLS OFF
select * FROM SCOREA WHERE DEGREE <>NULL
select * FROM SCOREA WHERE DEGREE =NULL
select * FROM SCOREA WHERE DEGREE is not null
select * FROM SCOREA WHERE DEGREE is null
- 当off的时候,SCOREA中使用 = 或者 <> ,也可以进行比较,所以四条语句都有返回结果
2.SET QUOTED_IDENTIFIER
- ON:""=[]
- OFF:""=''
- ''表示字符串,[]表示对象名称
举个栗子
SET QUOTED_IDENTIFIER ON --默认
SELECT SNO,'CNO',DEGREE FROM SCOREA
SELECT SNO,"CNO",DEGREE FROM SCOREA
SELECT SNO,[CNO],DEGREE FROM SCOREA
- 当为on的时候,第二条语句的"CNO"可以当成对象名称,那么第二条语句的意思就是从SCOREA表中检索出SNO,CNO,DEGREE;和第三条语句的意思一样
SET QUOTED_IDENTIFIER Off
SELECT SNO,'CNO',DEGREE FROM SCOREA
SELECT SNO,"CNO",DEGREE FROM SCOREA
SELECT SNO,[CNO],DEGREE FROM SCOREA
- 当为off的时候,第二条语句的"CNO"就是字符串,那么第二条语句的意思就是从SCOREA表中检索出SNO,CNO,DEGREE,其中CNO这列的数据是CNO;和第一条语句的意思一样
3.WITH TIES
- 一定与 ORDER BY 一起使用
- 同时列出和最后一个值相等的数据
举个栗子
select top 3 WITH TIES * from SCOREA order by sno
- 根据学号排序,并且检索出前三条数据,with ties,可以将和最后一条数据中sno一样的数据也检索出来
select top 30 percent WITH TIES * from SCOREA order by sno
- 根据学号排序,并且检索出前30%的数据,with ties,可以将和最后一条数据中sno一样的数据也检索出来
4.ANY,SOME,ALL
- ANY=SOME:某一个,其中的一个
- ALL:所有的,每一个
举个栗子
SELECT * FROM SCOREA where Degree >= all(select degree from SCOREA where sno ='101') and sno ='101'
SELECT * FROM SCOREA where Degree < any(select degree from SCOREA where sno ='101') and sno ='101'
SELECT * FROM SCOREA where Degree > some(select degree from SCOREA where sno ='101') and sno ='101'
- 第一条语句,检索出学号为101,并且成绩大于或等于所有其他的成绩,即101这个学号的最高分
- 第二条语句,检索出学号为101,并且成绩小于任何一个的成绩,即101这个学号的除去最高分的其他分数
- 第三条语句,检索出学号为101,并且成绩大于任何一个的成绩,即101这个学号的除去最低分的其他分数
5.CASE WHEN
- CASE WHEN express
- CASE x WHEN a
- 等同于if(x>y,x,y)
举个栗子
- 学号为101的同学加10分,学号为102的同学减十分
update SCOREA set degree = case when sno= 101 then 10
else case when sno =102 then -10 end
update SCOREA set degree = case sno when 101 then 10
else case sno when 102 then -10 end