数据库面试题
2017-07-31 23:22
155 查看
主键、超键、候选键、外键
主键:数据库表中对存储数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(NULL);超键:在关系中能唯一标识元组的属性集称为关系模式的超集。一个属性可以作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键;
候选键:是最小超键,即没有冗余元素的超键;
外键:在一个表中存在的另一个表的主键;
数据库事务的四个特性
数据库事务transaction正确执行的四个基本要素,ACID,原子性(atomicity),一致性(Correspondence),隔离性(Isolation),持久性(Durability);原子性:整个事务的操作要么全完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像整个事务从来没有执行过一样;
一致性:在事务开始之前和事务结束之后,数据库的完整性约束没有被破坏;
隔离性:隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同时间内,执行相同的功能,事务的隔离性能确保每一事物在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列请求,使得在同一时间仅有一个请求用于同一数据;
持久性:在事务完成后,该事物所对数据库所做的更改便持久的保存在数据库之中,并不会回滚;
视图
视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询,不包含任何列或数据;使用视图可以简化复杂的sql操作,隐藏具体的细节,保护数据;视图创建后,可以使用与表相同的方式利用它们;视图不能被索引,也不能有关联的触发器或默认值,如果视图本身内有order by,则对视图在此order by将被覆盖;
创建视图:create view XXX as XXXXXXXXXXXXXX;
对于某些视图比如未使用联结子查询分组聚集函数Distinct Union等,是可以对其更新的,对视图的更新将对基表进行更新;但是视图主要用于简化检索,保护数据,并不用于更新,而且大部分视图都不可以更新。
什么是存储过程?有哪些优缺点
存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用它就可以了。存储过程的好处:
由于数据库执行动作时,是先编译后执行的,然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高;
一个存储过程在程序在网络中交互时可以代替大堆的T-SQL语句,所以也能降低网络的通信量,提高通信效率;
通过存储过程能够使没有权限的用户在控制之下间接的存取数据库,从而确保数据的安全;
数据库事务
事务(Transaction)是并发控制的单位,所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的单位。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性;在DBMS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性;
说一说drop,delete,truncate的区别三者区别详解
SQL 中的drop,delete,truncate都表示删除,但是三者有一些差别:delete 和 truncate只删除表的数据不删除表的结构;
速度,一般来说,drop > truncate > delete;
delete语句是(dml),这个操作会放到rollback segment中,事务提交之后才生效;
如果有相应的trigger,执行的时候将被触发,truncate,drop是(ddl),操作立即生效,源数据不会放到rollback segment中,不能回滚,操作不触发trigger;
使用场景
不再需要一张表时, 用drop;
想删除部分数据行时,用delete,并且带上where子句;
保留表而删除所有数据的时候用truncate;
范式详解
第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整形,实数,字符型,逻辑型,日期型等;第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字;
第三范式(3NF):在第二范式的基础上,数据表中如果不存在非关键字段对任一关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如果存在“A->B->C”的决定关系,则C传递函数依赖A,因此,满足第三范式的数据库表应该不存在如下依赖关系:关键字段->非关键字段x->非关键字段y;
BCNF:在3NF的基础上,消除主属性对于码的部分函数依赖和传递函数依赖;
索引详解
数据库事务的隔离等级
SQL语句学习
本文参考文章:常见数据库面试题整理相关文章推荐
- 数据库常见面试题
- 数据库 SQL面试题
- 面试题(数据库)学习20170919
- 数据库-面试题(持续更新)
- 比较常见的数据库SQL面试题以及答案
- SQL面试题: 数据库中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列 ,当B列大于C列时选择B列否则选择C列 ,
- 面试题(数据库)学习20170924
- 数据库面试题集合
- 某公司数据库面试题
- 某公司数据库面试题
- 数据库常见面试题总结
- 【C语言】【面试题】【笔试题】模拟实现数据库中memcpy函数
- 史上最经典的数据库面试题之二
- 面试题(一)- 谈谈你对数据库中索引的理解
- 数据库面试题(三)
- 面试题(数据库)
- 数据库相关面试题
- Java面试题大全(数据库部分三)
- 一家公司的数据库面试题
- 【数据库】SQL经典面试题 - 行列转换二 - 列转行