• Mysql_Note3


    1.where和having的区别

    1.1总结

    优点缺点
    where先筛选数据再关联,执行效率高不能用分组中的计算函数进行筛选
    having先连接后筛选,在最后的结果集中进行筛选,执行效率低可以使用分组中的计算函数进行筛选

    1.2思考题

    1. HAVING 后面的条件,必须是包含分组中的计算函数的条件,你觉得对吗?为什么?
    HAVING后面的条件,必须是包含分组中计算函数的条件。这种说法是有道理的,主要是考虑到查询的效率。因为如果不是分组中的计算函数的条件,那么这个条件应该可以用WHERE而不是用HAVING,查询的效率就不高了
    
    • 1

    2.聚合函数

    2.1总结

    函数名含义
    sum指定字段求和
    avg平均值
    max最大值
    min最小值
    left(str,n)表示返回字符串str最左边的n个字符
    count(*)统计一共有多少条记录
    count(字段)统计有多少个不为空的字段

    2.2思考题

    1, 如果用户想要查询一下,在商品信息表中,到底是哪种商品的商品名称有重复,分别重复了几次,该如何查询呢

    select goodsname,count(*), from demo.goodsmaster group by goodsname
    
    • 1

    2.count(*) ,count(1) ,count(列名),这3者的区别

    count(*) 意思是统计表中所有的行
    count(1) 意思是统计表的行数
    count(列名)意思是统计表中列名字段不为NULL的数量
    
    count(*),count(1)稍微高效一些,
    如果字段是主键,count(字段)count(*),count(1)更快些,否者反之
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.时间函数

    3.1获取日期时间数据中部分信息的函数

    -- 语法:从日期时间数据“date”中抽取“type”指定的部分
    EXTRACT(type FROM date)
    -- 示例
    EXTRACT(HOUR FROM b.transdate)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    函数含义
    YEAR(date)获取 date 中的年
    MONTH(date)获取 date 中的月
    DAY(date)获取 date 中的日
    HOUR(date)获取 date 中的小时
    MINUTE(date)获取 date 中的分
    SECOND(date)获取 date 中的秒

    3.2计算日期时间的函数

    --语法
    DATE_ADD(date, INTERVAL 表达式 type--示例
    DATE_ADD('2020-12-10', INTERVAL - 1 YEAR);
    
    • 1
    • 2
    • 3
    • 4
    -- 语法:表示获取日期时间“date”所在月份的最后一天的日期
    LAST_DAY(date-- 示例,今天是 2020 年 12 月 10 日,获取 2019 年 11月30日
    DATE_ADD(LAST_DAY(DATE_ADD(DATE_ADD('2020-12-10', INTERVAL - 1 YEAR),INTERVAL - 1 MONTH)),INTERVAL 1 DAY)
    
    • 1
    • 2
    • 3
    • 4

    3.3 其他日期时间函数

    函数含义
    CURDATE()获取当前的日期,日期格式为“YYYY-MM-DD”
    DAYOFWEEK(date1)获取日期“date”是周几,1 表示周日,2 表示周一,7 表示周六
    DATE_FORMAT(date1,格式)它表示将日期时间“date”按照指定格式显示,DATE_FORMAT(“2020-12-01 13:25:50”,“%T”),%T表示24 小时制
    DATEDIFF(date1,date2)计算两个时间相隔的天数
    -- case语法
    CASE 表达式 WHEN1 THEN 表达式1 [ WHEN2 THEN 表达式2] ELSE 表达式m END
    
    --示例
    CASE DAYOFWEEK(CURDATE()) - 1 WHEN 0 THEN 7 ELSE DAYOFWEEK(CURDATE()) - 1 END AS 周几
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.4思考题

    1.假如用户想查一下今天是星期几(不能用数值,要用英文显示)你可以写一个简单的查询语句吗?

    select date_format(curdate(),'%W ');
    
    • 1

    2.复杂系统,使用时间函数时,要注意时钟同步

  • 相关阅读:
    【嵌入式Linux应用】初步移植MQTT到Ubuntu和Linux开发板
    Django笔记二十七之数据库函数之文本函数
    新亮点!安防视频监控/视频集中存储/云存储平台EasyCVR平台六分屏功能展示
    【云原生 · Kubernetes】kubeadm创建集群
    Gradio实现算法可视化
    Java后端开发工程师学习笔记【狂神说Java笔记】
    OLED显示文字,字母,数字
    五、核支持向量机算法(NuSVC,Nu-Support Vector Classification)(有监督学习)
    @Redis--持久化
    计算机网络 TCP通信
  • 原文地址:https://blog.csdn.net/weixin_44689630/article/details/126211675