MySQL高级优化指SELECT查询语句的执行流程原理

1.select 语句完整的查询顺序

select 字段
	from 表1 别名
	  连接类型  join 表2 别名 
	    on 连接条件
	      where 条件1
			 group by 分组字段
				 having 条件2(一般是分组条件)
					order by 排序字段 (desc/asc)
                    	limit 索引,最大查询数量;

  1. 查询语言执行

    例图中 代码片段顺序从上到下执行
    注: 别名可取可不取,灵活运用

from ...
join...on... 
where ... 
group by ... 
having...  
select ... 
order by... 
limit ...

  1. join 前后内容注意点
1. join前为连接内容、后为表名
  inner  :内连接
     select 列名 from 左表 inner join 右表 on 从表.外键=主表.主键
  left   :左外连接
     select 列名 from 左表 left join 右表 on 从表.外键=主表.主键
  right  :右外连接
     select 列名 from 左表 right join 右表 on 从表.外键=主表.主键

  1. where 后续内容
5. 比较运算符: >  <  >=  <= 	 =	<> != (都是不等于)
6. 逻辑运算符: and or not
    a. in关键字:  id = 1 or id =2  -> id in(1,2)
    b. between关键字: age between 5 and 10; ->  age>=5 and age <=10
    c. like关键字(模糊查询) :  name like '%马%'
        1). _ 表示一个
        2). % 表示0或多个
        
7. 注意: 不能跟着聚合函数

  1. group by 的注意事项
1. 聚合函数
	a. 如果不在分组查询中,所有数据分为一组
	b. 如果在分组查询中, 分组之后执行聚合函数
	c. 常见聚合函数
		1). sum 求和
        2). avg 平均
        3). count 统计
        4). max/min 最大/最小
    d. 注意: null不参与聚合运算的
2. select 后面只能跟 '被分组的列' 和 聚合函数
3. having 可以用来过滤聚合函数的判断条件  

  1. select 的注意事项
    注 : 尽量不要全表查询,尽量使用索引覆盖查询
7. 跟被查询的字段
8. * 代表该表所有字段
9. distinct 滤重: 只保存这个字段不同的值
10. 字段可以取别名 as(也可以省略)
  1. order by
 默认为升序排序
1. order by 字段 desc : 根据字段值降序排序(asc是升序,可以省略)
2. order by 字段1 desc, 字段2 asc : 先根据字段1降序,如果字段1相等,根据字段2升序

  1. limit 索引,最大查询数量
    limit 参数一 起始页
    参数二 每页记录数
    注 : 可再排序后加limit 使索引生效
-- 规律: 用户 查询第n页,每页count条
-- 当前页的sql如何编写
	-- index = (n-1) * count
	select * from student limit index,count;

					MySQL查询流程图解

在这入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值