MySQL(面试题 - 同类型归纳面试题)

目录

一、MySQL 数据类型

1. 数据库存储日期格式时,如何考虑时区转换问题?

2. Blob和text有什么区别?

3. mysql里记录货币用什么字段类型比较好?

4. MySQL如何获取当前日期?

5. 你们数据库是否支持emoji表情存储,如果不支持,如何操作?

6. varchar(50)中50的涵义

7. mysql中int(20)和char(20)以及varchar(20)的区别

8. 字段为什么要求定义为not null?

9. 如果要存储用户的密码散列,应该使用什么字段进行存储?

10. MySQL中DATETIME和TIMESTAMP的区别

11. MySQL中TEXT数据类型的最大长度

二、关联查询

1. Mysql 的内连接、左连接、右连接有什么区别?(已整合)

2. 什么是内连接、外连接、交叉连接、笛卡尔积呢?

3. 谈谈六种关联查询,使用场景。

4. UNION与UNION ALL的区别?

三、主键问题

1. 如何选择合适的分布式主键方案呢?

2. 数据库自增主键可能遇到什么问题

3. 主键使用自增ID还是UUID,为什么?

4. mysql自增主键用完了怎么办?

四、MySQL架构

1. 说说MySQL 的基础架构图

2. Mysql的binlog有几种录入格式?分别有什么区别?

3. InnoDB引擎的4大特性,了解过吗

五、存储引擎

1. InnoDB与MyISAM的区别

2. InnoDB引擎中的索引策略,了解过吗?

六、索引问题

1. MySQL 索引使用有哪些注意事项呢?

2. 数据库索引的原理,为什么要用 B+树,为什么不用二叉树?

3. 聚集索引与非聚集索引的区别

4. 如何写sql能够有效的使用到复合索引

5. Hash索引和B+树区别是什么?你在设计索引是怎么抉择的?

6. 索引有哪些优缺点?

7. 索引有哪几种类型?

8. 创建索引有什么原则呢?

9. 创建索引的三种方式

10. 百万级别或以上的数据,你是如何删除的?

11. 什么是最左前缀原则?什么是最左匹配原则?

12. B树和B+树的区别,数据库为什么使用B+树而不是B树?

13. 覆盖索引、回表等这些,了解过吗?

14. B+树在满足聚簇索引和覆盖索引的时候不需要回表查询数据?

15. 何时使用聚簇索引与非聚簇索引

16. 非聚簇索引一定会回表查询吗?

17. 组合索引是什么?为什么需要注意组合索引中的顺序?

18. 列值为NULL时,查询是否会用到索引?

七、SQL优化

1. SQL优化的一般步骤是什么,怎么看执行计划(explain),如何理解其中各个字段的含义。

2. 如果某个表有近千万数据,CRUD比较慢,如何优化

3. 说一下大表查询的优化方案

4. 关心过业务系统里面的sql耗时吗?统计过慢查询吗?对慢查询都怎么优化过?

5. 如何优化长难的查询语句?有实战过吗?

6. 优化特定类型的查询语句

7. 谈谈MySQL的Explain

八、锁问题

1. MySQL 遇到过死锁问题吗,你是如何解决的?

2. 在高并发情况下,如何做到安全的修改同一行数据?

3. 数据库的乐观锁和悲观锁

4. select for update有什么含义,会锁表还是锁行还是其他。

5. Mysql中有哪几种锁,列举一下?

6. 隔离级别与锁的关系

7. 按照锁的粒度分,数据库锁有哪些呢?锁机制与InnoDB锁算法

8. 从锁的类别角度讲,MySQL都有哪些锁呢?

9. MySQL中InnoDB引擎的行锁是怎么实现的?

10. 什么是死锁?怎么解决?

11. Mysql一条SQL加锁分析

九、事务

1. 事务的隔离级别有哪些?MySQL的默认隔离级别是什么?

2. 什么是幻读,脏读,不可重复读呢?

3. MySQL事务得四大特性以及实现原理

4. MVCC熟悉吗,它的底层原理?

5. 什么是数据库事务?

6. Innodb的事务实现原理?

7. Innodb的事务与日志的实现方式

十、SQL执行过程

1. 一条SQL语句在MySQL中如何执行的?

2. 一条sql执行过长的时间,你如何优化,从哪些方面入手?

3. 一条Sql的执行顺序?

十一、视图 & 游标 & 存储过程 & 存储函数 & 触发器等

1. 为什么要使用视图?什么是视图?

2. 视图有哪些特点?哪些使用场景?

3. 视图的优点,缺点,讲一下?

4. 什么是游标?

5. 什么是存储过程?有哪些优缺点?

6. 什么是触发器?触发器的使用场景有哪些?

7. MySQL中都有哪些触发器?

十二、分布式问题

1. 说说分库与分表的设计

2. 数据库中间件了解过吗,sharding jdbc,mycat?

3. MYSQL的主从延迟,你怎么解决?

4. 读写分离常见方案?

5. MySQL的复制原理以及流程

6. 你是否做过主从一致性校验,如果有,怎么做的,如果没有,你打算怎么做?

十三、生产实际问题

1. 日常工作中你是怎么优化SQL的?

2. MySQL数据库cpu飙升的话,要怎么处理呢?

3. 500台db,在最快时间之内重启

4. 你是如何监控你们的数据库的?你们的慢日志都是怎么查询的?

十四、其它问题

1. mysql中in和exists的区别

2. MYSQL数据库服务器性能分析的方法命令有哪些?

3. 说一下数据库的三大范式

4. mysql有关权限的表有哪几个呢?

5. 一个6亿的表a,一个3亿的表b,通过外间tid关联,你如何最快的查询出满足条件的第50000到第50200中的这200条数据记录

6. count(1)、count(*) 与 count(列名) 的区别?

7. 超键、候选键、主键、外键分别是什么?

8. SQL 约束有哪几种呢?

9. drop、delete与truncate的区别

10. SQL的生命周期?

11. Mysql驱动程序是什么?

12. 什么是数据库连接池?为什么需要数据库连接池呢?


一、MySQL 数据类型

1. 数据库存储日期格式时,如何考虑时区转换问题?

  • datetime类型适合用来记录数据的原始的创建时间,修改记录中其他字段的值,datetime字段的值不会改

变,除非手动修改它。

  • timestamp类型适合用来记录数据的最后修改时间,只要修改了记录中其他字段的值,timestamp字段的

值都会被自动更新。

如何考虑时区转换问题/看一下这个吧:数据库存储日期格式时,如何考虑时区转换问题?

2. Blob和text有什么区别?

  • Blob用于存储二进制数据,而Text用于存储大字符串。
  • Blob值被视为二进制字符串(字节字符串),它们没有字符集,并且排序和比较基于列值中的字节的数值。
  • text值被视为非二进制字符串(字符字符串)。它们有一个字符集,并根据字符集的排序规则对值进行排

序和比较。

3. mysql里记录货币用什么字段类型比较好?

  • 货币在数据库中MySQL常用Decimal和Numric类型表示,这两种类型被MySQL实现为同样的类型。他们

被用于保存与金钱有关的数据。

  • salary DECIMAL(9,2),9(precision)代表将被用于存储值的总的小数位数,而2(scale)代表将被用于存储

小数点后的位数。存储在salary列中的值的范围是从-9999999.99到9999999.99。

  • DECIMAL和NUMERIC值作为字符串存储,而不是作为二进制浮点数,以便保存那些值的小数精度。

4. MySQL如何获取当前日期?

SELECT CURRENT_DATE();

5. 你们数据库是否支持emoji表情存储,如果不支持,如何操作?

更换字符集utf8–>utf8mb4

6. varchar(50)中50的涵义

  • 字段最多存放 50 个字符
  • 如 varchar(50) 和 varchar(200) 存储 “jay” 字符串所占空间是一样的,后者在排序时会消耗更多内存

7. mysql中int(20)和char(20)以及varchar(20)的区别

  • int(20) 表示字段是int类型,显示长度是 20
  • char(20)表示字段是固定长度字符串,长度为 20
  • varchar(20) 表示字段是可变长度字符串,长度为 20

8. 字段为什么要求定义为not null?

null值会占用更多的字节,并且null有很多坑的。

9. 如果要存储用户的密码散列,应该使用什么字段进行存储?

密码散列,盐,用户身份证号等固定长度的字符串,应该使用char而不是varchar来存储,这样可以节省空间

且提高检索效率。

10. MySQL中DATETIME和TIMESTAMP的区别

存储精度都为秒

区别:

  • DATETIME 的日期范围是 1001——9999 年;TIMESTAMP 的时间范围是 1970——2038 年
  • DATETIME 存储时间与时区无关;TIMESTAMP 存储时间与时区有关,显示的值也依赖于时区
  • DATETIME 的存储空间为 8 字节;TIMESTAMP 的存储空间为 4 字节
  • DATETIME 的默认值为 null;TIMESTAMP 的字段默认不为空(not null),默认值为当前时间(CURRENT_TIMESTAMP)

11. MySQL中TEXT数据类型的最大长度

  • TINYTEXT:256 bytes
  • TEXT:65,535 bytes(64kb)
  • MEDIUMTEXT:16,777,215 bytes(16MB)
  • LONGTEXT:4,294,967,295 bytes(4GB)

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值