• 数据库笔记(四)


    本周学习总结

    学习体会

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

    学习内容

    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
    
    

  • 相关阅读:
    C#调用C++ memcpy实现各种参数类型的内存拷贝 VS marshal.copy的实现 效率对比
    UGUI 事件穿透规则
    UGUI 锚点设置为四方扩充模式然后设置局部坐标为0将出现什么问题
    UNITY polygon collider不随物体旋转
    android Handler机制 消息机制
    java final finally finalize
    collection 和 collections
    java 不通过第三个字符串,实现一个字符串倒序
    ArrayList,Vector,LinkedList
    String StringBuffer stringbuilder 区别
  • 原文地址:https://www.cnblogs.com/hyj-/p/12803634.html
Copyright © 2020-2023  润新知