zoukankan      html  css  js  c++  java
  • 数据库笔记(四)

    本周学习总结

    学习体会

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

    学习内容

    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
    
    

  • 相关阅读:
    导出PDF乱码
    C/S模式下的打印方法
    填报表导出excel后不可写的单元格处于锁定状态
    多表批量导出txt及打压缩包下载
    客户端定时自动打印页面的例子
    套打中的自定义纸张设置
    linux客户端打印报表时操作系统的配置
    大数据量报表APPLET打印分页传输方案
    Python中类的定义及使用
    Solr7.7高级应用【MLT相似文档搜索、自动补全、自动纠错】
  • 原文地址:https://www.cnblogs.com/hyj-/p/12803634.html
Copyright © 2011-2022 走看看