从零开始学 Oracle 练习题答案(9-10)

时间:2022-04-12 11:45:09

前言: 在阅读《从零开始学 Oracle 》的时候,发现课后习题可以帮助自己回忆这一章节的内容。但是,没能找到题目的答案,于是自己总结了一份,这里是第9章、第10章。

第九章 操纵数据

一、填空题

  1. DML 的中文全称是 数据操纵语言,英文全称是 Data Manipulation Language .
  2. 在使用INSERT语句时,如果要插入默认值,可以使用 DEFAULT 关键字,如果要插入空值,可以使用 NULL 关键字。
  3. 在Oracle 10g 以后的版本中,使用可以使用RETURNING 子句来返回所有的更新结果值。
  4. MERGE语句用来实现对数据的合并,它实际上是一种整合了UPDATE和INSERT的特殊语句。

二、选择题

  1. 下面的对DML语句的描述中错误的是:
    A. 所有的DML语句通常只能操作一个表,INSERT和MERGE可以操作多个表
    B. 如果表中的字段有NOT NULL约束,在INSERT操作时需要为列指定列值
    C. 在执行了DML语句后,必须显示地使用COMMIT和ROLLBACK语句进行回滚
    D. Oracle会在每一条DML语句后显示地进行事务的提交

    【D】Oracle的事务只有使用COMMIT语句显示地提交,才会将用户所做的更改保存到数据库

  2. 如果要清空一个表中的数据,并且不进行任何日志记录,需要使用如下哪个语句?
    A. MERGE
    B. UPDATE
    C. DELETE
    D. TRUNCATE

    【D】TRUNCATE语句一次性删除所有的表数据,没有WHERE条件,不会产生回退日志。

三、问答题

  1. 在使用DELETE语句删除记录时,必须要注意的事项有哪些?

    DELETE语句只会删除整条记录,而不能对记录的某个字段进行删除
    删除一个表可能导致与其他表的引用完整性出现问题,因此必须要注意删除的顺序
    DELETE语句只是删除表中的数据,并不会对整个表进行移除工作,移除表使用DROP TABLE语句
    DELETE语句在删除数据时会产生回退日志信息,因此可以使用事务进行回滚恢复。

  2. 简述DELETE与TRUNCATE的区别。

    TRUNCATE语句一次性删除所有的表数据,它没有WHERE条件,也不会产生回退日志,因此删除速度要比DELETE语句快,但是TRUNCATE删除的数据不能恢复,因此使用该语句时应该慎重。

第十章 Oracle内置函数

一、填空题

  1. 在Oracle中,函数按照其功能可以分为两大类,分别是单行函数多行函数
  2. 要将英文字母字符转换为小写,可以使用LOWER函数。
  3. 要返回字符串的子串,可以使用SUBSTR函数。
  4. 在Oracle中要向另一个日期添加月份,可以使用ADD_MONTHS函数。

二、选择题

  1. 下面哪个函数不属于转换函数?
    A. TO_CHAR
    B. TO_DATE
    C. TRUNC
    D. CONVERT

    【C】TRUNC属于数字型函数,一般用户截取特定的小数位

  2. 下面哪个函数的作用类似于CASE语句?
    A. UNLLIF
    B. COALESCE
    C. DECODE
    D. NVL

    【C】DECODE根据特定的条件,实现IF-THEN-ELSE条件判断的返回值,类似于CASE语句

三、问答题

  1. 简述NAL和NAL2的区别。

    NVL和NVL2函数都用来检测一个表达式是否为NULL,如果一个表达式为NULL,可以返回一个非NULL的替代值。NVL函数和NVL2函数功能类似,但是NVL2比NVL的功能更加灵活。

  2. 简述COALESCE函数的作用。

    COALESCE是相对于NVL和NVL2来说最灵活的一个函数,这个函数接受一个参数值列表,COALESCE将返回列表中的第一个非NULL的值。