文章目录
- 前言
- 面试题系列文章传送门
- MySQL面试题内容
-
- 1. 简述在MySQL数据库中引擎MyISAM和InnoDB的区别?
- 2. MySQL中有哪几种锁?
- 3. 什么是通用SQL函数?
- 4. MySQL中有哪些不同的表格?
- 5. CHAR和VARCHAR的区别?
- 6. MySQL中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?
- 7. myisamchk是用来做什么的?
- 8. 主键和候选键有什么区别?
- 9. 如果一个表有一列定义为TIMESTAMP,将发生什么?
- 10. 列设置为AUTO INCREMENT时,如果在表中达到最大值,会发生什么情况?
- 11. MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
- 12. 你怎么看到为表格定义的所有索引?
- 13.MySQ 支持事务吗?
- 14. 如何在 Unix 和 MySQL 时间戳之间进行转换?
- 15. 列对比运算符是什么?
- 16. LIKE 声明中的%和_是什么意思?
- 17. MySQL_fetch_array 和 MySQL_fetch_object 的区别是什么?
- 18. 怎样才能找出最后一次插入时分配了哪个自动增量?
- 19. MySQL 如何优化 DISTINCT?
- 20. 实践中如何优化 MySQL?
- 21. 优化数据库的方法?
- 22. NOW()和 CURRENT_DATE()有什么区别?
- 23. 简单描述 MySQL 中索引、主键、唯一索引、联合索引的区别,对数据库的性能有什么影响(从读写两方面)?
- 24. 什么是非标准字符串类型?
- 25. BLOB 和 TEXT 有什么区别?
- 26. 什么是锁?
- 27. MySQL 有关权限的表都有哪几个?
- 28. MySQL 里记录货币用什么字段类型?
- 29. MyISAM 表格将在哪里存储,并且还提供其存储格式?
- 30. 列的字符串类型可以是什么?
- 31. 完整性约束包括哪些?
- 32. 什么情况下设置了索引但无法使用?
- 33. SQL注入漏洞产生的原因?如何防止?
- 34. 索引的底层实现原理和优化?
- 35. 数据库中的事务是什么?
- 36. MyISAM Static 和 MyISAM Dynamic 有什么区别?
- 37. 如何显示前 50 行?
- 38. 如何为表中得字段选择合适得数据类型?
- 39. 索引的目的是什么?
- 40. 什么是存储过程?用什么来调用?
- 41. 解释 MySQL 外连接、内连接与自连接的区别?
- 42. 什么情况下不宜建立索引?
- 43. SQL 语言包括哪几部分?每部分都有哪些操作关键字?
- 44. 为数据表建立索引的原则有哪些?
- 45. 索引对数据库系统的负面影响是什么?
- 46. Myql 中的事务回滚机制概述?
- 47. 可以使用多少列创建索引?
- 48. 游标是什么?
- 49. 锁的优化策略?
- 50. 什么是基本表?什么是视图?
- 51. 如何通俗地理解三个范式,说说范式化设计优缺点?
- 52. 试述视图的优点?
- 53. 说说对 SQL 语句优化有哪些方法?
- 54. 主键、外键和索引的区别?
- 55. 你可以用什么来确保表格里的字段只接受特定范围里的值?
前言
作为应届生,处于找工作中ing。今年2月份刚刚整理出来的面试题,时间比较赶就没有按照模块分类排序了。总而言之,顺序比较乱,希望大家耐着性子 看。如果实在介意,评论告知,我会视情况作修改的。另外如果大家觉得我找的答案不够清晰,欢迎私信或者评论只出,我看到都会去修改的!
面试题系列文章传送门
MySQL面试题内容
1. 简述在MySQL数据库中引擎MyISAM和InnoDB的区别?
- 存储结构方面:MyISAM每个MyISAM在磁盘上存储成三个文件.frm文件存储表定义、数据文件的扩展名为.MYD、索引文件的扩展名是.MYI;InnoDB所有的表都保存在同一个数据文件中,表的大小只受限于操作系统文件的大小,一般为2GB。
- 存储空间方面:MyISAM可被压缩,存储空间较小。支持三种不同的存储格式:静态表、动态表、压缩表;InnoDB需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。
- 事务支持方面:MyISAM强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持;InnoDB提供事务支持事务。
- 表锁差异方面:MyISAM只支持表级锁;InnoDB支持事务和行级锁。
- 表主键:MyISAM允许没有任何索引和主键的表存在,索引都是保存行的地址。InnoDB如果没有设定主键或者非空唯一索引,就会自动生成一个6字节的主键。
- 增删改查操作方面:如果执行大量的SELECT,MyISAM是更好的选择。如果执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。
- 外键方面:MyISAM不支持;InnoDB支持。
2. MySQL中有哪几种锁?
表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
3. 什么是通用SQL函数?
CONCAT(A, B): 连接两个字符串值以创建单个字符串输出。通常用于将两个或多个字段合并为一个字段。
FORMAT(X, D): 格式化数字 X 到 D 有效数字。
CURRDATE():CURRTIME():返回当前日期或时间。
NOW():将当前日期和时间作为一个值返回。
MONTH():DAY(),YEAR(),WEEK(),WEEKDAY() :从日期值中提取给定数据。
HOUR():MINUTE(),SECOND() : 从时间值中提取给定数据。
DATEDIFF(A,B):确定两个日期之间的差异,通常用于计算年龄
SUBTIMES(A,B):确定两次之间的差异。
FROMDAYS(INT): 将整数天数转换为日期值。
4. MySQL中有哪些不同的表格?
MyISAM、Heap、Merge、INNODB、ISAM
5. CHAR和VARCHAR的区别?
CHAR 和 VARCHAR 类型在存储和检索方面有所不同
CHAR 列长度固定为创建表时声明的长度,长度值范围是1到255当CHAR值被存储时,它们被用空格填充到特定长度,检索 CHAR 值时需删除尾随空格。
6. MySQL中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?
read uncommited :读到未提交数据
read committed:脏读,不可重复读
repeatable read:可重复读
serializable :串行事务
7. myisamchk是用来做什么的?
它用来压缩 MyISAM 表,这减少了磁盘或内存使用。
8. 主键和候选键有什么区别?
表格的每一行都由主键唯一标识,一个表只有一个主键,主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。
9. 如果一个表有一列定义为TIMESTAMP,将发生什么?
每当行被更改时,时间戳字段将获取当前时间戳。
10. 列设置为AUTO INCREMENT时,如果在表中达到最大值,会发生什么情况?
它会停止递增,任何进一步的插入都将产生错误,因为密钥已被使用。
11. MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
设计良好的数据库结构,允许部分数据冗余,尽量避免 join 查询,提高效率。
选择合适的表字段数据类型和存储引擎,适当的添加索引。
MySQL 库主从读写分离。
找规律分表,减少单表中的数据量提高查询速度。
添加缓存机制,比如 memcached,apc 等。
不经常改动的页面,生成静态页面。
书写高效率的SQL。比如SELECT * FROM TABEL改为SELECT field_1,field_2, field_3 FROM TABLE.