1:数据库三范式
第一范式:列不可再分第二范式:行可以唯一区分,主键约束第三范式:表的非主属性不能依赖与其他表的非主属性外键约束
2:索引的作用?和它的优点缺点是什么?
索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。
3:表与表之间的关联关系,怎么消除M:N
分为3种:一对一、一对多、多对多。
消除的办法是,在两者之间增加第三个实体。这样,原来一个多对多的关系,现在变为两个一对多的关系。要将原来两个实体的属性合理地分配到三个实体中去。这里的第三个实体,实质上是一个较复杂的关系,它对应一张基本表。一般来讲,数据库设计工具不能识别多对多的关系,但能处理多对多的关系。
4:SQL语句优化的一般怎么做?
1)应尽量避免在where子句中使用!=或操作符,否则将引擎放弃使用索引而进行全表扫描。
2)应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描
3)很多时候用exists代替in是一个好的选择
4)用where子句替换HAVING子句因为HAVING只会在检索出所有记录之后才对结果集进行过滤
5:触发器是和表关联的特殊的存储过程,可以在插入,删除或修改表中的数据时触发执行
6:游标是一段私有的SQL工作区,也就是一段内存区域,用于暂时存放受SQL语句影响到的数据。常见用途就是保存查询结果,以便使用。
7:脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据
8:不可重复读:事务A多次读取同一数据,事务B在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致。
9:幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。
10:事务隔离级别:读未提交、读已提交、可重复读、序列化,mysql默认级别可重复读
面试题