清科谷体的博客

  • 文章
  • 关于
  • 联系
  • 隐私政策

  1. 首页
  2. 编程
  3. 正文

MySQL 查询时需注意的技巧

2024年7月20日 208点热度 0人点赞 0条评论

在学校里学完SQL,再过一遍《MySQL 必知必会》语法是都会,但是处理的技巧要在实践中才能领悟到
记载下在LeetCode上刷题时,编写查询语句影响深刻的技巧。

聚合函数sum()、count()、avg()、max()、min(),在查询条件时where join on使用时要分组,不分组会自动分组显示。在查询结果时select不用分组

count统计可以count(if(condition,1,null))来统计符合条件的行,因为count默认不统计null行。

count(*)会统计null行

计算所占比例,可以用

sum(conditional statements)/count(*) 但其实avg(conditional statements)就可以,因为avg() = sum()/count()

DATE_FORMAT() 函数用于格式化时间

null 不要用 = 和!= ,用is 和not is。

char_length()能统计中文字符,无论是汉字,字母,数字,标点都是一个字符。length()统计的是字节,汉字按照编码不同,可能是3个或者2个。

Round()控制精度

时间范围用between and,between and 是包含两边界值的

NOT BETWEEN 是不包含两个边界的

if()函数 IF(condition, value_if_true, value_if_false),if函数可以使用查询的字段比较,不需要再次子查询

ifnull函数 IFNULL(value_if_isnot_null, value_if_is_null)

group by分组统计,计算sum,count更方便,分组后使用max 和 min有奇效

order by可以多个字段排序,用逗号隔开即可

连接的join on条件可以是多个语句,多个语句也可以全放在join on里,也可以放在where与语句里

连接

左右连接

left join 选前面的表的所有列和后面的表相匹配的列

right join 选后面的表的所有列和前面的表相匹配的列

要谁的所有列的数据来选择左右连接,如果被连接的表没有匹配的列会用null 填充。

内连接只匹配相等的列

交叉连接,取笛卡儿积,所有列相乘的结果,可以与自己交叉连接做一些查询。

并集,多次查询将结果合并,union 或者 union all

union不含重复行,union all包括所有行

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: MySQL 数据库
最后更新:2024年9月6日

ingker

自娱自乐

点赞
< 上一篇
下一篇 >

文章评论

取消回复

COPYRIGHT © 2025 清科谷体's blog. ALL RIGHTS RESERVED.
THEME KRATOS MADE BY VTROIS | MODIFIED BY INGKER

正在加载今日诗词....

本站已运行