题记:
本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。
46. 第46题:
- 题目
46.The SALES_Q1 and USERS tablespaces exist in one of your databases And TEMP is a temporary tablespace.
Segment creation is not deferred. You execute this command
Which three statements must be true so that the sales user can create tables in SALES_Q1?
A.The sales user must have been granted the CREATE TABLE privilege
B.The sales user must have been granted the CREATE SESSION privilege
C.The sales user must have a quota on the TEMP tablespace
D.The sales user must have a quota on the SALES_Q1 tablespace to hold the initial extents of all tables they plan to create in their schema
E.The sales user must have a quota on the SALES_Q1 tablespace to hold all the rows to be inserted into any table in their schema
F. The sales user must have their quota on the users tablespace removed - 解析及答案:
为了让 “sales” 用户能够在 “SALES_Q1” 表空间中创建表,以下哪三个陈述必须为真?
A. 必须已授予 “sales” 用户 “CREATE TABLE”(创建表)权限。
“CREATE TABLE” 权限对于用户能够创建表来说是必不可少的。如果没有该权限,无论其他设置如何,用户都无法执行 “CREATE TABLE” 命令。
B. 必须已授予 “sales” 用户 “CREATE SESSION”(创建会话)权限。
“CREATE SESSION” 权限允许用户连接到数据库。如果用户无法连接到数据库,那么他们就无法执行任何命令,包括创建表的命令。
C. “sales” 用户必须在 “TEMP” 表空间上有配额。
在临时表空间(TEMP)上有配额是必需的,因为当创建表时(尤其是在诸如排序等可能会使用临时表空间的操作过程中),用户需要在临时表空间中有可用空间。
D. “sales” 用户必须在 “SALES_Q1” 表空间上有配额,以容纳他们计划在自己的模式下创建的所有表的初始区。
用户必须在 “SALES_Q1” 表空间上有配额来容纳他们计划创建的表的初始区。当创建一张表时,第一个区(初始空间分配)需要放置在指定的表空间(在此例中为 “SALES_Q1”)中,而用户在该表空间上的配额决定了是否有足够的空间用于这种初始分配。
E. “sales” 用户必须在 “SALES_Q1” 表空间上有配额,以容纳要插入到其模式下任何表中的所有行。
虽然为要插入的行留有空间很重要,但对于表创建过程来说,如选项 D 所述的在 “SALES_Q1” 表空间上为初始区设置配额更为关键。在创建表时,仅为要插入的行设置配额并非当下最紧要的事情。所以,该选项对于单纯的表创建行为来说不像其他选项那么关键。
F. 必须移除 “sales” 用户在 “USERS” 表空间上的配额。
移除 “sales” 用户在 “USERS” 表空间上的配额与该用户在 “SALES_Q1” 表空间中创建表的能力无关。重点应该放在与 “SALES_Q1” 和临时表空间相关的权限及配额上。所以,该选项对于用户在 “SALES_Q1” 表空间中创建表来说并非必要条件。
综上分析,为了让 “sales” 用户能够在 “SALES_Q1” 表空间中创建表,必须为真的三个是 A、B 和 D。
47. 第47题:
- 题目
- 解析及答案:
关于 “DUAL” 表,以下哪两个陈述是正确的?
A. 它可以显示多行多列。
“DUAL” 表是 Oracle 中的一个特殊的单行单列表。它的设计目的并非用于显示多行多列。它主要是作为一个虚拟表,为那些需要表上下文的函数和计算提供支持。所以,该选项错误。
B. 只有 “sys” 用户可以访问它。
任何在任何模式下拥有 “SELECT” 权限的用户都可以访问 “DUAL” 表,而不只是 “sys” 用户。它是在许多不同用户情境下的 SQL 操作中都会用到的一个基础表。所以,该选项错误。
C. 它可以显示多行但只有一列。
“DUAL” 表是一个单行表。它无法显示多行,尽管它可以用于以单列格式返回值。所以,该选项错误。
D. 它可用于仅显示常量或伪列。
“DUAL” 表经常被用于显示常量或伪列。例如,你可以使用它来获取当前日期(如 “SELECT SYSDATE FROM DUAL;”)、序列值(如 “SELECT my_sequence.NEXTVAL FROM DUAL;”)或者一个简单计算结果(如 “SELECT 2 + 3 FROM DUAL;”)。所以,该选项正确。
E. 任何在任何模式下拥有 “SELECT” 权限的用户都可以访问它。
任何在任何模式下拥有 “SELECT” 权限的用户都可以访问 “DUAL” 表。它是数据库提供的一个基本的实用表,用于各种 SQL 操作,比如获取与系统相关的值或者进行简单计算。所以,该选项正确。
F. 它由一行一列且数据类型为 “VARCHAR2” 组成。
“DUAL” 表通常确实是由一行一列组成,但数据类型并不局限于 “VARCHAR2”。根据操作的不同,它可以用于返回不同数据类型的值,比如 “NUMBER”(用于计算)、“DATE”(用于系统日期)等等。所以,该选项错误。
正确的两个是 D 和 E。
48. 第48题:
- 题目
- 解析及答案:
关于 “DESCRIBE” 命令,以下哪三个陈述是正确的?
A. 它可以在 SQL Developer 中使用。
“DESCRIBE” 命令能够在 SQL Developer 中被使用。SQL Developer 提供了一个执行 SQL 命令的界面,而 “DESCRIBE” 命令是了解表、视图等结构的一个有用工具。所以,该选项正确。
B. 它会显示为每列定义的所有约束条件。
“DESCRIBE” 命令并不会显示为每列所定义的所有约束条件。它主要展示列名、数据类型以及是否可为空的状态。它不会提供像外键、检查约束等所有约束条件的完整列表。所以,该选项错误。
C. 它只能在 SQLPlus 中使用。
“DESCRIBE” 命令并非仅限于在 SQLPlus 中使用。正如在选项 A 中所提到的,它也可以在 SQL Developer 以及其他基于 SQL 的界面中使用。所以,该选项错误。
D. 它会显示具有主键约束的任何一列或多列的主键约束信息。
“DESCRIBE” 命令并不会特别地显示主键约束信息。它展示的是诸如列名、数据类型以及是否可为空这类基本的列信息。要查看主键约束,可能需要查询数据字典视图。所以,该选项错误。
E. 它会显示具有非空约束的任何列的非空约束信息。
当使用 “DESCRIBE” 命令时,它会显示具有非空约束的列的非空约束信息。也就是说,它会表明某一列是否允许为空值。如果一列具有非空约束,这一情况将会被显示出来。所以,该选项正确。
F. 它可以用来显示现有视图的结构。
“DESCRIBE” 命令可以用来显示现有视图的结构。与表类似,它会展示视图的列名及其相应的数据类型。所以,该选项正确。
正确的三个是 A、E 和 F。
49. 第49题:
- 题目
- 解析及答案:
以下哪两个查询能够成功执行?
A. SELECT NULLIF (100, 100) FROM DUAL
“NULLIF” 函数用于比较两个表达式。如果它们相等,则返回 “NULL”;否则,返回第一个表达式。在 “SELECT NULLIF (100, 100) FROM DUAL” 这个查询中,因为 100 等于 100,所以该函数会返回 “NULL”。此查询能够成功执行。
B. SELECT NULLIF (100, A) FROM DUAL;
在 “SELECT NULLIF (100, A) FROM DUAL;” 这个查询中,变量 “A” 未被定义。在 SQL 查询中,不能像这样使用未定义的变量。所以,此查询将会出错,无法成功执行。
C. SELECT COALESCE (100, ‘A’) FROM DUAL;
“COALESCE” 函数会返回表达式列表中的第一个非空值。在 “SELECT COALESCE (100, ‘A’) FROM DUAL;” 这个查询中,第一个值 100 不为 “NULL”,所以它会返回 100。此查询能够成功执行。
D. SELECT COALESCE (100, NULL, 200) FROM DUAL;
对于 “SELECT COALESCE (100, NULL, 200) FROM DUAL;” 这个查询,“COALESCE” 函数会找到第一个非空值 100 并返回它。此查询能够成功执行。
E. SELECT NULLIF (NULL, 100) FROM DUAL;
在 “SELECT NULLIF (NULL, 100) FROM DUAL;” 这个查询中,“NULLIF” 函数将 “NULL” 与 100 进行比较。由于第一个值是 “NULL”,所以它会返回第一个值,也就是 “NULL”。此查询能够成功执行。
综上能够成功执行的查询是A、D 和 E ,但题目要求只能选两个,所以AD/AE吧。
50. 第50题:
- 题目
- 解析及答案:
关于内连接和外连接,以下哪三个陈述是正确的?
A. 当对两张表设置了多个连接条件时,可以使用外连接。
外连接的使用与两张或多张表之间连接条件的数量无关。这些连接条件有助于确定在连接操作中表之间的关联方式。所以,该选项正确。
B. 每个查询中,外连接只能用于两张表之间。
外连接可以在一个查询中用于多张表。你可以构建一个具有多个外连接且涉及多张表的复杂查询结构。所以,该选项错误。
C. 左外连接或右外连接仅返回不匹配的行。
左外连接会返回左表中的所有行以及右表中与之匹配的行,并非仅返回不匹配的行。右外连接则相反,它会返回右表中的所有行以及左表中与之匹配的行。所以,该选项错误。
D. 全外连接会返回匹配的行以及不匹配的行。
全外连接会返回参与连接的两张表中匹配的行(即满足连接条件的行)以及不匹配的行。所以,该选项正确。
E. 内连接会返回匹配的行。
内连接只会返回满足连接条件的行,也就是参与连接的表之间匹配的行。所以,该选项正确。
F. 全外连接必须使用 Oracle 语法。
全外连接可以使用标准 SQL 语法来编写,并非仅属于 Oracle 特有的。其他数据库管理系统也使用类似或等效的语法来支持全外连接操作。所以,该选项错误。
正确的三个陈述是 A、D 和 E。
未完待续。
关注作者,您将获得更多OCP考试及Oracle DB方面的实战经验。后续不定期分享DB核心知识和排障案例及经验、性能调优等