今晚学习了6倒面试题目,很有收获,自己来总结一下下;
数据库三范式是什么?
答:数据库三范式就是建立表需要大家遵守的规则,按这个规则建立的表简洁,还有其他更高的级别,不过一般不用了;第1范式特别简单,也是必须要遵守的,就是每个属性字段具有原子性,是不能拆分的;
后面的范式是建立在前面范式基础上的,
第2范式,就是要根据主键字段确定一条记录,不能有非完全依赖关系;建立一列作为主键字段;
第3范式,是第2范式的子集,不能有依赖传递关系;
真实建立表的时候,第一范式必须要遵守,后面,两个看情况,因为要考虑表格查询效率,每个表字段太少了的话,查询信息需要联表查询,对查询不利;
另外满足第一范式的表,可能存在几个问题,数据冗余,插入异常,删除异常,更新异常,后面的两个范式就是来解决前面的问题的。这个问题是基本的问题,
数据库的索引原理是什么?或者说是工作机制。
因为在实际工作中,更多的是查询工作,所以逐序查询比较浪费时间,尤其是在数据量很大的时候,我们建立索引就是来提高查询效率,节省时间的;索引主要靠B树或者B+树来实现的;
索引的类型有哪些? 答:普通索引,其中一个字段作为索引,允许此列数据有重复;
唯一索引,此列数据不允许重复,实现方式是字段加unique;
主键索引,唯一且非空,实现方式是字段加Primary key;和唯一索引的区别是就不能为空;
全文索引,搜索引擎里用的比较多,数据库里用的较少,主要用来做分词及相关查询的;
联合索引,联合几个字段作为索引字段;
常见的基本操作有哪些?
连接,显示数据库有哪些,相当于文件夹,然后建立表,插入数据,后面就是查询用了
id 主键自增的话,删除了几条记录,重启服务了,再插入记录,id号是如何变化的;
答:要看存储引擎是什么,innodb 的话,比如删除了16,17,不重启就是18,重启的话,再插入就是16了;myisam重启的话,还是18,会记录下之前的这个id
char和varchar的区别?
char,定常的字符,表示字符的数量,最大是255,不够的时候会补充0.查询的时候会自动把末尾的空格截断的,这个模式是可以设置改变的哟;
varchar,变长的字符,表示字符数量,需要自己计算一下,每行的所有字段加起来一共65535字节,不能超过;
两者有什么优缺点呢?char浪费空间,频繁操作更行的时候用
varchar就是节约空间;
int 后面的数字表示的是显示宽度;
补充知识点:覆盖索引,查询的字段正好是索引字段。主键索引默认是聚集索引,对立的是普通索引,
mysql里吧B+树还是称为B树,因为是加了指针的。
如何看是否用了索引,加关键字explain 看possible key 和key 或者type 还有最后一个字段,索引下推。use index 好像就是覆盖索引,就是从这个字段这里看的;
明天继续刷面试题目,加油!