1.什么是mysql?
答:mysql是一种关系型数据库管理系统,由瑞士的一家公司开发的,现在是Oracle旗下的产品,由于他是免费开源,而且相对来说性能十分强大,目前大量使用的企业级开发。
2.数据库的三范式是什么?
第一范式遵从的是原子性不可再分,也就是表中字段不能够再细分,比如姓名只能做为姓名这个属性,不能区分为性和名
第二范式是在第一范式的基础上,追加了一个唯一识别,使得表中非主键字段只能依附于主键,而不能依赖主键的一部分,也就是说表中只能有一个唯一主键。
第三范式则是在第二范式的基础上,要求一个数据库表中不包含已在其它表中已包含的非主关键字信息,也就是说一个表中的非关键字段不能重复出现在其他表中
3.mysql中权限表都有哪些?
答:我知道的权限表大概有这么五种,分别是user表,db表,table_priv表,columns_priv表和host表,其中user表主要是记录允许连接到服务器的用户信息、db表则是记录每个账户在数据库中的操作权限,table_priv表主要是记录数据库表级的操作权限,columns_priv表则是记录数据库列级的操作权限,host一般辅助db表给给定主机操作权限更细致的控制
4.数据库中常使用的函数有哪些?
答:count返回行数,sum返回总和,max返回最大值,min返回最小值,avg计算平均数,date返回日期值
5.mysql的数据引擎MyISAM和Innodb的区别?
答:我还记得大概有这么几点区别
1.他们两者MyISAM是才用的非聚簇索引,数据和索引分开存放,Innodb是聚簇索引,索引所在节点存放着对应的数据。
2.还有两者MyISAM不支持事务,Innodb是支持事务的。
3.对于我们在使用上,MyISAM在查询上速度更快,在修改,新增,删除上面Innodb更快
6.谈谈对索引的理解?
答:添加索引,可以大大增加我们的查询数据的速率,我们在没有索引之前,我们查询某个数据时会遍历整个表的数据,最坏的结果是O(n),而索引则是为表中的某个字段添加上索引,比如我们现在有个书架,我们对其名字进行索引维护,我们对索引按照字母顺序进行排序,我们只需对书名的字母逐个进行检索即可找到对应的书籍在书架的位置,实物都是两面性的,虽然增加索引增加了我们的检索速率,但是维护索引又是另外的开支,这些开支包含他物理占用的内存空间,以及对索引的动态维护。
7.简单说一下都有哪些索引,有哪些作用?
答:大概可以划分为四种索引,分别是单列索引,比如我们常用的唯一索引,普通索引都是属于单列索引,再就是组合索引,可以将多个列作为索引,并且遵从最左前缀原则,还有全文索引,这个是在myISAM上才有的,只能在char,varchar text字段上使用,最后就是空间索引,他们的作用总体来说就是为了提高检索速率,提高我们程序性能。
8说一说hash索引和b+树索引?
答:mysql中用的比较多的就是hash索引和b+。哈希索引只能用来精确匹配,哈希索引是基于hash算法实现,每次都会计算一个hash值存放进入哈希表中,并在哈希表中指向目标数据,我们需要查询时,会计算hash,在hash表中找到数据的指向。虽然hash查找速度非常快,但是计算所得的hash不能保证数据的顺序存储,而且当数据量大的时候还可能会出现哈希冲突,出现哈希冲突,就会直接遍历整个表,知道找到匹配的条件,所以哈希索引使用有比较多的局限性;b+树实在b树的基础上进行改造的,改造的b+树的所有数据都在叶子结点上,而且叶子节点之间还加了指针,形成链表;
9.如何创建索引?
答:第一种是在创建表的时候添加索引
第二种是通过alter命令去设置索引
第三种通过create index去创建索引
删除通过drop命令来删除
10.谈谈你对最左前缀原则的理解?
答:比如我们现在创建一个abc的组合索引,那么我们在使用的时候要想他生效,我们只能查询a,ab或者abc这三种组合;顾名思义就是最左优先,从左边开始连续的都能进行匹配



