面试相关总结(MySql)

1、 查询语法与执行顺序

1.1 查询语法顺序

  1. Select
  2. From
  3. Left JOIN
  4. ON
  5. Where
  6. Group by
  7. Having
  8. Order by
  9. Limit
    VT表示虚拟表,Mysql每一次操作会产生一个结果集,如上的sql执行顺序如下:
    1) From:将最近的两张表进行笛卡尔积 ——VT1
    2) ON:将VT1安装条件进行筛选——VT2
    3) LEFT JOIN: 保留左表的记录——VT3
    4) WHERE: 过滤VT3中的记录——VT4
    5) GROUP BY:对VT4的记录进行分组——VT5
    6) HAVING: 对VT5中的记录进行过滤——VT6
    7) SELECT:对VT6中的记录选取指定的列——VT7
    8) ORDER BY: 对VT7的记录进行排序——VT8
    9) LIMIT: 对排序之后的值进行分页——VT9

1.2 面试遇到的一些sql

stu(Sno,Sname,Sex,Age,Native) 分别表示:学号、姓名、性别、年龄、籍贯
teacher(Tno,Tname,Post,Sex,Age) 分别表示:编号、姓名、职称、性别、年龄
course(Cno,Cname, Tno,Period) 分别表示:课号、课程名、教师编号、时段
grade(Sno,Cno,Grade) 分别表示:学号、课号、分数
1) 查询班级里选课数量大于3且至少有一门课的成绩大于80分的人数。

Select count(a.SNo)
From stu a, grade b
Where
	a.Sno = b.Sno
and 
	max(b.Grade > 80)
Group by b.Sno
Having count(b.Sno) > 3

2)在3月20号这一天的订单业务中,提交订单时间和结算订单时间低于1分钟的订单。

Select product.*
From product
Where
	data(add_time) == '2021-03-20'
and 
	 TimeStampDiff(SECOND, create_time, end_time)

ps: 关于这方面时间的函数还是不太熟,具体函数使用查看这边

2、索引相关(Innodb)

2.1 基本概念

索引的所用与目录相似,旨在帮助快速查询到结果。
大致可分为聚集索引,非聚集索引,联合索引,哈希索引,全文索引。

2.2 索引实现原理

2.1 聚集索引和非聚集索引

非聚集索引的实现结构是B树,非聚集索引的实现结构是B+树,两个结构的区别是B+树仅叶子节点保存数据,B树叶子节点与非叶子节点均保存数据。

B+Tree对比BTree的优点:

1、磁盘读写代价更低

一般来说B+Tree比BTree更适合实现外存的索引结构,因为存储引擎的设计专家巧妙的利用了外存(磁盘)的存储结构,即磁盘的最小存储单位是扇区(sector),而操作系统的块(block)通常是整数倍的sector,操作系统以页(page)为单位管理内存,一页(page)通常默认为4K,数据库的页通常设置为操作系统页的整数倍,因此索引结构的节点被设计为一个页的大小,然后利用外存的“预读取”原则,每次读取的时候,把整个节点的数据读取到内存中,然后在内存中查找,已知内存的读取速度是外存读取I/O速度的几百倍,那么提升查找速度的关键就在于尽可能少的磁盘I/O,那么可以知道,每个节点中的key个数越多,那么树的高度越小,需要I/O的次数越少,因此一般来说B+Tree比BTree更快,因为B+Tree的非叶节点中不存储data,就可以存储更多的key。

2、查询速度更稳定

由于B+Tree非叶子节点不存储数据(data),因此所有的数据都要查询至叶子节点,而叶子节点的高度都是相同的,因此所有数据的查询速度都是一样的。
特别推荐这一篇博客

3、事务相关

3.1 什么事务?

事务是用来保证数据库的完整性,一批sql命令,要么全部执行要么全不执行。

3.2 ACID

3.2 事务的隔离级别

4、Innodb与MyISAM的比较

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值