1、基础知识
1.MySQL 基础
1.0 MySQL 的内部构造,一般可以分为哪两个部分
可以分为服务层和存储引擎层两部分
服务层:连接器,查询缓存,分析器,优化器,执行器等,提供了MySQL 大部分的核心服务功能,以及内置函数,所有的跨存储引擎的功能都在这一层实现。

存储引擎负责数据的存储和提取。
1.1 一条 SQL 语句的执行过程
1.首先进行链接,链接时进行验证,保证安全性,查看执行权限
2.查看缓存,是否有这条语句的执行缓存,如果有缓存则直接返回缓存
3.连接器,分析器(这里查看语法是否有错误),优化器,执行器,搜索引擎
这一块也是常考重点
1.2 Order By 是如何工作的
1.3 SQL 语句中各关键字的执行顺序
推荐阅读:https://blog.csdn.net/u014044812/article/details/51004754
1. SELECT
2. DISTINCT <select_list>
3. FROM <left_table>
4. <join_type> JOIN <right_table>
5. ON <join_condition>
6. WHERE <where_condition>
7. GROUP BY <group_by_list>
8. HAVING <having_condition>
9. ORDER BY <order_by_condition>
10.LIMIT <limit_number>
执行顺序
FROM
<表名> # 笛卡尔积
ON
<筛选条件> # 对笛卡尔积的虚表进行筛选
JOIN <join, left join, right join...>
<join表> # 指定join,用于添加数据到on之后的虚表中,例如left join会将左表的剩余数据添加到虚表中
WHERE
<where条件> # 对上述虚表进行筛选
GROUP BY
<分组条件> # 分组
<SUM()等聚合函数> # 用于having子句进行判断,在书写上这类聚合函数是写在having判断里面的
HAVING
<分组筛选> # 对分组后的结果进行聚合筛选
SELECT
<返回数据列表> # 返回的单列必须在group by子句中,聚合函数除外
DISTINCT
# 数据除重
ORDER BY
<排序条件> # 排序
LIMIT
<行数限制>
1.4 说一说 Drop,Delete,Truncate 的共同点和区别
truncate drop delete 都表示删除,不过还是有一些不同
Drop 会安全删除表,并清空内存,不会触发触发器,这个命令不能回滚。
delete 用来删除表中的全部或者部分行,执行 delete 之后,可以删除或者撤销删除,内存不会被清空,会触动触发器,继续插入新值时,会继续之前的 id,可以是table 和 view
truncate 不会触动触发器,会恢复内存,视图和索引不会产生影响,还会重置自增值。且只能针对表。
推荐阅读:https://www.cnblogs.com/fjl0418/p/7929420.html
1.5 InnoDB 和 MyIsam 对比
事务:InnoDB 支持事务,MyIsam 不支持事务
索引:InnoDB 主键索引存的是数据,MyIsam存的是地址
https://www.cnblogs.com/y-rong/p/8110596.html
1.6 Char 和 Varchar 的区别
char 则是固定长度,长度设定几为几,不足会进行补齐
varchar 则为可变长度,当不足长度时,则按照存储的长度。
char 的效率高一些。
推荐阅读:https://blog.csdn.net/qq_20264581/article/details/83755789
