数据库面试基础
1,数据库设计3范式
原子性,数据库字段属性不可以再分割
完全依赖,非主键属性必须完全依赖主键,不能依赖主键的一部分(针对联合主键来说)
直接依赖,非主键属性A不能直接依赖非主键属性B,然后B直接依赖主键。
2,组合索引第二个是否会生效
组合索引的生效原则是 从前往后依次使用生效,如果中间某个索引没有使用,那么断点前面的索引部分起作用,断点后面的索引没有起作用
3,熟悉数据库各种查询操作,以学生表,课程表,成绩表为例进行各种操作。
4,数据库事物的四大特性(ACID)
原子性(Automicity)
一致性(Consistency)
隔离性(Isolation)
持久性 (Durability)
5,事物的隔离性
当多个线程都开启事务操作数据库中的数据时,数据库系统要能进行隔离操作,以保证各个线程获取数据的准确性。
没有事物的隔离性,可能出现的情况;
脏读:脏读是指在一个事务处理过程里读取了另一个未提交的事务中的数据。
不可重复读:不可重复读是指在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了。
幻读:
幻读是事务非独立执行时发生的一种现象。例如事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是从事务T2中添加的,就好像产生幻觉一样,这就是发生了幻读。
MySQL数据库为我们提供的四种隔离级别:
① Serializable (串行化):可避免脏读、不可重复读、幻读的发生。
② Repeatable read (可重复读):可避免脏读、不可重复读的发生。
③ Read committed (读已提交):可避免脏读的发生。
④ Read uncommitted (读未提交):最低级别,任何情况都无法保证。
sql语句优化查询原则。
https://blog.csdn.net/zh521zh/article/details/76273383
6、MySQL中myisam与innodb的区别,至少5点
(1)、问5点不同;
1>.InnoDB支持事物,而MyISAM不支持事物
2>.InnoDB支持行级锁,而MyISAM支持表级锁
3>.InnoDB支持MVCC(Multi-Version Concurrency Control), 而MyISAM不支持
4>.InnoDB支持外键,而MyISAM不支持
5>.InnoDB不支持全文索引,而MyISAM支持。
(2)、innodb引擎的4大特性
插入缓冲(insert buffer),二次写(double write),自适应哈希索引(ahi),预读(read ahead)
(3)、2者selectcount(*)哪个更快,为什么
myisam更快,因为myisam内部维护了一个计数器,可以直接调取。