数据库常见面试题

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语句调用,而是通过事件执行触发而被执行的,而存储过程可以通过存储过程名称名字而直接调用。

 

以上是关于数据库常见面试题的主要内容,如果未能解决你的问题,请参考以下文章

面经 | Redis常见面试题

面试题Java基础篇-常见面试题总结p3

面试题MySQL常见面试题合集

面试题Redis篇-常见面试题p1

面试题Redis篇-常见面试题p1

JDBC常见面试题