Oracle OCP认证考试考点详解082系列08

题记:

本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。

36. 第36题:

  1. 题目
    36.Examine this command:

  2. 解析及答案:
    查看以下这条命令。以下哪两个陈述是正确的?
    A. 在执行此命令期间,可以对在此数据文件中有一个或多个区(extents)的表执行数据操作语言(DML)操作。
    B. 在默认情况下,它会覆盖在 /u02 目录下名为 SALES02.DBF 的任何现有文件。
    C. 在执行此命令期间,可以查询在此数据文件中有一个或多个区的表。
    D. 在移动之后,SALES01.DBF 中的压缩对象在 SALES02.DBF 中将会被解压。
    E. 即使使用了 Oracle 管理文件(OMF),也必须指定包含新文件名的 "To" 子句。
    选项 A:
    如果执行的命令是在移动数据文件,一些数据库允许在特定条件下对涉及的数据表执行有限的 DML 操作。例如,某些数据库在数据文件移动过程中,只要数据的底层存储机制能够处理并发的读写操作,就可以允许 DML。这可能取决于数据库的具体实现和配置。所以这个选项有一定的可能性是正确的。
    选项 B:
    正常情况下,数据文件操作命令不会默认覆盖已有的文件。这是为了防止数据丢失等意外情况。所以该选项错误。
    选项 C:
    在数据文件执行命令期间,对有数据区在这个数据文件中的表进行查询通常是允许的。因为查询操作是只读的,一般不会干扰命令的执行过程,就像在备份数据文件等操作过程中,也可以进行查询一样。所以该选项正确。
    选项 D:
    移动数据文件本身通常不会改变文件内对象的压缩状态。压缩属性是和对象本身相关的,而不是因为文件位置的改变而改变。所以该选项错误。
    选项 E:
    当使用 Oracle 管理文件(OMF)时,很多时候文件名等细节是由系统自动管理的,不一定需要手动指定 "To" 子句。所以该选项错误。
    正确答案是 AC。

37. 第37题:

  1. 题目
  2. 解析及答案:
    关于替换变量,以下哪两个陈述是正确的?
    A. 用于提示输入列名的替换变量必须用双引号括起来。
    B. 以 "&" 为前缀的替换变量在一个会话中对一个值只会提示一次。
    C. 用于提示输入列名的替换变量必须用单引号括起来。
    D. 以 "&&" 为前缀的替换变量在一个会话中对一个值只会提示一次,除非在该会话中将其设置为未定义状态。
    E. 替换变量只能在 SELECT 语句中使用。
    F. 替换变量可以在 SELECT 语句的任何子句中使用。
    选项 A:
    用于提示列名的替换变量在某些情况下可以不用双引号。例如,如果列名是简单的、符合 SQL 命名规则且没有特殊字符或大小写问题,不使用双引号也可以正常工作。所以这个选项不完全正确。
    选项 B:
    以 "&" 开头的替换变量每次在语句中出现时都会提示输入值,而不是只提示一次,所以该选项错误。
    选项 C:
    如前面所说,一般不是用单引号来包围用于提示列名的替换变量,所以该选项错误。
    选项 D:
    以 "&&" 为前缀的替换变量通常在一个会话中只提示一次输入值,除非将其在会话中重新定义为未定义状态,所以该选项正确。
    选项 E:
    替换变量不只是用于 SELECT 语句,还可以用于 INSERT、UPDATE、DELETE 等其他 SQL 语句,所以该选项错误。
    选项 F:
    替换变量可以用于 SELECT 语句中的各种子句,包括 SELECT 子句、WHERE 子句、GROUP BY 子句、HAVING 子句等,所以该选项正确。
    正确答案是 DF。

38. 第38题:

  1. 题目
    38.Examine this description of the TRANSACTIONS table

    Which two SQL statements execute successfully?
    A.SELECT customer_id CUSTID, transaction date TRANS_DATE, amount+ 100 DUES FROM transactions
    B.SELECT customer_id AS "CUSTOMER-ID", transaction date AS DATE, amount + 100 "DUES" FROM transactions
    C.SELECT customer_id AS 'CUSTOMER-ID', transaction date AS DATE, amount + 100 'DUES' FROM transactions
    D.SELECT customer_id AS "CUSTOMER-ID ", transaction date AS "DATE", amount +100 DUES FROM transactions
    E.SELECT customer_id AS CUSTOMER-ID, transaction date AS TRANS DATE, amount 100 " DUES AMOUNT " FROM transactions
  2. 解析及答案:
    查看关于 "TRANSACTIONS" 表的如下描述。以下哪两个 SQL 语句能够成功执行?
    A. SELECT customer_id CUSTID, transaction_date TRANS_DATE, amount + 100 DUES FROM transactions
    在这条语句中,使用 "column_name alias_name" 的语法为 "customer_id" 创建了别名 "CUSTID",为 "transaction_date" 创建了别名 "TRANS_DATE",这种方式是正确的。并且 "amount + 100" 这个表达式是有效的,同时为它分配了别名 "DUES"。这条 SQL 语句在语法上是正确的,能够成功执行。所以,该选项正确。
    B. SELECT customer_id AS "CUSTOMER-ID", transaction_date AS DATE, amount + 100 "DUES" FROM transactions
    当使用带有空格或特殊字符的别名时,它们需要用双引号括起来。在这个选项中,为 "transaction_date" 创建的别名 "DATE" 以及为 "amount + 100" 创建的别名 "DUES" 没有正确地使用双引号括起来。它们应该用双引号括起来才能被识别为有效的别名。所以,该选项错误。
    C. SELECT customer_id AS 'CUSTOMER-ID', transaction_date AS DATE, amount + 100 'DUES' FROM transactions
    与选项 B 类似,当创建带有空格或特殊字符的别名时,应该使用双引号,而不是单引号。在这里,别名 "CUSTOMER-ID"、"DATE" 和 "DUES" 因为是用单引号括起来的,所以没有正确引用。所以,该选项错误。
    D. SELECT customer_id AS "CUSTOMER-ID", transaction_date AS "DATE", amount + 100 DUES FROM transactions
    别名 "CUSTOMER-ID"(注意破折号后面有个空格)和 "DATE" 都正确地用双引号括起来了。而且,为表达式 "amount + 100" 创建的别名 "DUES" 是有效的,因为它没有需要引用的空格或特殊字符。这条 SQL 语句在语法上是正确的,能够成功执行。所以,该选项正确。
    E. SELECT customer_id AS CUSTOMER-ID, transaction_date AS TRANS DATE, amount 100 "DUES AMOUNT" FROM transactions
    为 "customer_id" 创建的别名 "CUSTOMER-ID" 格式不正确。它要么应该按照 "column_name AS alias_name" 的格式并且在需要时进行正确引用,要么就使用 "column_name alias_name" 的格式。这里是一种不正确的组合方式。并且,为 "amount + 100" 创建的别名 "DUES AMOUNT" 因为有空格所以没有正确引用。所以,该选项错误。
    答案是 A 和 D。

39. 第39题:

  1. 题目
  2. 解析及答案:
    关于在未设置保证保留(GUARANTEED RETENTION)的情况下撤销保留(UNDO RETENTION)的配置和使用,以下哪两个陈述是正确的?
    A. 未过期的撤销数据(UNDO)总是会被保留。
    在未设置保证保留的情况下,未过期的撤销数据并非总是会被保留。如果系统需要空间来处理新的事务,就可能会覆盖未过期的撤销数据。所以,该选项错误。
    B. 撤销保留(UNDO RETENTION)指定了 Oracle 尝试保留未过期撤销数据的时长。
    在未设置保证保留的情况下,撤销保留(UNDO RETENTION)指定了 Oracle 尝试保留未过期撤销数据的时长。之所以说是尝试,是因为来自新事务的空间压力可能会导致未过期的撤销数据被覆盖。所以,该选项正确。
    C. 撤销保留(UNDO_RETENTION)指定了 Oracle 尝试保留已过期和未过期撤销数据的时长。
    撤销保留(UNDO_RETENTION)并不指定已过期撤销数据的保留时长。已过期的撤销数据会比未过期的撤销数据更快地被覆盖。撤销保留主要关注的是未过期的撤销数据。所以,该选项错误。
    D. 撤销保留(UNDO RETENTION)指定了所有类型撤销数据的保留时长。
    它并没有指定所有类型撤销数据的保留时长。如前文所述,它主要是关于尝试保留未过期的撤销数据,对于已过期的撤销数据并非以同样的方式进行规定。所以,该选项错误。
    E. 活动的撤销数据(ACTIVE UNDO)总是会被保留。
    活动的撤销数据总是会被保留。活动的撤销数据对于正在进行的事务的回滚是必需的。在一个事务被提交或回滚之前,其撤销信息被视为活动的,并且必须被保留以确保数据的一致性。所以,该选项正确。
    正确的两个陈述是 B 和 E。

40. 第40题:

  1. 题目
  2. 解析及答案:

"ORDERS" 表有一个名为 "ORDER_DATE" 的数据列,其数据类型为 "DATE"。日期的默认显示格式是 "DD - MON - RR"。

以下哪两个 "WHERE" 条件展示了转换函数的正确用法?

A. WHERE order_date = TO_DATE (ADD_MONTHS (SYSDATE, 6), 'MON DD YYYY')

在此处,"TO_DATE" 函数的使用不正确。"ADD_MONTHS (SYSDATE, 6)" 这部分返回的是一个日期值,而它被用作 "TO_DATE" 函数的第一个参数,然而 "TO_DATE" 函数期望的是一个表示日期的字符串作为其第一个参数。正确的用法应该是先使用 "TO_CHAR" 函数将 "ADD_MONTHS (SYSDATE, 6)" 的结果转换为字符串,然后如果需要的话再将其传递给 "TO_DATE" 函数。所以,该选项错误。

B. WHERE TO_CHAR (order date, 'MON - DD - YYYY') = 'JAN 20 2019'

在此处,"TO_CHAR" 函数中的列名 "order date" 拼写有误(正确的应该是 "order_date")。如果我们纠正这个拼写错误,那么这就是转换函数的一种正确用法。它将 "order_date" 列从日期数据类型转换为指定格式的字符串,然后与另一个表示日期的字符串进行比较。所以,如果纠正拼写错误的话,该选项正确。

C. WHERE order_date > TO_DATE ('JUL 10 2018', 'MON DD YYYY')

这个选项展示了 "TO_DATE" 函数的正确用法。它将字符串 "JUL 10 2018" 按照指定格式 "MON DD YYYY" 转换为日期值,然后与 "order_date" 列(其数据类型为日期)进行比较。所以,该选项正确。

D. WHERE order_date = TO_CHAR (ADD_MONTHS (SYSDATE, 6), 'MON DD YYYY)

在这里,在与 "order_date" 列进行比较时,"TO_CHAR" 函数的使用不正确。"order_date" 列是日期类型,在没有对两边进行恰当转换的情况下,不能直接将其与 "TO_CHAR" 函数返回的字符串结果进行比较。正确的做法应该是要么将 "order_date" 列转换为字符串并匹配格式,要么将字符串转换为日期然后再进行比较。所以,该选项错误。

E. WHERE order_date IN (TO_DATE ('oct 21 2018', 'MON - DD - YYYY '), TO_CHAR ('Nov 21 2018', 'MON DD YYYY'))

在这个选项中,"TO_DATE" 和 "TO_CHAR" 函数的使用不一致。"TO_DATE" 函数在第一部分("oct 21 2018")的使用是正确的,但第二部分使用 "TO_CHAR ('Nov 21 2018', 'MON DD YYYY')" 是错误的。"TO_CHAR" 函数是用于将日期转换为字符串,而不是反过来。并且日期值 "Nov 21 2018" 对于 "TO_CHAR" 函数来说已经是一个字符串了,其格式也不正确。所以,该选项错误。

答案是 B 和 C。

未完待续。
关注作者,您将获得更多OCP考试及Oracle DB方面的实战经验。后续不定期分享DB核心知识和排障案例及经验、性能调优等

相关推荐
☆凡尘清心☆5 分钟前
CentOS-stream-9安装ansible
linux·centos·ansible
搬码后生仔18 分钟前
SQLite 是一个轻量级的嵌入式数据库,不需要安装服务器,直接使用文件即可。
数据库·sqlite
码农君莫笑19 分钟前
Blazor项目中使用EF读写 SQLite 数据库
linux·数据库·sqlite·c#·.netcore·人机交互·visual studio
江上挽风&sty21 分钟前
【Django篇】--动手实践Django基础知识
数据库·django·sqlite
向阳121825 分钟前
mybatis 动态 SQL
数据库·sql·mybatis
胡图蛋.26 分钟前
什么是事务
数据库
小黄人软件29 分钟前
20241220流水的日报 mysql的between可以用于字符串 sql 所有老日期的,保留最新日期
数据库·sql·mysql
mubeibeinv30 分钟前
项目搭建+图片(添加+图片)
java·服务器·前端
张声录134 分钟前
【ETCD】【实操篇(三)】【ETCDCTL】如何向集群中写入数据
数据库·chrome·etcd
dessler34 分钟前
Docker-如何启动docker
运维·docker·云原生·容器·eureka