• MySQL数据库(5)——逻辑处理


    逻辑处理

            在MySQL中,可以使用逻辑运算符和条件语句来进行逻辑处理。

    1.逻辑运算符

    • and 与
    • or 或
    • not 非

    这里用法与Java中的用法相同,只是语法发生了部分变化。

    2.case——when逻辑处理

    语法:

    case when 条件 then 结果1 else 结果2 end

    注意:这里可以有多个when。 

    这里用力扣中的一道题举例:

    这里的答案是:

    1. select r.a as id,
    2. case when r.c is null then 'Root'
    3. when r.c is not null and r.b = 2 then 'Inner'
    4. else 'Leaf' end as type
    5. from (
    6. select t.id as a,n.res as b,t.p_id as c
    7. from Tree t
    8. left join (
    9. select p_id,count(*) as res
    10. from Tree
    11. group by p_id
    12. having p_id is not null
    13. ) n on t.id = n.p_id
    14. ) r;

            其中就用到了case对树的节点的连接情况进行了筛选(这是为举例临时做的,做的不好请见谅,可以去力扣官方查看优质题解),这里用到了多表查询,现在这个阶段还不能做,下图是表r,case就是对表r进行了条件处理。

            这里需要注意的是,then和else后面是一个值,位置在from前,要会正确使用。

    3.ifnull逻辑处理

    语法:

    ifnull(被检测值,默认值)

             函数检测是否为null,如果为null,则返回指定值,否则返回原本的值。

    4.if逻辑处理

    语法:

    if(条件,条件成立的结果,条件失败的结果)

            相当于if else的效果。

    数学函数

    1. round(数值):四舍五入;
    2. ceil(数值):向上取整,返回>=该参数的最大整数;
    3. floor(数值):向下取整,返回<=该参数的最小整数;
    4. truncate(数值,保留小数的位数):截断函数,小数点后几位保留,剩下的截断;
    5. mod(被除数,除数):取余,被除数为正,则为正;被除数为负,则为负;
    6. rand():获取随机数,返回0~1之间的小数;

    日期函数

    1. now():返回当前系统的日期+时间;
    2. curdate():返回当前系统日期,不包含时间;
    3. curtime():返回当前时间,不包含日期;
    4. 可以获取指定的部分(年、月、日、时、分、秒),参数都是日期列:YEAR()、MONTH()、DAY()、HOUR()、MINUTE()、SECOND(),举例:
      1. SELECT HOUR('2021-01-01 12:30:45'); -- 输出 12,表示 '2021-01-01 12:30:45' 的小时部分是12
    5. datediff(bigTime,smallTime):返回两个日期相差的天数;

    6. str_to_date(字符串格式日期,格式):将日期格式的字符转换成指定格式的日期;

    7. date_format(日期列,格式):将日期转换成字符串。

    日期格式
    1. %Y:年,4位;
    2. %m:月,数值(01-12);
    3. %d:月的天数,数值为(01-31);
    4. %H:小时,数值为(00-23);
    5. %i:分钟,数值为(00-59);
    6. %s:秒,数值为(00-59);
    7. %f:微秒;
    8. %T:时间,数值为(hh:mm:ss);
    9. %j:年的天(001-366);
    10. %W:周的天;
    11. %y:年(只有两位);

    举例:

    1. 将日期格式化为年份和月份: SELECT DATE_FORMAT('2022-09-15', '%Y-%m') AS formatted_date; 结果为:'2022-09'

    2. 将日期格式化为月份和日期: SELECT DATE_FORMAT('2022-09-15', '%M %d') AS formatted_date; 结果为:'September 15'

    3. 将日期格式化为星期几: SELECT DATE_FORMAT('2022-09-15', '%W') AS formatted_date; 结果为:'Thursday'

    4. 将时间格式化为小时和分钟: SELECT DATE_FORMAT('12:30:45', '%H:%i') AS formatted_time; 结果为:'12:30'

    5. 将日期和时间格式化为完整的日期和时间: SELECT DATE_FORMAT('2022-09-15 12:30:45', '%Y-%m-%d %H:%i:%s') AS formatted_datetime; 结果为:'2022-09-15 12:30:45'

    分组函数

            分组函数用作统计使用,又称为聚合函数或统计函数或组函数。

    常用函数:

    1. sum求和函数;
    2. avg平局值函数;
    3. max最大值函数;
    4. min最小值函数;
    5. count计数函数;

    注意点:

    • sum、avg一般用于处理数值型数据,而max、min、count可以处理任何类型数据;
    • 以上分组函数都忽略null值;
    • count函数的一般使用count(*)用作统计行数;
    • 和分组函数一同查询的字段要求是group by后的字段。

     

  • 相关阅读:
    Springboot中整合knife4j接口文档
    透过Redis源码探究字符串的实现
    使用 LCM LoRA 4 步完成 SDXL 推理
    Linux 在多个文件中搜索关键字
    Amazon DynamoDB 设计与建模最佳实践之 AI 数字人场景
    一文理解OpenStack网络
    基于SpringBoot的合家云社区物业管理平台 - 项目介绍
    基于springboot广场舞团高校社团管理系统设计与实现-计算机毕业设计源码和LW文档
    第五十九章 CSP的常见问题 - 会话和许可证,为什么我要经常登录?
    xv6实验课程--xv6的写时复制fork(2023)
  • 原文地址:https://blog.csdn.net/2301_77523019/article/details/135644414