MySql查询语法揭秘
作为一名后端开发人员, 数据库可谓是与你如影随形, 但是天天和数据库打交道的你真的了解数据库么, 你写的每一条查询语句内部是怎么工作的你有没有了解过呢, 或许大多数的人只是停留在会用的阶段, 并不了解其实现细节. 如果SQL查询语句的实现细节不了解的话, 那么优化也无从说起, 所以下面就聊聊sql的查询细节.
1. Mysql查询语法书写顺序
- SELECT
- FROM
- LEFT JOIN
- ON
- WHERE
- GROUP BY
- HAVING
- ORDER BY
- LIMIT
2. Mysql查询语句执行细节
示例SQL语句
select * from user
left join order on user.id = order.uid
where order.price > 1000
group by user.name
having count(1) > 5
order by user.name
limit 0, 10;
注 : select * 会影响查询效率, 这里只是方便举例子
-
FROM(将最近的两张表,进行笛卡尔积) —VT1
-
ON(将VT1按照它的条件进行过滤) —VT2
-
LEFT JOIN(保留左表的记录) —VT3
-
WHERE(过滤VT3中的记录) --VT4…VTn
-
GROUP BY(对VT4的记录进行分组) —VT5
-
HAVING(对VT5中的记录进行过滤) —VT6
-
SELECT(对VT6中的记录,选取指定的列) --VT7
-
ORDER BY(对VT7的记录进行排序)–游标
-
LIMIT(对排序之后的值进行分页)