数据库面试题(更新中。。。).pdfVIP

  • 2
  • 0
  • 约7.8千字
  • 约 6页
  • 2023-04-09 发布于安徽
  • 举报
数据库⾯试题(更新中。。。) 1.视图的作⽤ 1. 使⽤视图可以使⼀些查询表达更加简洁 2. 视图提供了⼀定程度的逻辑独⽴性 3. 视图的安全保护作⽤ 4. 视图使得⽤户能够以不通⾓度看待相同的数据 视图是虚拟的表,与包含数据的表不⼀样,视图只包含使⽤时动态检索数据的查询;不包含任何列或数据。使⽤视图可以简化复杂的sql操 作,隐藏具体的细节,保护数据;视图创建后,可以使⽤与表相同的⽅式利⽤它们。 视图不能被索引,也不能有关联的触发器或默认值,如果视图本⾝内有order by 则对视图再次order by将被覆盖。 2.事务的特性(ACID ) 1. 原⼦性:事务是数据库的逻辑⼯作单元。整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在 执⾏过程中发⽣错误,会被回滚 (Rollback)到事务开始前的状态,就像这个事务从来没有执⾏过⼀样。 2. ⼀致性:事务隔离执⾏时要保持数据库的⼀致性(正确性);也就是说,事务的执⾏结果必须使数据库从⼀个⼀致性状态转变到另⼀个⼀ 致性状态,但事务内部⽆须保证⼀致性。 3. 隔离性:⼀个事务的执⾏不能被其他事务⼲扰。也就是说,即使多个事务并发执⾏,任何事务的更新操作直到其成功提交,对其他事务都 是不可见的。 4. 持久性:⼀个事务完成后,它对数据库的改变必须是永久的,即使系统出现故障,它对数据库的更新也将永久有效。 3.两种基本的锁 1. 共享锁 (读锁 ) 2. 排它锁 (写锁 ) 4. 三个范式 即: 属性唯⼀, 记录唯⼀, 表唯⼀ 第⼀范式(1NF):数据库表中的所有属性值都是原⼦的,不可再分。这个单⼀属性由基本类型构成,包括整型、实数、字符型、逻辑型、 ⽇期型等。 第⼆范式(2NF):要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字⼀部分的属性,如果存在,那么这个 属性和主关键字的这⼀部分应该分离出来形成⼀个新的实体,新实体与原实体之间是⼀对多的关系。为实现区分通常需要为表加上⼀个列, 以存储各个实例的惟⼀标识。简⽽⾔之,第⼆范式就是⾮主属性⾮部分依赖于主关键字。 第三范式(3NF):在第⼆范式的基础上,数据表中如果不存在⾮关键字段对任⼀候选关键字段的传递函数依赖则符合第三范式。所谓传递 函数依赖,指的是如果存在”A → B → C”的决定关系,则C传递函数依赖于A。因此,满⾜第三范式的数据库表应该不存在如下依赖关 系: 关键字段 → ⾮关键字段x → ⾮关键字段y 简⽽⾔之,第三范式(3NF)要求⼀个数据库表中不包含 已在其它表中已包含的⾮主关键字信息。例如,存在⼀个部门信息表,其中每个部 门有部门编号 (dept_id)、部门名称、部门简介等信息。那么在员⼯信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有 关的信息再加⼊员⼯信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有⼤量的数据冗余。简⽽⾔之, 第三范式就是属性不依赖于其它⾮主属性。(我的理解是消除冗余 ) 5.什么是嵌套查询?什么是相关⼦查询? 我们称⼀个查询嵌套在另⼀个查询中的查询为嵌套查询。前者为⼦查询(内层查询),后者为⽗查询(外层查询)。 相关⼦查询:其⼦查询的查询条件依赖于⽗查询 不相关⼦查询:其⼦查询的查询条件不依赖于⽗查询 6.存储过程与触发器的区别 触发器与存储过程⾮常相似,触发器也是SQL语句集,两者唯⼀的区别是触发器不能⽤EXECUTE语句调⽤,⽽是在⽤户执⾏Transact- SQL语句时⾃动触发(激活)执⾏。触发器是在⼀个修改了指定表中的数据时执⾏的存储过程。通常通过创建触发器来强制实现不同表中的 逻辑相关数据的引⽤完整性和⼀致性。由于⽤户不能绕过触发器,所以可以⽤它来强制实施复杂的业务规则,以确保数据的完整性。触发器 不同于存储过程,触发器主要是通过事件执⾏触发⽽被执⾏的,⽽存储过程可以通过存储过程名称名字⽽直接调⽤。当对某⼀表进⾏诸如 UPDATE、INSERT、DELETE这些操作时,SQLSERVER就会⾃动执⾏触发器所定义的SQL语句,从⽽确保对数据的处理必须符合这些 SQL语句所定义的规则。 7.什么是触发器? 触发器(trigger)是特殊类型的存储过程,当某个事件发⽣时它被⾃动执⾏。要设置触发器机制,必须满⾜两个要求: 指明什么事件发⽣和满⾜什么条件执⾏触发器 指明触发器执⾏什么样的动作 这种模型称作事件-条件-动作模型。数据库系统将像保存数据⼀样存储触发器。只要指定的事情发⽣,触发条件满⾜,相应的存储

文档评论(0)

1亿VIP精品文档

相关文档