数据库:基本概念
1. 主键、外键、超键、候选键
超键:在关系表中能唯一标识元组的属性集称为关系模式的超键。一个属性可以作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。
候选键:是最小的超键,即没有冗余元素的超键。
主键:数据库表中对存储数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值。
外键:在一个表中存在的另一个表的主键称为此表的外键。
2. 为什么用自增列作为主键
3. 触发器的作用
4. 什么是存储过程?用什么来调用?
5. 存储过程的优缺点
6. 存储过程与函数的区别
7. 什么叫视图?游标是什么?
- 视图:是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增、改、查操作,视图通常是一个表或多个表的行或列的子集。对视图的修改会影响基本表。它使得我们相比于多表查询获取数据更容易。
- 游标:对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。
8. 视图的优缺点
优点:
- 因为视图可以有选择性的选取数据库中的一部分,对数据库的访问更方便。
- 用户通过简单的查询可以从复杂查询中得到结果。
- 维护数据的独立性,视图可从多个表检索数据。
- 对于相同的数据可以产生不同的视图。
缺点:
- 查询视图时,必须把视图的查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么就无法更改数据。
9. drop、truncate、delete的区别
10. 什么是临时表?临时表什么时候删除?
11. 非关系型数据库和关系型数据库的区别?
非关系型数据库的优势:
- 性能:NoSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL(Structured Query Language)层的解析,所以性能非常高。
- 可扩展性:同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。
关系型数据库的优势:
- 复杂查询:可以用SQL语句方便的在意和表以及多个表之间做非常复杂的数据查询。
- 事务支持:使得对于安全性能很高的数据访问要求得以实现。
其他:
- NoSQL数据库慢慢开始具备SQL数据库的一些复杂查询功能,比如MongoDB
- 对于事务的支持也可以用一下系统级的原子操作来实现例如乐观锁之类的方法来曲线救国,比如Redis set nx
12. 数据库范式,根据某个场景设计数据表?
第一范式:(确保每列保持原子性)所有字段值都是不可分解的原子值。
第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。
第二范式:(确保表中的每列都和主键相关)在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表种。
第二范式在第一范式的基础上更进一层。第二范式需要确保数据库中的每一列都和主键相关,而不能只与主键的某一部分相关。
第三范式:(确保每列都和主键之间相关而不是间接相关)