程序员社区

史上最强MySQL面试题汇总,超详细附答案!

我把所有Java相关的面试题和答案都整理成了PDF,并且带书签目录,阅读起来非常方便

面试题及答案PDF下载https://www.hicxy.com/?p=2645

面试题及答案PDF下载https://www.hicxy.com/?p=2645

面试题及答案PDF下载https://www.hicxy.com/?p=2645

1. 索引对性能的影响:

  • 大大减少服务器需要扫描的数据量。
  • 帮助服务器避免排序和临时表。
  • 将随机I/O变顺序I/O。
  • 大大提高查询速度。
  • 降低写的速度(不良影响)。
  • 磁盘占用(不良影响)。

2. 索引分类

单值索引: 即一个索引只包含单个列,一个表可以有多个单列索引

  • 建表时,加上 key(列名) 指定
  • 单独创建,create index 索引名 on 表名(列名)
  • 单独创建,alter table 表名 add index 索引名(列名)

唯一索引: 索引列的值必须唯一,但允许有 null 且 null 可以出现多次

  • 建表时,加上 unique(列名) 指定
  • 单独创建,create unique index idx_表名_列名 on 表名(列名)
  • 单独创建,alter table 表名 add unique 索引名(列名)

主键索引: 设定为主键后数据库会自动建立索引,innodb 为聚簇索引,值必须唯一且不能为 null

  • 建表时,加上 primary key(列名) 指定

复合索引: 即一个索引包含多个列

  • 建表时,加上 key(列名列表) 指定
  • 单独创建,create index 索引名 on 表名(列名列表)
  • 单独创建,alter table 表名 add index 索引名(列名列表)

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

1、超键: 在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。
2、候选键: 是最小超键,即没有冗余元素的超键。
3、主键: 数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。
4、外键: 在一个表中存在的另一个表的主键称此表的外键。

4. MySQL 里记录货币用什么字段类型好

NUMERIC 和 DECIMAL 类型被 MySQL 实现为同样的类型, 这在 SQL92 标准允许。他们被用于保存值, 该值的准确精度是极其重要的值, 例如与金钱有关的数据。当声明一个类是这些类型之一时, 精度和规模的能被(并且通常是)指定。

例如:

salary DECIMAL(9,2)

在这个例子中, 9(precision)代表将被用于存储值的总的小数位数,而 2(scale)代表将被用于存储小数点后的位数。因此, 在这种情况下, 能被存储在 salary 列中的值的范围是从-9999999.99 到9999999.99。

5. 那么在哪些情况下会发生针对该列创建了索引但是在查询的时候并没有使用呢?

  • 使用不等于查询,
  • 列参与了数学运算或者函数
  • 在字符串like时左边是通配符.类似于'%aaa'.
  • 当mysql分析全表扫描比使用索引快的时候不使用索引.
  • 当使用联合索引,前面一个条件为范围查询,后面的即使符合最左前缀原则,也无法使用索引.

以上情况,MySQL无法使用索引.

后面的问题,大家可以先自己独立思考一下。

另外我把所有Java相关的面试题和答案都整理出来了,给大家参考一下

面试题及答案PDF下载https://www.hicxy.com/?p=2645

面试题及答案PDF下载https://www.hicxy.com/?p=2645

面试题及答案PDF下载https://www.hicxy.com/?p=2645

6. 外连接(LEFT JOIN/RIGHT JOIN)

7. 并发事务带来哪些问题?

8. MySQL由哪些部分组成, 分别用来做什么

9. 唯一索引比普通索引快吗, 为什么

10. 全连接(FULL JOIN)

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

12. 上面提到了B+树在满足聚簇索引和覆盖索引的时候不需要回表查询数据,什么是聚簇索引?

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

14. 怎么解决这些问题呢?MySQL的事务隔离级别了解吗?

15. MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义

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

17. MySQL复制基本原理流程

18. 主键使用自增ID还是UUID?

19. 内连接分为三类

20. MySQL 有哪些数据类型?

21. 存储时期

22. MySQL都有哪些锁呢?像上面那样子进行锁定岂不是有点阻碍并发效率了?

23. MySQL数据库cpu飙升到500%的话他怎么处理?

24. 什么是关系型数据库?

25. 如果一个表有一列定义为TIMESTAMP,将发生什么?

26. 做过哪些MySQL索引相关优化

27. 请说明InnoDB和MyISAM的区别

28. Explain 性能分析

29. 什么是存储过程?

30. 数据库删除操作中的 delete、drop、 truncate 区别在哪?

31. 锁的优化策略

32. MySQL如何保证复制过程中数据一致性及减少数据同步延时

33. 锁机制与InnoDB锁算法

34. 索引的类型

35. 横向分表和纵向分表,可以分别举一个适合他们的例子吗?

36. MySQL 存储引擎类型有哪些?

37. 六种关联查询

38. 请说明varchar和text的区别

39. SELECT COUNT(*) 在哪个引擎执行更快?

40. 使用索引查询一定能提高查询的性能吗?为什么

41. VARCHAR(50) 能存放几个 UTF8 编码的汉字?

42. ACID是什么?可以详细说一下吗?

43. SQL 语句有哪些分类?

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

45. 索引的区别

46. MySQL中的varchar和char有什么区别.

47. 同时有多个事务在进行会怎么样呢?

48. MySQL索引的注意事项

49. InnoDB 存储引擎应用场景是什么?

50. MySQL 数据库作发布系统的存储,一天五万条以上的增量, 预计运维三年,怎么优化?

51. 索引的使用场景

52. 存储引擎常用命令

53. MySQL锁机制

54. 存储过程和函数好像差不多,你说说他们有什么区别?

55. 为什么要尽量设定一个主键?

56. InnoDB和MyISAM有什么区别?

57. UNION与UNION ALL的区别?

58. myisamchk 是用来做什么的?

59. 说一说三个范式

60. 什么是触发器,MySQL中都有哪些触发器?

61. 索引是个什么样的数据结构呢?

62. 简单描述MySQL中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响?

63. 为什么用 B+ 树做索引而不用哈希表做索引?

64. 索引的优缺点

65. innodb引擎的特性

66. MySQL 中有哪几种锁?

67. 简单说一说drop、delete与truncate的区别

68. 怎么看到为表格定义的所有索引?

69. B-Tree 和 B+Tree

70. 什么是MySQL?

71. 以下三条sql 如何建索引,只建一条怎么建?

72. 以下语句是否会应用索引:SELECT FROM users WHERE YEAR(adddate) < 2007;

73. 什么是 MySql 视图?

74. Innodb使用的是哪种隔离级别呢?

75. MyISAM索引与InnoDB索引的区别?

76. Myql 中的事务回滚机制概述

77. 什么是视图?以及视图的使用场景有哪些?

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

79. int(10) 和 bigint(10) 能存储的数据大小一样吗?

80. Hash索引和B+树所有有什么区别或者说优劣呢?

81. SQL 注入漏洞产生的原因?如何防止?

82. MyISAM存储引擎特性有哪些?

83. 创建MySQL联合索引应该注意什么?

84. 在建立索引的时候,都有哪些需要考虑的因素呢?

85. 优化数据库的方法

86. 解释 MySQL 外连接、内连接与自连接的区别

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

88. 数据库的乐观锁和悲观锁是什么?

89. MySql 服务默认端口号是多少 ?

90. 创建索引的语法

91. 如何在MySQL种获取当前日期?

92. 超大分页怎么处理?

93. 使用 MySQL 视图有何优点?

94. MySQL支持哪些存储引擎?

95. MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义

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

97. 索引的基础

98. MySQL的常用操作

99. MySQL索引的原理

100. InnoDB 引擎的四大特性是什么?

101. varchar(10)和int(10)代表什么含义?

102. 什么是事务?

103. SQL语句优化的一些方法?

104. 对MySQL的锁了解吗?

105. 索引是什么?有什么作用以及优缺点?

106. 如何优化SQL

107. FLOAT和DOUBLE的区别是什么?

108. MySQL事务处理

109. 关系型数据库有什么优势?

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

111. innodb的事务与日志的实现方式

112. 什么是 SQL

113. drop、delete与truncate分别在什么场景之下使用?

114. 什么情况下设置了索引但无法使用

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

116. MyISAM索引实现?

117. MyISAM存储引擎应用场景有哪些?

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

119. 创建的索引有没有被使用到?或者说怎么才可以知道这条语句运行很慢的原因?

120. 联合查询(UNION与UNION ALL)

121. 简单描述 MySQL 中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)

122. 触发器的使用场景

123. CHAR 和 VARCHAR的区别?

124. MySQL索引的创建原则

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

赞(0) 打赏
未经允许不得转载:IDEA激活码 » 史上最强MySQL面试题汇总,超详细附答案!

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区