原文地址:MySQL面试常见题目(八)
1、数据库三大范式?
-
第一范式:每个列都不可再拆分。
-
第二范式:在第一范式基础上,非主键列完全依赖于主键,而不能依赖于主键的一部分。
-
第三范式:在第二范式基础上,非主键列只依赖于主键,不依赖于其它非主键。
2、MyISAM索引和InnoDB索引的区别?
-
InnoDB索引是聚簇索引,MyISAM索引是非聚簇索引。
-
InnoDB主键索引的叶子节点存储着行数据,因此主键索引非常高效。
-
MyISAM主键索引的叶子节点存储的是行数据地址,需寻址一次才能得到数据。
-
InnoDB非主键索引叶子节点存储着主键和其它带索引的列数据,也正是如此,查询时可做到覆盖索引,效率很高。
3、什么是索引?
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),包含着对数据表里所有记录的引用指针。
索引是一种数据结构,数据库索引是数据库管理系统中一个排序的数据结构,可协助快速查询、更新数据库表中数据,通常使用B树及其变种B+树。
索引可看作目录,为方便查找书中内容,通过对书中内容建立索引形成目录,索引是文件,需占用物理空间。
4、索引优缺点?
索引的优点:
-
可加快数据检索速度。
-
通过使用索引,可在查询过程中使用优化隐藏器,提高系统性能。
索引的缺点:
-
时间:创建和维护索引需消耗时间,当对表中数据进行CURD时,索引也需动态维护,会降低CURD执行效率。
-
空间:会占用物理空间。
5、char和varchar的区别?
-
char和varchar在存储和检索方面不同。
-
char列长度固定为创建表时声明的长度,范围值是1~255。
-
当char被存储时,如不满足长度则使用空格填充,检索char时需删除尾随空格。
6、主键和候选键的区别?
表格的每一行都有主键唯一标识,一个表只有一个主键,主键也是候选键,按照惯例,候选键可被指定为主键,且可用于任何外键引用。
7、如何在Unix和MySQL时间戳之间进行转换?
-
UNIX_TIMESTAMP是从MySQL时间戳转为Unix时间戳的指令。
-
FORM_UNIXTIME是从Unix时间戳转为MySQL时间戳的指令。
至此,本次分享就结束了,后期会慢慢补充的。
以上仅为个人观点,不一定准确,能帮到各位那是最好的。
好啦,到这里本文就结束了,喜欢的话就来个三连击吧。
扫码关注公众号,获取更多优质内容。