数据库笔记(四)

本周学习总结

学习体会

这周好像没有什么知识点
粗略汇总一下

学习内容

1.SET ANSI_NULLS {ON | OFF}

  • 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}

  • 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


猜你喜欢

转载自www.cnblogs.com/hyj-/p/12803634.html