MYSQL 30道面试题

1.说说数据库的三范式?

答:
第一范式:数据库表的每一列都是不可分割的原子数据项。
第二范式:非主键列完全依赖于主键,而不能只是依赖于主键的一部分。
第三范式:非主键列只依赖于主键,不依赖于其他非主键。

2.如何获取当前数据库的版本?

答:使用select version()来获取当前Mysql数据库的版本。

3.了解事务么?

答:事务是由一步或几步数据库操作序列组成的逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行。

4.说说事务的4个特性?

答:ACID。

5.A是什么?

答:Atomicity,原子性,代表着一个事务中的所有操作,或者全部完成,或者全部不完成,如果事务在执行过程中发生错误,就会被回滚到事务开始前的状态。

6.C是什么?

答:Consistency,一致性,事务执行的结果,必须使数据库从一个一致性状态,变到另一个一致性状态。当数据库中只包含事务成功提交的结果时,数据库处于一致性状态。一致性是通过原子性来保证的。

7.I是什么?

答:Isolation,隔离性,由于数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性是防止多个事务在并发执行时发生交叉执行而导致数据的不一致结果。

8.D是什么?

答:Durability,持久性,只要事务成功提交了,那么对于数据的修改就是永久的,即使系统崩溃也不会影响到这个事务的结果。

9.说说char类型的特点?

答:比如定义了char(10),那么这个长度就是固定的,哪怕输入的只是"abcd"4个字符,占用的空间依旧是10个字节,其他的7个就是空字节。不过char虽然占用空间,但是它的效率高,适用于存储密码的md5值,只要是长度固定的,那么使用char类型就很不错。

10.说说varchar类型的特点?

答:varchar类型长度是可变的,存储的值是每个值占用的字节再加上一个用来记录其长度的字节的长度,所以相比起char类型来说,varchar在空间的使用上比较合理,而char则以空间换时间,效率较高。

11.说说MySQL中有哪几种锁?

答:表级锁,行级锁,页级锁

12.说说表级锁的特点?

答:开销小,加锁快,不会出现死锁,但是一锁就是锁整个表,所以锁定粒度大,会发生锁冲突的概率最高,并发度是最低的。

13.说说行级锁的特点?

答:开销大,加锁慢,会出现死锁,锁的是表中的行,锁定粒度最小,发生锁冲突的概率最低,所以并发度也是最高的。

14.说说页面锁的特点?

答:开销和加锁时间介于表锁和行锁之间,也会出现死锁,锁定粒度介于表锁和行锁之间,并发度一般。

15.什么是候选键?

答:候选键是对具有关系键特性的一个或多个属性(组)的统称。

16.主键和候选键有什么区别?

答:表格的每一行都由主键唯一标识,一个表只有一个主键,而主键也是候选键,按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。

17.在Mysql中ENUM的用法是什么?

答:ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,如果这个字段中的值类型是固定的几种,建议可以使用ENUM。

18.说说Mysql驱动程序是什么?

答:Mysql驱动程序是Mysql数据库开发商为了某一种开发语言环境(比如java)能够实现统一的数据库调用而开发的一个程序。

19.说说Mysql驱动程序有哪几种?

答:所以
PHP驱动程序
JDBC驱动程序
ODBC驱动程序
CWRAPPER
PYTHON驱动程序
PERL驱动程序
RUBY驱动程序
CAP11PHP驱动程序
Ado.net5.mxj

20.一张表,里面有ID自增主键,当insert了16条记录之后,删除了第15,16条记录,再把Mysql重启,再insert一条记录,这条记录的ID是17还是15 ?

答:如果表的存储引擎类型是MyISAM,ID就是17,因为MyISAM类型的表会把自增的最大ID记录在数据文件里,即使Mysql重启,最大ID也不会丢失。而如果表的存储引擎类型是InnoDb,因为InnoDb类型的表只会把自增的最大ID存在内存中,所以重启数据库或者是对表进行OPTIMIZE操作,都会导致最大ID丢失。

21.说说MySQL数据库中MyISAM类型表的特点?

答:
一个MYISAM类型的表中有三个文件,分别是索引文件、表结构文件、数据文件
MYISAM类型的表,不支持事务,但是每次查询都是原子操作
支持表级锁,每次操作都是对整个表加锁
会存储表的总行数
采用的是非聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。

22.说说MySQL数据库中InnoDb类型表的特点?

答:一个InnoDb引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制,一个表可能分布在多个文件里),也有可能为多个(设置为独立表空间,表大小受操作系统文件大小限制,一般为 2G),受操作系统文件大小的限制
支持ACID的事务,支持事务的四种隔离级别
支持行级锁及外键约束,因此可以支持写并发
不存储总行数
主键索引采用聚集索引(索引的数据域存储数据文件本身),辅索引的数据域存
储主键的值。因此从辅索引查找数据,需要先通过辅索引找到主键值,再访问主键索引(回表)。最好使用自增主键,防止插入数据时,为维持B+树结构,文件做大的调整

23.说说MySQL中InnoDB支持的四种事务隔离级别?

答:
read uncommited :读到未提交数据
read committed:读已提交数据
repeatable read:可重读
serializable :串行事务

24.myisamchk是用来做什么的?

答:用来压缩 MyISAM 表,减少了磁盘或内存的使用。

25.MyISAM Static 和 MyISAM Dynamic 有什么区别?

答:在 MyISAM Static 上的所有字段有固定宽度。MyISAM Dynamic就是有像 TEXT,BLOB这样的字段,用来适应不同长度的数据类型,简单说就是会变,就是动态的。所以MyISAM Static在受损情况下更容易恢复。

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

答:每当行被更改时的时候,时间戳字段将获取当前时间戳。

27.列设置为AUTO INCREMENT时,如果在表中达到最大值,会发生什么情况?

答:它会停止递增,任何进一步的插入都将产生错误,因为密钥已经被使用了。

28.怎样才能找出最后一次插入时分配了哪个自动增量?

答:LAST_INSERT_ID 将返回由Auto_increment分配的最后一个值,并且不需要指
定表名称。

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

答: SHOW INDEX FROM +< tablename >。

30.说说NOW()和CURRENT_DATE()有什么区别?

答:NOW()命令可以显示当前年份,月份,日期,小时,分钟和秒,而CURRENT_DATE()只会h显示当前年份,月份和日期。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL是一种关系型数据库管理系统,常用于Web应用程序的后台数据管理。以下是MySQL的50经典面试题: 1. 什么是MySQL? 2. MySQL的优点是什么? 3. MySQL的数据类型有哪些? 4. MySQL中的存储引擎有哪些? 5. 什么是索引?MySQL中的索引有哪些类型? 6. 什么是主键?如何设置主键? 7. 什么是外键?如何设置外键? 8. 什么是事务?MySQL中如何使用事务? 9. 什么是视图?MySQL中如何创建视图? 10. 什么是存储过程?MySQL中如何创建存储过程? 11. 什么是触发器?MySQL中如何创建触发器? 12. 什么是游标?MySQL中如何使用游标? 13. 什么是连接?MySQL中如何进行连接操作? 14. 什么是子查询?MySQL中如何使用子查询? 15. 什么是临时表?MySQL中如何创建临时表? 16. 什么是备份?MySQL中如何进行备份操作? 17. 什么是恢复?MySQL中如何进行恢复操作? 18. 什么是复制?MySQL中如何进行复制操作? 19. 什么是分区表?MySQL中如何创建分区表? 20. 什么是分布式数据库MySQL中如何实现分布式数据库? 21. 什么是索引覆盖?MySQL中如何实现索引覆盖? 22. 什么是慢查询?MySQL中如何优化慢查询? 23. 什么是死锁?MySQL中如何避免死锁? 24. 什么是优化器?MySQL中如何使用优化器? 25. 什么是explain?MySQL中如何使用explain? 26. 什么是锁?MySQL中有哪些锁? 27. 什么是MyISAM?MySQL中如何使用MyISAM? 28. 什么是InnoDB?MySQL中如何使用InnoDB? 29. 什么是Memory?MySQL中如何使用Memory? 30. 什么是CSV?MySQL中如何使用CSV? 31. 什么是Blackhole?MySQL中如何使用Blackhole? 32. 什么是Federated?MySQL中如何使用Federated? 33. 什么是Merge?MySQL中如何使用Merge? 34. 什么是Archive?MySQL中如何使用Archive? 35. 什么是NDB?MySQL中如何使用NDB? 36. 什么是Cluster?MySQL中如何使用Cluster? 37. MySQL是如何保证主备同步的? 38. 什么是binlog?MySQL中如何使用binlog? 39. 什么是redo log?MySQL中如何使用redo log? 40. 什么是undo log?MySQL中如何使用undo log? 41. 什么是事务日志?MySQL中如何使用事务日志? 42. 什么是XA事务?MySQL中如何使用XA事务? 43. 什么是XA协议?MySQL中如何使用XA协议? 44. 什么是XA事务管理器?MySQL中如何使用XA事务管理器? 45. 什么是XA资源管理器?MySQL中如何使用XA资源管理器? 46. 什么是XA事务的两阶段提交?MySQL中如何使用XA事务的两阶段提交? 47. 什么是MySQL的锁机制?MySQL中有哪些锁? 48. 什么是表锁?MySQL中如何使用表锁? 49. 什么是行锁?MySQL中如何使用行锁? 50. 什么是间隙锁?MySQL中如何使用间隙锁?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘德华一不小心就打代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值