题记:
本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。
86. 第86题:
- 题目
- 解析及答案:
关于自连接,以下哪三个陈述是正确的?
A. 它可以是外连接。
自连接可以是外连接形式。例如,假设有一个名为 “Employees” 的表,其中包含 “EmployeeID”(员工编号)、“ManagerID”(上级领导编号)和 “Name”(姓名)等列。可以使用左外自连接来查找所有员工及其上级领导。如果某个员工没有上级领导(即 “ManagerID” 为空值),左外连接仍会将该员工包含在结果集中,只是与上级领导相关的列值为空。所以,该选项正确。
B. 可以使用 ON 子句。
在自连接中可以使用 “ON” 子句。“ON” 子句用于指定连接条件。例如,在对 “Employees” 表进行自连接以查找员工及其上级领导时,可以像这样使用 “ON” 子句:“ON Employees.EmployeeID = Employees.ManagerID”,以此来定义员工与其上级领导之间的关系。所以,该选项正确。
C. 查询必须为该表使用两个不同的别名。
在执行自连接时,必须为表使用两个不同的别名。因为是将表与它自身进行连接,为了区分表的这两个 “副本”(一个可视为 “父”,另一个可视为 “相关记录的‘子’”),就需要使用不同的别名。例如,假设有一个 “Products” 表,若要查找具有特定关系的产品对,可能会将该表别名为 “P1” 和 “P2”,然后在 “P1” 和 “P2” 之间定义连接条件。所以,该选项正确。
D. 它必须是等值连接。
自连接不一定必须是等值连接。它也可以是其他类型的连接。例如,可以使用非等值连接的自连接来查找表中某一列的值小于或大于同一表中另一列的值的记录。所以,该选项错误。
E. 它必须是内连接。
自连接不一定必须是内连接。正如选项 A 中所提到的,它可以是外连接。当希望包含在表的另一个 “副本” 中没有匹配记录的记录时,外自连接就很有用。所以,该选项错误。
F. 必须使用 ON 子句。
并非必须使用 “ON” 子句。在自连接中,也可以使用 “WHERE” 子句来指定连接条件。例如,在一个简单的自连接中,可以编写这样的查询:“SELECT * FROM Employees E1, Employees E2 WHERE E1.EmployeeID = E2.ManagerID”。所以,该选项错误。
答案:正确的三个是 A、B 和 C。
87. 第87题:
-
题目
-
解析及答案:
关于全外连接,以下哪两个陈述是正确的?
A. 它会返回参与连接的两个表中匹配和不匹配的行。
全外连接会返回参与连接的两个表中的所有行,包括匹配的行以及在另一个表中找不到匹配项的不匹配行。例如,有一个表 “Table1”,包含列 “ID” 和 “Value1”;还有一个表 “Table2”,包含列 “ID” 和 “Value2”。进行全外连接时,若 “Table1” 中的某一行在 “Table2” 中有匹配的 “ID”,就会将这两行的值组合起来。若 “Table1” 中的某一行在 “Table2” 中没有匹配项(反之亦然),该行仍会被包含在结果集中,只是来自另一个表的列值会为空。所以,该选项正确。
B. 它只返回参与连接的两个表中不匹配的行。
并非如此,如选项 A 所述,全外连接返回的是匹配和不匹配的行,而不只是不匹配的行。所以,该选项错误。
C. 它包含笛卡尔积所返回的行。
全外连接与笛卡尔积不同。笛卡尔积会返回两个表中所有可能的行组合(结果集中的行数是两个表行数的乘积)。全外连接是基于连接条件返回匹配和不匹配的行组合,并非所有可能的组合。所以,该选项错误。
D. 在 WHERE 子句的连接条件两侧必须使用 Oracle 连接运算符(+)。
Oracle 连接运算符(+)是一种旧的外连接表示法,在进行全外连接时并非以这种方式使用。在现代 SQL 中,是在 FROM 子句中使用 “FULL OUTER JOIN” 关键字来执行全外连接操作。连接条件两侧并不需要使用(+)这种表示法。所以,该选项错误。
E. 它包含内连接所返回的行。
全外连接包含内连接所返回的行(即匹配的行)以及两个表中不匹配的行。所以,该选项正确。
答案:正确的两个是 A 和 E。
88. 第88题:
- 题目
- 解析及答案:
关于 “UNLIMITED TABLESPACE” 系统权限和空间配额,以下哪两个陈述是正确的?
A. 它允许一个角色在数据库的任何表空间中拥有无限空间。
“UNLIMITED TABLESPACE” 系统权限是授予用户的,而不是授予角色的。它允许用户在数据库的任何表空间中拥有无限空间,并非针对角色而言。例如,如果一个用户被授予了此权限,那么他们可以在所有表空间中根据需要使用任意多的空间,而不受空间配额的限制。所以,该选项错误。
B. 它会被为用户指定的空间配额覆盖。
实际上,“UNLIMITED TABLESPACE” 权限会覆盖为用户指定的任何空间配额。当用户拥有此权限时,空间配额限制就会被忽略。例如,如果在某个特定表空间中为用户设置了 100MB 的配额,但该用户同时拥有 “UNLIMITED TABLESPACE” 权限,那么他们就可以在该表空间中使用超过 100MB 的空间。所以,该选项错误(这里按照正确理解应该是它覆盖其他配额,而不是被覆盖)。
C. 它允许用户仅在其默认永久表空间中拥有无限空间。
“UNLIMITED TABLESPACE” 权限允许用户在数据库的任何表空间中拥有无限空间,而不只是在其默认永久表空间中。所以,该选项错误。
D. 默认情况下,用户在其默认永久表空间中没有配额。
默认情况下,用户在其默认永久表空间中是有配额的。配额的具体数量取决于数据库设置以及用户账户的配置方式。所以,该选项错误。
E. 它允许用户在数据库的任何表空间中拥有无限空间。
“UNLIMITED TABLESPACE” 系统权限允许用户在数据库的任何表空间中拥有无限空间。这使得用户能够创建和扩展对象(如表格、索引等),而不受常规空间配额限制的约束。所以,该选项正确。
答案:正确的两个是 B和 E。
89. 第89题:
- 题目
- 解析及答案:
关于 Oracle 数据库中的时区、日期数据类型和时间戳数据类型,以下哪两个陈述是正确的?
A. DBTIMEZONE 函数可以返回与协调世界时(UTC)的偏移量。
DBTIMEZONE 函数会返回数据库的时区偏移量,它能够返回与协调世界时(UTC)的偏移值。例如,如果数据库设置的时区相对于 UTC 是 +5 小时,那么 DBTIMEZONE 函数就会返回该偏移值。所以,该选项正确。
B. TIMESTAMP WITH LOCAL TIMEZONE 数据类型列在数据库中是按照插入行的会话所在时区进行存储的。
实际上,TIMESTAMP WITH LOCAL TIMEZONE 数据类型列在数据库中是以协调世界时(UTC)进行存储的。当数据被检索时,才会转换为会话所在的时区。所以,该选项错误。
C. CURRENT TIMESTAMP 函数返回的数据不包含时区信息。
CURRENT TIMESTAMP 函数返回的是一个带有时区信息的 TIMESTAMP WITH TIME ZONE 值。它同时包含了日期时间信息以及时区信息。例如,它可能会返回类似 “2023 - 01 - 01 12:00:00 +05:00” 这样的值。所以,该选项错误。
D. SESSIONTIMEZONE 函数可以返回与协调世界时(UTC)的偏移量。
SESSIONTIMEZONE 函数能够返回与协调世界时(UTC)的偏移量,它提供了当前会话的时区设置情况。例如,如果会话设置的时区相对于 UTC 是 -3 小时,那么该函数就会返回该偏移值。所以,该选项正确。
E. DATE 数据类型返回的数据包含时区信息。
DATE 数据类型并不存储时区信息,它仅存储精确到秒的日期和时间值,不带有任何关于时区的标识。例如,它可能会存储类似 “2023 - 01 - 01 12:00:00” 这样的值,没有任何关于时区的信息。所以,该选项错误。
答案:正确的两个是 A 和 D。
90. 第90题:
-
题目
-
解析及答案:
关于全局临时表,以下哪两个陈述是正确的?
A. 一个会话插入到全局临时表中的行,对于已被授予该表查询权限的任何其他会话都是可用的。
一个会话插入到全局临时表中的数据对于其他会话是不可用的。全局临时表中的数据是插入该数据的会话所私有的。例如,如果会话 A 向一个全局临时表中插入了行,即使会话 B 的用户已被授予对该表的查询权限,会话 B 也无法访问那些行。所以,该选项错误。
B. 全局临时表的定义对多个会话是可用的。
全局临时表的表结构(定义)可被多个会话共享,但每个会话插入的数据是相互隔离的。例如,不同的用户可以在各自的会话期间使用相同的全局临时表结构来存储他们自己的临时数据。所以,该选项正确。
C. 一个会话发出的 TRUNCATE 命令会导致该会话在全局临时表中的所有行被删除。
当一个会话对全局临时表发出 TRUNCATE 命令时,只会删除该表中属于这个会话的行。TRUNCATE 操作仅影响发出该操作的会话的数据,而不会影响使用同一全局临时表的其他会话的数据。所以,该选项正确。
D. 对全局临时表执行的 DELETE 命令无法回滚。
对全局临时表执行的 DELETE 命令是可以回滚的。就像数据库中的其他数据操作语言(DML)操作一样,对全局临时表的 DELETE 操作是与事务相关联的,如果事务回滚,那么 DELETE 操作也可以被回滚。例如,如果一个 DELETE 操作是一个事务的一部分,并且使用 ROLLBACK 命令回滚该事务,那么被删除的行将会被恢复。所以,该选项错误。
E. 全局临时表的空间分配在会话开始时进行。
全局临时表的空间并不是在会话开始时进行分配的。而是在会话期间向表中插入数据时,根据需要进行空间分配。例如,如果一个会话开始后,没有立即向全局临时表中插入任何数据,那么就不会为该表的数据存储分配空间。所以,该选项错误。
答案:正确的两个是 B 和 C(C有点歧义,但是题目要求选两个B肯定正确,C是第二正确的,个人认为)。
未完待续。
关注作者,您将获得更多OCP考试及Oracle DB方面的实战经验。后续不定期分享DB核心知识和排障案例及经验、性能调优等