欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

面试相关总结(MySql)

程序员文章站 2024-03-21 21:22:16
...

1、 查询语法与执行顺序

1.1 查询语法顺序

  1. Select
  2. From
  3. Left JOIN
  4. ON
  5. Where
  6. Group by
  7. Having
  8. Order by
  9. Limit

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、事务相关

4、Innodb与MyISAM的比较

相关标签: Mysql