1、基础知识

厨子大约 3 分钟数据库原创面试题MySQL程序厨

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/51004754open in new window

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.htmlopen in new window

1.5 InnoDB 和 MyIsam 对比

事务:InnoDB 支持事务,MyIsam 不支持事务

索引:InnoDB 主键索引存的是数据,MyIsam存的是地址

https://www.cnblogs.com/y-rong/p/8110596.htmlopen in new window

1.6 Char 和 Varchar 的区别

char 则是固定长度,长度设定几为几,不足会进行补齐

varchar 则为可变长度,当不足长度时,则按照存储的长度。

char 的效率高一些。

推荐阅读:https://blog.csdn.net/qq_20264581/article/details/83755789open in new window