题记:
本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。
81. 第81题:
-
题目
81.Examine these SOL statements which execute successfully
Which two statements are true after execution?
A.The primary key constraint will be enabled and IMMEDIATE
B.The foreign key constraint will be enabled and DEFERRED
C.The foreign key constraint will be disabled
D.The foreign key constraint will be enabled and IMMEDIATE
E.The primary key constraint will be enabled and DEFERRED -
解析及答案:
查看以下这些成功执行的 SQL 语句。执行之后,以下哪两个陈述是正确的?
见上图
A. 主键约束将被启用,并且是立即(IMMEDIATE)模式。
B. 外键约束将被启用,并且是延迟(DEFERRED)模式。
C. 外键约束将被禁用。
D. 外键约束将被启用,并且是立即(IMMEDIATE)模式。
E. 主键约束将被启用,并且是延迟(DEFERRED)模式。
本题较简单,正确的两个A C。
注记:主键约束失效会导致外键约束也失效,但是不会因为主键约束生效而生效
82. 第82题:
- 题目
- 解析及答案:
关于 Oracle 数据库中的私有临时表(PTTs),以下哪三个陈述是正确的?
A. 并发会话可以拥有名称相同但列定义不同的私有临时表。
并发会话中的私有临时表是相互独立的,不同会话可以拥有名称相同但结构不同的表,这不会产生冲突。例如,一个会话可以有一个名为 “TEMP_TABLE” 的私有临时表,包含列 “COL1” 和 “COL2”,而另一个会话可以有一个同样名为 “TEMP_TABLE” 的私有临时表,但包含列 “COL3” 和 “COL4”。所以,该选项正确。
B. 并发会话可以拥有名称相同且列定义也相同的私有临时表。
并发会话也可以拥有名称相同且列定义相同的私有临时表。因为私有临时表对于每个会话来说是私有的,所以即使它们名称和结构都相同,也不会相互干扰。例如,两个不同的会话可能都需要使用一个具有相同列的临时表来存储查询的中间结果。所以,该选项正确。
C. 创建私有临时表是数据定义语言(DDL)操作,并且会提交会话中的任何活动事务。
在 Oracle 中,创建私有临时表属于数据定义语言(DDL)操作。数据定义语言操作会隐式提交会话中正在进行的任何事务。例如,如果用户正在向一个常规表插入行的过程中创建了一个私有临时表,那么插入操作将会被提交。所以,该选项正确。
D. 当带有私有临时表的会话执行提交(COMMIT)操作时,可以保留私有表定义但删除其中的行。
当带有私有临时表的会话执行提交操作时,私有临时表中的数据会被删除。私有临时表的作用是为会话保存临时数据,当会话提交后,这些数据就不再需要了。表定义会保留下来,以便会话在需要时再次使用,但行数据会被清空。所以,该选项正确。
E. 并发会话可以拥有名称不同但列定义相同的私有临时表。
并发会话可以拥有名称不同但列定义相同的私有临时表。这是一种合理的情况,因为每个会话的私有临时表是相互独立的,可以有不同的名称但具有相同的结构,以便在不同会话中满足类似的查询处理需求。例如,一个会话可以有 “TEMP_TABLE1”,另一个会话可以有 “TEMP_TABLE2”,它们都具有相同的列,用于类似的查询处理需求。所以,该选项正确。
本题实际上选项 A、B、C、D、E 全部正确,但题目要求选择三个,个人觉得选择BCD最保险。
83. 第83题:
- 题目
83.Table ORDER_ITEMS contains columns ORDER_ID, UNIT_PRICE and QUANTITY, of data type NUMBER.
Examine these SQL statements
Which two statements are true?
A.Statement 1 returns only one row of output.
B.Statement 2 may return multiple rows of output.
C.Statement 2 returns only one row of output.
D.Both the statements give the same output.
E.Both statements will return NULL if either UNIT_PRICE or QUANTITY contains NULL;
- 解析及答案:
表 “ORDER_ITEMS” 包含数据类型为 NUMBER 的列 “ORDER_ID”、“UNIT_PRICE” 和 “QUANTITY”。查看以下这些 SQL 语句:
以下哪两个陈述是正确的?
A. 语句 1 仅返回一行输出结果。
语句 1“SELECT MAX (UNIT_PRICE *QUANTITY) FROM ORDER_ITEMS;” 会计算 “ORDER_ITEMS” 表中所有行的 “UNIT_PRICE” 与 “QUANTITY” 乘积的最大值。它将返回一个单一的值,即所计算出的这些乘积中的最大值。例如,如果表中有 5 行数据,每行有着不同的 “UNIT_PRICE” 和 “QUANTITY” 组合,它会先为每行计算乘积,然后返回这些乘积中的最大值。所以,它只会返回一行输出结果。
B. 语句 2 可能返回多行输出结果。
语句 2“SELECT MAX (UNIT_PRICE), MAX (QUANTITY) FROM ORDER_ITEMS;” 会分别计算 “UNIT_PRICE” 的最大值和 “QUANTITY” 的最大值。对于这两个最大值,它可能会返回不同的值。例如,最大的 “UNIT_PRICE” 可能来自某一行,而最大的 “QUANTITY” 可能来自另一行。所以,它可能会返回多行输出结果(在此情况下,它通常返回一行,但从概念上讲,它是在分别计算两个不同的最大值)。
C. 语句 2 仅返回一行输出结果。
如前文所分析,语句 2 可能返回多行输出结果,并非仅返回一行。所以,该选项错误。
D. 这两个语句会给出相同的输出结果。
这两个语句不会给出相同的输出结果。语句 1 计算的是 “UNIT_PRICE” 与 “QUANTITY” 乘积的最大值,而语句 2 是分别计算 “UNIT_PRICE” 的最大值和 “QUANTITY” 的最大值。所以,该选项错误。
E. 如果 “UNIT_PRICE” 或 “QUANTITY” 包含空值(NULL),那么这两个语句都会返回空值。
如果 “UNIT_PRICE” 或 “QUANTITY” 包含空值,这两个语句的处理方式是不同的。对于语句 1,如果任何一个乘积(UNIT_PRICE * QUANTITY)为空值(因为其中一个因子为空值),那么这个空值会在求最大值(MAX)的计算中被考虑进去。对于语句 2,计算 “UNIT_PRICE” 和 “QUANTITY” 的最大值函数(MAX)会默认忽略空值。所以,它们不会都返回空值。所以,该选项错误。
正确的两个是 A 和 B。
84. 第84题:
- 题目
- 解析及答案:
关于在复合查询中使用 INTERSECT 运算符的结果,以下哪两个陈述是正确的?
A. 颠倒被交集运算的表的顺序有时会影响输出结果。
颠倒被交集运算的表的顺序并不会影响输出结果。INTERSECT 运算符返回的是复合查询两边结果集中的共同行,操作数(即进行交集运算的两个查询)的顺序并不会改变这些共同行的集合。例如,如果有 “SELECT column1 FROM table1 INTERSECT SELECT column1 FROM table2”,它与 “SELECT column1 FROM table2 INTERSECT SELECT column1 FROM table1” 会得到相同的结果。所以,该选项错误。
B. INTERSECT 会返回复合查询两边共有的行。
INTERSECT 运算符会返回复合查询两边都存在的行。例如,如果一个查询从一张表中选出值为 1、2、3 的行,另一个查询从同一张表或另一张表中选出值为 2、3、4 的行,那么 INTERSECT 操作将会只返回值为 2 和 3 的行。所以,该选项正确。
C. 复合查询中每个 SELECT 语句里的列名可以不同。
复合查询中每个 SELECT 语句里的列名可以不同。然而,各列的数据类型以及列的顺序必须在有意义的情况下保持一致。例如,在一部分查询中可以有列 “employee_id” 和 “department_id”,在另一部分查询中可以有列 “id” 和 “dept_id”,只要 “employee_id” 和 “id” 的数据类型相同且在位置上匹配,“department_id” 和 “dept_id” 的数据类型相同且在位置上匹配就行。所以,该选项正确。
D. 复合查询中每个 SELECT 语句里的列数可以不同。
复合查询中每个 SELECT 语句里的列数必须相同。如果一个查询返回三列,而另一个查询返回四列,那么 INTERSECT 操作将无法按预期进行。各列还必须在数据类型和位置上有相应的匹配。所以,该选项错误。
E. INTERSECT 会忽略空值(NULL)。
INTERSECT 运算符不会忽略空值。如果在进行 INTERSECT 操作的列中存在空值,并且该空值所在的行在两个查询中都是共同行的一部分,那么这个空值将会包含在结果中。例如,如果两个查询在某一列中都有一行包含空值,并且这两行在其他方面是相同的,那么包含空值的这行将会是 INTERSECT 结果的一部分。所以,该选项错误。
正确的两个是 B 和 C。
85. 第85题:
- 题目
- 解析及答案:
关于使用 SQLPlus,以下哪三个陈述是正确的?
A. 它可以运行由 shell 脚本传递给它的脚本。
SQLPlus 能够运行由 shell 脚本传递给它的脚本。在实现与数据库相关任务的自动化时,这是一个很有用的功能。例如,一个 shell 脚本可以调用 SQLPlus,并将一个 SQL 脚本文件作为参数传递给它,以执行一系列 SQL 命令,比如创建表、插入数据或者运行查询等。所以,该选项正确。
B. 它可以运行在 SQL 提示符下输入的脚本。
SQLPlus 允许用户运行在 SQL 提示符下输入的脚本。用户可以直接在 SQLPlus 提示符下输入 SQL 命令或者一系列命令(即一个脚本)来与数据库进行交互。例如,用户可以在 SQLPlus 提示符下先输入一条 “CREATE TABLE” 语句,接着再输入一条 “INSERT INTO” 语句。所以,该选项正确。
C. 它既有命令行界面又有图形用户界面(GUI)。
SQLPlus 是一个命令行工具,它本身并没有原生的图形用户界面(GUI)。它为与 Oracle 数据库进行交互提供了一个基于文本的界面。所以,该选项错误。
D. 它有自己的一套独立于任何 SQL 语句的命令。
SQLPlus 有它自己的一套命令,这些命令与 SQL 语句是相互独立的。这些命令可用于诸如格式化查询输出、设置环境变量以及管理 SQLPlus 会话等任务。例如,SQLPlus 中的 “SET PAGESIZE” 命令是用于设置查询输出每页的行数的,它并不是一条 SQL 语句。所以,该选项正确。
E. 它可以运行恢复管理器(RMAN)的命令。
SQLPlus 可以运行恢复管理器(RMAN)的命令。这使得数据库管理员能够通过 SQLPlus 界面来管理数据库的备份和恢复操作。例如,管理员可以使用 SQLPlus 来发出 RMAN 命令,以对数据库执行一次全备份。所以,该选项正确。
F. 它必须从 Oracle 技术网络(OTN)下载。
SQLPlus 通常是作为 Oracle 数据库软件安装的一部分进行安装的,在典型的安装场景下,并不需要从 Oracle 技术网络(OTN)下载它。所以,该选项错误。
答案:正确的三个是 A、B 和 D(实际上 E 也是正确的,但题目要求选三个陈述)。
未完待续。
关注作者,您将获得更多OCP考试及Oracle DB方面的实战经验。后续不定期分享DB核心知识和排障案例及经验、性能调优等