数据库知识点

 

既然是后端开发,那么与数据库相关的知识点也是必不可少的。

01. MySQL 和 MongoDB 的区别有哪些?如何选择?

02. MongoDB 的优缺点有哪些?

(ps 本人对这一块不是很熟悉,就不附上参考答案了,请各位小伙伴自行学习哈~)

03. 听说过事务吗?(必考)

答:

作为单个逻辑工作单元执行的一系列操作,满足四大特性:

1. 

原子性(Atomicity):事务作为一个整体被执行 ,要么全部执行,要么全部不执行;

2. 

3. 

一致性(Consistency):保证数据库状态从一个一致状态转变为另一个一致状态;

4. 

5. 

隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行;

6. 

7. 

持久性(Durability):一个事务一旦提交,对数据库的修改应该永久保存。

8. 

04. 事务的并发问题有哪几种?

答:丢失更新、脏读、不可重复读以及幻读。

05. 数据库中的锁有哪几种?

答:独占锁、排他锁以及更新锁。

06. 事务的隔离级别有哪几种?

答:读未提交、读已提交、可重复读和序列化。

扩展问题:MySQL 事务默认隔离级别是哪个?

答:可重复读。

07. 数据库的索引有什么作用?(必考) 底层数据结构是什么,为什么使用这种数据结构?

答:

1. 

索引

2. 

3. 

底层数据结构是

4. 

5. 

使用

6. 

扩展问题:聚簇索引和非聚簇索引的区别?

08. MyISAM 和 InnoDB 的区别有哪些?

答:

· 

MyISAM 不支持事务,InnoDB 是事务类型的存储引擎;

· 

· 

MyISAM 只支持表级锁,BDB 支持页级锁和表级锁,默认为页级锁;而 InnoDB 支持行级锁和表级锁,默认为行级锁;

· 

· 

MyISAM 引擎不支持外键,InnoDB 支持外键;

· 

· 

MyISAM 引擎的表在大量高并发的读写下会经常出现表损坏的情况;

· 

· 

对于

· 

· 

InnoDB 是为处理巨大数据量时的最大性能设计,它的 CPU 效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的;

· 

· 

MyISAM 支持全文索引(FULLTEXT),InnoDB 不支持;

· 

· 

MyISAM 引擎的表的查询、更新、插入的效率要比 InnoDB 高。

· 

最主要的区别是:MyISAM 表不支持事务、不支持行级锁、不支持外键。 InnoDB 表支持事务、支持行级锁、支持外键。(可直接回答这个)

09. 数据库中 Where、group by、having 关键字:

答:

关键字作用:

1. 

where 子句用来筛选 from 子句中指定的操作所产生的的行;

2. 

3. 

group by 子句用来分组 where 子句的输出;

4. 

5. 

having 子句用来从分组的结果中筛选行;

6. 

having 和 where 的区别:

1. 

语法类似,where 搜索条件在进行分组操作之前应用;having 搜索条件在进行分组操作之后应用;

2. 

3. 

having 可以包含聚合函数 sum、avg、max 等;

4. 

5. 

having 子句限制的是组,而不是行。

6. 

当同时含有

1. 

执行

2. 

3. 

使用

4.