数据库常见面试题
Posted adai-study
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库常见面试题相关的知识,希望对你有一定的参考价值。
1. 超键、候选键、主键、和外键
定义:
- 超键(super key):在关系中能惟一标识元素属性的集称为关系模式的超键。
- 候选键:(Candidate Key):不含有多余属性的超键称为候选键。也就是说在候选键中再删除属性,就不是候选键了。
- 主键(Primary Key):用户选作元组标识的候选键为主键。
- 外键(Froeign Key):如果模式R中的属性k是其他模式的主键,那么k在模式R中称为外键。
示例:学生表中含有属性学号、身份证号、姓名和性别,其中学号和身份证号是唯一的,姓名和性别不是唯一的。
- 学号:唯一,所以是一个超键;不含有多余属性,所以是候选键
- 身份证号:唯一,所以是一个超键;不含有多余属性,所以是候选键
- (学号,姓名):唯一,所以是一个超键;含有多余属性姓名,所以是候选键
- (身份证号,性别):唯一,所以是一个超键;含有多余属性性别,所以是候选键
- (学号,性别,姓名):唯一,所以是一个超键;含有多余属性姓名和性别,所以是候选键
- 姓名:不唯一,不是一个超键
2.数据库中事务的特性
事务(transaction)的四个基本特性:ACID,原子性(Atomicity)、一致性(Correspondence)、隔离性(Isolation)、持久性(Durability)。
- 原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
- 一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
- 隔离性:隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行 相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请 求,使得在同一时间仅有一个请求用于同一数据。
- 持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
3.视图的作用
视图是虚拟的表,只包含使用时动态检索数据的查询,不包含任何列或数据。
- 使用视图可以简化复杂的sql操作,隐藏具体的细节,保护数据;视图创建后,可以使用与表相同的方式利用它们。
- 视图不能被索引,也不能有关联的触发器或默认值,如果视图本身内有order by 则对视图再次order by将被覆盖。
- 对于某些视图比是可以对其更新的,对视图的更新将对基表进行更新;但是视图主要用于简化检索,保护数据,并不用于更新,而且大部分视图都不可以更新。
4.存储过程与触发器的区别
存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
触发器(trigger)是一种与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。
触发器与存储过程非常相似,两者唯一的区别是触发器不能用EXECUTE语句调用,而是通过事件执行触发而被执行的,而存储过程可以通过存储过程名称名字而直接调用。
以上是关于数据库常见面试题的主要内容,如果未能解决你的问题,请参考以下文章