第六章 数据库原理

6.1 SQL语言的功能有哪些
  • SQL是结构化查询语言( Structured Query Language)的缩写,其功能包括数据查询、数据操纵、数据定义和数据控制4个部分。
  •  

  • 引申:delete与truncate命令有哪些区别?
    • 相同点:都可以用来删除一一个表中的数据。
    • 不同点:
      • 1 ) truncate是一个数据定义语言( Data Definition Language, DDL),它会被隐式地提交,一但执行后将不能回滚。delete 执行的过程是每次从表中删除一-行数据,同时将删除的操作以日志的形式进行保存,以便将来进行回滚操作。
      • 2)用delete操作后,被删除的数据占用的存储空间还在,还可以恢复。而用truncate操作删除数据后,被删除的数据会立即释放占用的存储空间,被删除的数据是不能被恢复的。
      • 3) truncate 的执行速度比delete快。
  • 常见笔试题:
    • Oracle数据库的一个表中有若干条数据,其占用的存储空间为10MB,如果用delete语句删除表中的所有数据,此时该表所占存储空间为多大?
    • 答案: 10MB。数据库中delete操作类似于在Windows系统中把数据放到回收站,还可以恢复,因此它不会立即释放所占的存储空间。如果想在删除数据后立即释放存储空间,可以使用truncate。
6.2 内链接与外连接有什么区别
  • 内连接,也被称为自然连接,只有两个表相匹配的行才能在结果集中出现。返回的结果集选取了两个表中所有相匹配的数据,舍弃了不匹配的数据。由于内连接是从结果表中删除与其他连接表中没有匹配的所有行,所以内连接可能会造成信息的丢失。内连接的语法如下:
    select fieldlist from table1[ inner] join table2 on tablel. column = table2. column
  • 内连接是保证两个表中的所有行都满足连接条件,而外连接则不然。外连接不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。SQL的外连接共有3种类型:左外连接(关键字为LEFT OUTER JOIN)、右外连接(关键字为RIGHT OUTER JOIN)和全外连接( 关键字为FULL OUTER JOIN)。外连接的用法和内连接一-样,只是将INNER JOIN关键字替换为相应的外连接关键字即可。
6.3 什么是事务
  • 事务是数据库中一个单独的执行单元(Unit), 它通常由高级数据库操作语言(例如SQL)或编程语言(例如C++、Java等)编写的用户程序的执行所引起。当在数据库中更改数据成功时,在事务中更改的数据便会提交,不再改变。否则,事务就取消或者回滚,更改无效。
  • 事务必须满足4个属性
    • 原子性 都完成或者都回滚
    • 一致性 银行转账钱的和不变
    • 隔离性 多个事务隔离
    • 持久性 修改是永久性的
6.4 什么是存储过程?它与函数有什么区别与联系
  • SQL语句在执行时要先编译,然后再被执行。在大型数据库系统中,为了提高效率,将为了完成特定功能的SQL语句集进行编译优化后,存储在数据库服务器中,用户通过指定存储过程的名字来调用执行。
  •  

  • 存储过程与函数的区别
    • 1)存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用。由于函数可以返回一个对象,因此它可以在查询语句中位于From关键字的后面。
    • 2)一般而言,存储过程实现的功能较复杂,而函数实现的功能针对性较强。
    • 3)函数需要用括号包住输人的参数,且只能返回一个值或表对象,而存储过程可以返回多个参数。
    • 4)函数可以嵌人在SQL中使用,可以在select中调用,存储过程则不行。
    • 5)函数不能直接操作实体表,只能操作内建表。
    • 6)存储过程在创建时即在服务器上进行了编译,其执行速度比函数快。
6.5 各种范式有什么区别
  • 第一范式:所有属性都是不可分割的原子值。 
  • 第二范式:在第一范式的基础上,要求非主属性都要和码有完全依赖关系 
  • 第三范式:任何非主属性不依赖于其它非主属性。
  • BC范式在 3NF 的基础上消除主属性对于码的部分与传递函数依赖。
6.6 什么是触发器
  • 触发器是一种特殊类型的存储过程,它由事件触发,而不是程序调用或手工启动,当数据库有特殊的操作时,这些操作由数据库中的事件来触发,自动完成这些SQL语句。使用触发器可以用来保证数据的有效性和完整性,完成比约束更复杂的数据约束。
  •  

  • 根据SQL语句的不同,触发器可分为DML触发器和DLL触发器。好大,代函汰路5主
    • DML触发器是当数据库服务器发生数据操作语言事件时执行的存储过程,有After和InsteadOf这两种触发器。After触发器被激活触发是在记录改变之后进行的一种触发器。InsteadOf触发器是在记录变更之前,去执行触发器本身所定义的操作,而不是执行原来SQL语句里的操作。DLL触发器是在响应数据定义语言事件时执行的存储过程。
  • 触发器的主要作用表现为以下几个方面:
    • 1)增加安全性。
    • 2)利用触发器记录所进行的修改以及相关信息,跟踪用户对数据库的操作,实现审计。
    • 3)维护那些通过创建表时的声明约束不可能实现的复杂的完整性约束以及对数据库中特定事件进行监控与响应。动i 810 ip公) 山品801299.
    • 4)实现复杂的非标准的数据库相关完整性规则、同步实时地复制表中的数据。的中方
    • 5)触发器是自动的,它们在对表的数据做了任何修改之后就会被激活,例如可以自动计算数据值,若数据的值达到了一一定的要求,则进行特定的处理。以某企业财务管理为例,如果企业的资金出现短缺,并且达到某种程度时,则会发送警告信息。
6.7 什么是游标
  • 数据库中,游标提供了--种对从表中检索出的数据进行操作的灵活手段,它实际上是一种能从包含多条数据记录的结果集中每次提取--条记录的机制。
  • 优点
    • 1)在使用游标的表中,对行提供删除和更新的功能。
    • 2)游标将面向集合的数据库管理系统和面向行的程序设计连接了起来。
6.8 如果数据库日志满了,会发生什么情况
  • 日志文件(LogFile)记录所有对数据库数据的修改,主要是保护数据库以防故障发生,以及恢复数据时使用。其特点如下:
    • 1)每一个数据库至少包含两个日志文件组。每个日志文件组至少包含两个日志文件成员。
    • 2)日志文件组以循环方式进行写操作。
    • 3)每一个日志文件成员对应一个物理文件。
  • 通过日志文件来记录数据库事务可以最大限度地保证数据的工致性与安全性,但一旦数据库中日志满了,就只能执行查询等读操作,不能执行更改、备份等操作,原因是任何写操作都要记录日志,也就是说,基本_上处于不能使用的状态。
6.9 union 和 union all有什么区别
  • union在进行表求并集后会去掉重复的元素,所以会对所产生的结果集进行排序运算,删除重复的记录再返回结果。1淋行大,的日5火彪
  • union all则只是简单地将两个结果集合并后就返回结果。因此,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据。
6.10 什么是视图
  • 视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口,与基本表不同,它是一个虚表。在数据库中,存放的只是视图的定义,而不存放视图包含的数据项,这些项目仍然存放在原来的基本表结构中。
  • 视图的作用主要有以下几点:首先,可以简化数据查询语句;其次,可以使用户能从多角度看待同一数据;然后,通过引人视图可以提高数据的安全性;最后,视图提供了一定程度的逻辑独立性等。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2018-07-15 15:49  wwxxaa  阅读(148)  评论(0编辑  收藏  举报