• MySQLday03(JSON类型,算术运算符,比较运算符,逻辑运算符,位运算符,运算符的优先级,字符串函数,数值函数,日期和时间函数,流程函数,JSON函数,窗口函数)


    JSON类型

      JSON是js中的一种数据交换格式。

      JSON类型比字符串类型有如下优点:

        JSON数据类型会自动的校验是否为JSON格式,如果不是JSON格式数据则会报错。

        MySQL中内置了JSON数据类型的一些函数,可以方便的提取各类数据,可以修改特定制。

        优化的存储格式,存储在JSON列中的JSON数据类型被转换成内部的存储格式,允许快速读取。

      JSON支持的数据类型:NUMBER,STRING,BOLLEAN,NULL,ARRAY,OBJECT共六种,可以是这六种的任意组合。

      BOOLEAN:true/false

      NULL:null

      字符串和日期类型:用双引号

      ARRAY:用括号()引起来

      OBJECT:KV,要用大括号{}引起来

     注意:JSON大小写敏感,常见的null,true,false必须是小写才合适。

     

    算术运算符

      MySQL中支持的算术运算符:

        +:加法

        -:减法

        *:乘法

        /,DIV:除法(取商)

        %,MOD:取模(取余)

     注意:在除法运算或者取模运算时,当除数为0,将是非法除数,返回结果为null;

     

    比较运算符

      “=”运算符:用于比较运算符两侧的操作数是否相等,相等则为1,否则为0,注意:null不能用与“=”比较。

      

      “<>”运算符:和“=”相反, 如果两侧操作数不相等为1,相等则为0。同样null不能用于“<>”比较。

      

      “<=>”运算符:和“=”类似,在操作数相等时为1,不相等为0,可以用于null比较

       

    ”<”运算符:当左侧操作数小于右侧操作数时,其返回值为1,否则其值为0。

    “<=”运算符:当左侧操作数小于等于右侧操作数时,其返回值为1,否则返回值为0。

    “>”运算符:当左侧操作数大于右侧操作数时,其返回值为1,否则返回值为0。

    ”>=”运算符:当左侧操作大于等于右侧操作数时,其返回值为1,否则返回值为0。

    “between”运算符:使用格式“ x between a and b”,当x大于等于a且小于等于b时,返回1,否则为0。

    ”IN“运算符使用的格式为”a IN(value1,value2...)“,当a的值存在于列表中时,则整个比较表达式返回的值为1,否则返回0。

    ”IS NULL“运算符的使用格式为”a IS NULL“,当a的值为NULL,则返回值为1,否则返回值为0。

    ”IS  NOT NULL“运算符的使用格式为”a IS NOT NULL“,当a的值为不为NULL,则返回值为1,否则返回值为0。

    ”LIKE“运算符的使用格式为”a LIKE %123%“,当a中含有字符串”123“时,则返回值为1,否则返回值0。

    ”REGEXP“运算符的使用格式为”str REGEXP str_pat“,当字符串中含有str_pat相匹配的字符串,则返回值为1,否则返回0。

    逻辑运算符

      MySQL支持的逻辑运算符:

      “NOT”或“!”表示逻辑非

      “AND”或“&”表示逻辑与

      “OR”或“||”表示逻辑或

      “XOR”表示逻辑异或

      

    位运算符

      MySQL中支持的位运算符:

      “&”:位于,对多个操作数的二进制位做逻辑与操作。

    “!” 位或:对多个操作数的二进制位做逻辑或操作。

    “^” 位异或:对操作数的二进制位做异或操作 。

    “~” 位取反:对操作数的二进制位NOT操作。

    “>>” 位右移:对左操作数向右移动右操作数指定的位数

    “<<” 位左移:对左操作数向左移动右操作烽指定的位数

    运算符的优先级

      

    字符串函数

       

       

       

       

       

       

       

       

       

    数值函数

      

              

    日期和时间函数

        

       

       

       

      

      

       

    流程函数

      

       

       

      

      select ename,deptno, case deptno when 10 then '10号部门' when 20 then '20号部门' else '不是10也不是20号部门' end '部门' from emp;

      

    JSON函数

      

       

      

    json_doc:表示json数据

    path 表示key   $.name

    val :值

      在mysql是可以创建变量:  set @变量名 = 值;

      

       

      注意:json_contains()中的第二个参数,如果是数字,则需要''来包裹,如果是字符,必须要'“”'来包裹!

          

       

      

      

       

       

    窗口函数

    • ROW_NUMBER()
      • row_number()后面的over是关键字,用来指定函数执行的窗口范围,如果后面什么都不写,则意味着窗口包含所有行,窗口:函数在所有行上进行计算;如果不为空,则支持以下4种语法:
        • window_name:给窗口指定一个别名,如果SQL中涉及的窗口较多,采用别名则更清晰易读;
        • partition子句:窗口按照哪些字段进行分组,窗口函数在不同的分组上分别执行;
        • order by子句:按照哪些字段进行排序,窗口函数将按照排序后的记录顺序进行编号,既可以和partition子句配合使用,也可以单独使用;
        • frame子句:frame是当前分区的一个子集,子句用来定义子集的规则,通常用来作为滑动窗口使用。
          • 基于行
          • 基于范围

      

    • RANK()/DENSE_RANK()
      • rank()/dense_rank()这两个函数与row_number()非常类似,只是在出现重复值时处理逻辑有所不同。 

       

    • PERCENT_RANK()/CUME_DIST()
      • percent_rank()和cume_dist()这两个函数都是计算数据分布的函数,percent_rank()和之前的rank()函数相关,每行按照以下公式进行计算:
        • (rank-1)/(rows-1),其中,rank为rank()函数产生的序号,rows为当前窗口的记录总行数
      • 相比percent_rank(),cume_dist()函数的应用场景更多,它的作用是分组内小于等于rank值的行数/分组内的总行数(统计大于等于当前订单金额的订单数,占总订单数的比例)。 

       

  • 相关阅读:
    题解 P1003 【铺地毯】
    题解 P1000 【超级玛丽游戏】
    题解 P1036 【选数】
    题解 P1217 【[USACO1.5]回文质数 Prime Palindromes】
    题解 AT934 【完全数】
    题解 P2044 【[NOI2012]随机数生成器】
    题解 P4277 【河城荷取的烟花】
    System.Linq.Dynamic.Core
    008 TBS Studio 真机开发辅助工具的简单说明
    webpack
  • 原文地址:https://www.cnblogs.com/heureuxl/p/13556111.html
Copyright © 2020-2023  润新知