美文网首页mysql数据库
mysql查询注意事项

mysql查询注意事项

作者: Geroge1226 | 来源:发表于2021-07-12 14:43 被阅读0次

1、说明

使用mysql数据库最多的是进行业务的查询写入。尤其是查询,我们会遇到各类场景特殊性。需要对数据按照各种方式筛选,以下是注意事项部分记录:

2、select查询注意事项集

常见的基础查询语句格式如下:

select 属性列表
       from 表名或试图列表
       [where 条件表达式1]
       [group by 属性名1 [having 条件表达式2]]
       [order by 属性名2 [ASC | DESC]]

其中,group by 子句,按照属性名1 字段进行分组,再满足HAVING后条件表达式才能够输出数据。order by字句, 默认按ASC 升序排序,DESC为倒序(值由大到小)。

2.1 like 模糊匹配两种形式

(1)使用通配符“ % ” 匹配一个或者多个字符。

  • like “%xxx”: 匹配xxx结尾的数据。
  • like “xxx%”: 匹配xxx开头的数据。
  • like “%xxx%”:匹配中间包含 xxx的数据。

(2)单个匹配"_" 字符。

  • like "k_d":匹配首尾是kd的三个字符的字符串,但是,中文是占两个字符,需要用两个"_" 字符。 like "张 _ _" 匹配开头为张的两个字的中文。
2.2、is [not] null 区别于 = null

is null 表示值为null的记录,筛选不能替换成“ = null ”,否则数据无法获取到。显示数据记录为空。

2.3、or关键词使用注意

(1)当 orand同时使用,先执行and连接前后语句再执行or语句,与or所在位置无关。
如下两条语句执行结果一致:

select * from myexp_activity_page where  page_name like "树亮%" or id>'14' and page_remarks = '测试';
select * from myexp_activity_page where   id>'14' and page_remarks = '测试' or page_name like "树亮%";

两次运行结果如下:


image.png
2.4、order by中值为null的排序问题

order by 按照某属性名排序时,属性名对应值有null情况。

  • 如果升序排序:null值记录展示在最前面。
  • 如果降序排序:null值记录展示在最后面。
2.5 、group by使用问题

(1)简单实用group by 只会显示每个分组的一条记录。

  • 原来表记录:


    image.png
  • 按照“status” 分组

select id,status from myexp_activity_page group by status;  
  • 查询结果


    image.png

    目前表中status只有 “1,2”, 示了 “1” 和“2” 中的2条数据。

(2)group_cancat (属性名)group by 同时使用。展示每个分组指定的属性字段所有值,多个按逗号隔开。

select * , GROUP_CONCAT(id) from myexp_activity_page group by status;
image.png

(3)集合函数的意义:执行顺序,先按照属性名1 进行分组,然后再对每一组数据进行统计。

select 属性名1 ,count(属性名1)   from group  by 属性名1;

常见与group by 配合使用集合函数count(),max(),min(),svg(),sum()

(4)group by 与 having 条件表达式使用
先执行group by 分组,在筛选分组满足having条件表达式 的数据输出。

  • 原始表数据


    image.png
  • info_type分组筛选
select * ,count(1) from sys_admin_information group by info_type having count(info_type) > 16;
  • 输出结果


    image.png

(5)多属性分组注意点
group by 字段1,字段2 执行顺序先按照字段1分组,如果遇到字段1相同情况,在按照字段2进行分组,依次类推。

2.6、havingwhere 区别

相同点:都是用来限制显示信息条件。
不同点:where作用与表或试图,having作用与分组后的记录,用于筛选满足条件的分组。

2.7、limit筛选事项

(1)limit num:不指定初始位置,表示查询num条记录数
(2)limit start,num:指定初始问题,从指定位置开始查找后面num条记录

2.8、max()集合函数

不仅可以作用于数字类似的属性,也可以作用于字符属性,作用字符类型上是作用与Asii码的排序。
group by使用时候,依然遵循简单的group by 分组原则,会取第一条记录,而max()会将众多分组最大属性展示,不要以为会整条记录会取max最大的那一条,max只会取作用字段属性上最大的值。
例如原表数据如下:info_type = menu 的最大menu_order 是16

image.png

查询语句

select *,max(menu_order) from sys_admin_information group by info_type;

查询结果:menu分组取的记录依然是第一条menu_order =1的记录,而max作用的字段属性取的是最大值16。

image.png
2.9、union与union all区别

union把两个查询结果合并在一起,去除重复的记录。
union all 只将两个查询结果合并在一起,不做去重处理。

相关文章

  • Java面试要点-数据存储-精简答案

    MySQL 索引使用的注意事项 索引的目的在于提高查询效率。可以类比字典,如果要查“mysql”这个单词,我们肯定...

  • MySQL 数据库索引使用场景&注意事项

    目录 1.何种查询支持索引?2.注意事项和建议 一 何种查询支持索引? 1 MySQL 目前支持前导列 2.索引列...

  • mysql查询注意事项

    1、说明 使用mysql数据库最多的是进行业务的查询和写入。尤其是查询,我们会遇到各类场景特殊性。需要对数据按照各...

  • 2018-03-20

    MYSQL查询语句 MYSQL复杂操作语句 MYSQL多表查询方法 函数部分

  • 高性能的索引策略

    MySQL查询基础-查询执行过程 MySQL聚簇索引 MySQL覆盖索引 MySQL索引扫描排序 MySQL冗余和...

  • MySQL学习——查询缓存

    MySQL查询缓存简介 MySQL查询缓存是MySQL将查询返回的完整结果保存在缓存中。当查询命中该缓存,MySQ...

  • Mysql 慢查询日志

    Mysql 慢查询日志 慢查询日志 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中...

  • mysql 查询

    mysql的查询、子查询及连接查询 一、mysql查询的五种子句 where(条件查询)、having(筛选)、g...

  • MySQL 索引及查询优化总结-2018-03-20

    MySQL 索引及查询优化总结 文章《MySQL查询分析》讲述了使用MySQL慢查询和explain命令来定位my...

  • SQL查询近期数据

    mysql查询时间的数据: 解释: 1.(mysql查询今天的数据) 2.(mysql查询昨天的数据) 3.(以当...

网友评论

    本文标题:mysql查询注意事项

    本文链接:https://www.haomeiwen.com/subject/xfrrpltx.html