创建其他模式对象问题

创建其他模式对象问题


1. 以下哪个数据库对象提供了用户和数据之间的抽象层?

  1. 桌子
  2. 观看次数
  3. 同义词

答案:C、D。视图和同义词本身不存储数据。视图是用于检索存储在基础数据库表中的数据的临时表或虚拟表。

2. 以下哪些数据库对象可以生成序列号?

  1. 同义词
  2. 观看次数

  3. 序列

答案:D。可以创建一个序列来生成一系列整数。序列生成的值可以存储在任何表中。使用 CREATE SEQUENCE 命令创建序列。

3. 关于视图,哪些是真的?

  1. 它们等于表
  2. 它们存储来自一张或多张表的数据
  3. 我们可以在简单视图上执行 SELECT 和其他 DML
  4. 视图与表共享相同的命名空间,因此表和视图不能具有相同的名称

答案:C、D。在包含组函数、GROUP BY 子句、ROWNUM 伪列或 DISTINCT 关键字的视图上不允许 DML 操作。

4. 为什么视图有用?(选择最合适的答案)

  1. 因为它们的名称比表格短
  2. 防止用户访问表的列
  3. 简化用户 SQL
  4. 上述所有的

答案:B、C。视图是用于检索存储在基础数据库表中的数据的临时表或虚拟表。每次使用视图时都必须执行视图查询。视图可用于简化查询或限制对敏感数据的访问。

5. 在以下哪种情况下,视图上的 DML 操作是不可能的?

  1. 视图包含 GROUP BY 子句
  2. 基表包含 NOT NULL 列但未在视图查询中选择
  3. 查看查询使用 ROWNUM 伪列
  4. 上述所有的

答案:D. DML 操作不允许对包含组函数、GROUP BY 子句、ROWNUM 伪列或 DISTINCT 关键字的视图进行。

6. 视图从哪里获取数据?

  1. 来自同一架构的表
  2. 来自不同模式的表
  3. A 和 B
  4. 以上都不是

答案:C。

考虑给定的表结构和以下陈述,并回答以下问题 7 到 9:

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
CREATE VIEW emp_details AS
SELECT hire_date, job, salary, department_id FROM employees; 

7. 您发出以下查询。作为以下查询的结果,用户将看到多少列?

SELECT * FROM emp_details WHERE department_id= 100;
  1. 0
  2. 1
  3. 2
  4. 4

答案:D。由于视图定义基于 EMPLOYEES 表中的四列,因此对包含所有列的视图的查询将仅显示这四列。

8. 除了以上4列之外,还需要获取部门名称。以下哪个查询会为您提供所需的结果?

  1. SELECT E.*, dept_name
    FROM departments D join emp_details E
    ON (E.department_id= D.dept_id);
  2. SELECT hire_date, job, salary, dept_name FROM emp_details
  3. 这是不可能的视图不能连接到其他表
  4. 以上都不是

答案: A.一个视图可以在 SELECT 查询中与其他表或视图连接。

9. 除了视图中选择的 4 列之外,您还需要找到最高工资和部门名称。以下哪个查询会为您提供所需的结果?

  1. Select dept_name, e.salary
    FROM departments D join emp_details E
    On (E.department_id= D.dept_id);
  2. Select dept_name, max(salary)
    FROM departments D join emp_details E
    On (E.department_id= D.dept_id)
    Group by dept_name;
  3. 视图不能出现在使用组函数的查询中
  4. Select dept_name, max(salary)
    FROM departments D join emp_details E
    On (E.department_id= D.dept_id);

答案:B。

10.关于同义词,下列哪项是正确的?

  1. PUBLIC 和 PRIVATE 同义词可以在同一个表中具有相同的名称
  2. DROP SYNONYM 将删除同义词
  3. DROP PUBLIC SYNONYM 只能由 SYSDBA 执行
  4. 以上都不是

答案:A、C。同义词可以是私有同义词,用户用来引用他们拥有的对象,或者是公共同义词,用户用来访问另一个用户的数据库对象。只有 SYSDBA 或具有 DBA 权限的用户才能创建公共同义词。

11. 关于创建视图,哪些是正确的?(选择最合适的答案)

  1. 只能从表创建视图
  2. 一个视图只能从一张表创建
  3. 可以从一个或多个表或视图创建视图
  4. 以上都不是

答案:C。包含表达式或函数或连接多个表的视图被视为复杂视图。一个复杂视图只能用于更新一个表。

12. 在自己的架构中创建视图需要以下哪些权限?

  1. CREATE TABLE 系统权限
  2. CREATE VIEW 系统权限
  3. ALTER VIEW 系统权限
  4. CREATE ANY VIEW 系统权限

答案:B.用户需要 CREATE VIEW 权限才能在其自己的架构中创建视图。

13. 在别人的模式中创建视图需要以下哪些权限?

  1. 创建任何视图
  2. 创建视图
  3. A 和 B
  4. 以上都不是

答案: A.用户需要 CREATE ANY VIEW 权限才能在其他用户的架构中创建视图。

14.对象视图或关系视图支持以下哪些内容?

  1. LOB
  2. 对象类型
  3. REF 数据类型
  4. 上述所有的

答案:D。

15. 以下哪些是不同类型的视图?

  1. 简单视图
  2. 复杂视图
  3. A 和 B
  4. 以上都不是

答案:C.简单视图和复杂视图是两种类型的视图。简单视图基于仅引用一个表且不包括组函数、表达式或 GROUP BY 子句的子查询。复杂视图基于从一个或多个表中检索或派生数据的子查询,并且可以包含函数或分组数据。

16. 什么是简单视图?

  1. 大多数时候可以针对简单视图发出 DML 语句
  2. 只有一个源基表
  3. 不使用组函数
  4. 上述所有的

答案:D.简单视图基于仅引用一个表且不包括组函数、表达式或 GROUP BY 子句的子查询。

17.什么是复杂的视图是真的?

  1. 不能针对复杂视图发出 DML 语句
  2. 包含多个基表
  3. 无法执行聚合
  4. 上述所有的

答案:D.复杂视图基于从一个或多个表中检索或派生数据的子查询,并且可以包含函数或分组数据。

18.隐式删除一个视图(如果存在)并创建一个同名的新视图应该使用哪个关键字组合?

  1. 创建视图
  2. 替换视图
  3. 创建或替换视图
  4. 以上都不是

答案:C . OR REPLACE 选项通知 Oracle 11g 可能已经存在同名的视图;如果是,则视图的先前版本应替换为新命令中定义的版本。

19.视图如何存储在数据字典中?

  1. 作为 WHERE 子句
  2. 作为 CREATE 语句
  3. 作为 UPDATE 语句
  4. 作为 SELECT 语句

答案:D。

20.以下哪些可以包含单行函数?

  1. 内联视图
  2. 简单视图
  3. 复杂视图
  4. 复合视图

答案:A、B。单行函数可以在 Inline 和 Simple 视图中使用。

21.以下哪项可以包含一组数据?

  1. 复合视图
  2. 简单视图
  3. 复杂视图
  4. 以上都不是

答案:C.复杂视图可以在查询中使用分组功能。

22.关于视图,下列哪项是正确的?

  1. 子查询可以嵌入到 CREATE VIEW 语句中
  2. CREATE VIEW 语句中使用的子查询必须具有简单的 SELECT 语法
  3. 在 CREATE VIEW 语句中使用时,不能在子查询中使用 WHERE 子句
  4. 以上都不是

答: A.视图定义可以使用子查询。

23.即使基表不存在,以下哪个可以创建视图?

  1. 非军事力量
  2. 力量
  3. 或更换
  4. 创建视图

答案:B.如果您在 CREATE 子句中包含 FORCE 关键字,Oracle 11g 会创建视图,尽管没有任何引用表。NOFORCE 是 CREATE VIEW 命令的默认模式,这意味着所有表和列都必须有效,否则不会创建视图。

24.以下哪个命令可以保证视图不能进行DML操作?

  1. 非军事力量
  2. 力量
  3. 只读
  4. 或更换

答案:C . WITH READ ONLY 选项阻止在视图上执行任何 DML 操作。当用户只能查询数据而不对其进行任何更改很重要时,通常会使用此选项。

25.CREATE VIEW 语句中的 NOFORCE 选项正确的是什么?

  1. 即使基表不存在,它也会创建一个视图。
  2. 仅当基表存在时才创建视图。
  3. 这是创建视图时的默认设置。
  4. 以上都不是

答案:B、 C。NOFORCE 是 CREATE VIEW 命令的默认模式,这意味着所有表和列都必须有效,否则不会创建视图。

26. OR REPLACE 关键字正确的是什么?

  1. 使用此关键字创建视图时,对象权限将丢失
  2. 无需重新授予先前授予的对象权限
  3. A 和 B 都不行
  4. 以上都不是

答案:B . OR REPLACE 选项通知 Oracle 11g 可能已经存在同名的视图;如果是,则视图的先前版本应替换为新命令中定义的版本。

27.关于访问下面的视图,什么是正确的?(假设给定的表结构)

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
CREATE VIEW salVU100
AS SELECT employee_id  ID_NUMBER, last_name NAME, salary*12 ANNUAL_SAL
FROM employees E 
WHERE department_id= 100; 
  1. 视图必须由基表中定义的原始列名访问
  2. 视图必须通过视图查询中给出的别名访问
  3. 视图是一个简单的视图
  4. 以上都不是

答案:B、C。如果视图定义包含列的别名,则视图必须引用列别名。

28.关于访问以下视图,哪些是正确的?(假设给定的表结构)

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
CREATE VIEW salVU100 (ID_NUMBER, NAME, ANNUAL_SAL)
AS SELECT employee_id , last_name, salary*12 
FROM employees E 
WHERE department_id= 100; 
  1. 别名数量与编号匹配不是强制性的。子查询中的表达式
  2. 否是强制性的。列出的别名必须与编号匹配。在子查询中选择的表达式
  3. 创建视图时必须提供别名
  4. 以上都不是

答案:B.如果在视图标题中指定了别名,则必须在 SELECT 查询中选择相同数量的列。

29. 考虑以下语句和给定的表结构:

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
SQL> DESC departments
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 DEPARTMENT_ID		 NOT NULL NUMBER(4)
 DEPARTMENT_NAME	 NOT NULL VARCHAR2(30)
 MANAGER_ID			  NUMBER(6)
 LOCATION_ID			  NUMBER(4)
CREATE OR REPLACE VIEW empVU100
(ID_NUMBER, NAME, ANNUAL_SAL, DEPT_ID)
AS 
SELECT employee_id , first_name ||' '|| last_name, salary, department_id
FROM employees
WHERE department_id= 100; 

上面查询中的列别名是什么?

  1. 列别名作为子查询中的列以随机顺序列出
  2. 列别名以与子查询中的列相同的顺序列出
  3. 使用 CREATE OR REPLACE 关键字时,列别名是必需的
  4. 当我们使用 CREATE OR REPLACE 时,我们不能使用串联

答案:B。

考虑以下陈述并回答下列问题 30 至 34:

CREATE OR REPLACE VIEW dept_sum_vu (name, minsal, maxsal, avgsal) 
AS 
SELECT d.dept_name, MIN(e.salary), MAX(e.salary), AVG (e.salary)
FROM employees e JOIN departments d 
ON (e.department_id= d.dept_id)
GROUP BY d.dept_name; 

30.关于上面给出的陈述,可以说些什么?

  1. 已为视图指定了其他名称
  2. 如果任何列派生自函数或表达式,则必须提供替代名称
  3. A 和 B
  4. 以上都不是

答案:C。指定别名是提高代码和视图查询可读性的好习惯。

31.如果上面的语句修改如下会发生什么?

CREATE OR REPLACE VIEW dept_sum_vu(name, maxsal, minsal, avgsal)
AS 
SELECT d.dept_name, MIN(e.salary), MAX(e.salary), AVG (e.salary)
FROM employees e JOIN departments d 
ON (e.department_id= d.dept_id)
GROUP BY d.dept_name; 
  1. 这将与原始声明没有什么不同
  2. 它将成功执行,给出相同的结果,但别名发生了变化。
  3. 它会抛出一个 ORA 错误
  4. 以上都不是

答案:B。列别名的顺序并不重要,因为它们不携带任何行为属性。

32.确定以下 DELETE 语句的输出。

DELETE FROM dept_sum_vu; 
  1. 它将删除视图
  2. 它将从视图中删除所有行,但视图的结构将保持不变
  3. 它会抛出一个 ORA 错误
  4. 以上都不是

答案:C。视图 DEPT_SUM_VU 是一个复杂视图。无法对复杂视图执行 DML 操作。

33.假设您将上面给出的查询修改为以下内容:

CREATE OR REPLACE VIEW dept_sum_vu(name, sal) 
AS 
SELECT d.dept_name, e.salary 
FROM employees e JOIN departments d 
ON (e.department_id= d.dept_id)
Where rownum < 10; 

修改后会有什么影响?

  1. 可以更新视图以更新 EMPLOYEES 和 DEPARTMENTS 表中的值
  2. EMPLOYEES 和 DEPARTMENTS 表中的数据无法通过视图删除
  3. EMPLOYEES 和 DEPARTMENTS 表中的数据可以通过视图插入
  4. 可以通过视图向 EMPLOYEES 表添加一列

答案:B.不能在复杂视图上执行 DML 操作。DEPT_SUM_VU 是一个复杂的视图,因为它连接了多个表。视图上无法进行 DDL 操作。

34.假设您在上述问题中使用的视图查询中选择了 DISTINCT 部门和员工工资。如果您尝试从视图 dept_sum_vu 中删除行,结果会怎样?

  1. 行将被删除,没有任何错误
  2. 只有前 10 行会被删除
  3. 无法删除行。
  4. 以上都不是

答案:C。视图 DEPT_SUM_VU 仍然是一个复杂的视图,因为它使用了 DISTINCT 关键字。因此,无法对其进行 DML 操作。

35.什么时候可以删除视图中的行?

  1. 无法通过视图删除行
  2. 它应该是一个简单的视图
  3. 它应该是一个复杂的视图
  4. 以上都不是

答案:B. DML 操作只能在简单视图上进行。

36.视图中的数据什么时候不能修改?

  1. 当有组表达式时
  2. 当有 GROUP BY 子句时
  3. 在视图查询中使用 ROWNUM 时
  4. 上述所有的

答案:D. UPDATE 在包含组函数、伪列或 DISTINCT 关键字的视图上是不可能的。

37. JOB_HISTORY 表归用户“Andy”所有。Andy 将 JOB_HISTORY 表的 SELECT 权限授予另一个用户“HR”。哪个语句会创建同义词 EMP_JOBS 以便“HR”可以成功执行以下查询?(假设表的结构是给定的)

SQL> desc job_history
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 START_DATE		 NOT NULL DATE
 END_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 DEPARTMENT_ID			  NUMBER(4)
SELECT * from EMP_JOBS; 
  1. 安迪问题——
    CREATE SYNONYM EMP_JOBS for JOB_HISTORY
  2. 人力资源问题——
    CREATE SYNONYM EMP_JOBS for andy.JOB_HISTORY
  3. 人力资源问题——
    CREATE PUBLIC SYNONYM EMP_JOBS FOR andy.JOB_HISTORY
  4. 以上都不是

答案:B.只有 SYSDBA 或具有 DBA 权限的用户才能创建公共同义词。

38.哪个关键字可以保证对视图执行的DML操作留在视图的域中?

  1. 或更换
  2. 创建
  3. 带检查选项
  4. 以上都不是

答案:C。 WITH CHECK OPTION 约束确保在视图上执行的任何 DML 操作(例如添加行或更改数据)不会阻止视图访问该行,因为它不再满足 WHERE 子句中的条件。

考虑下面的表格结构和给定的陈述,并回答下面的问题 39 和 40:

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
CREATE OR REPLACE VIEW empvu100
AS 
SELECT * FROM employees 
WHERE department_id= 100
WITH CHECK OPTION CONSTRAINT empvu100_ck; 

39.上面的语句有什么作用?

  1. 它将允许用户对所有部门执行 INSERT 或 UPDATE
  2. 它将允许用户执行 INSERT 或 UPDATE 具有部门 100 的任何行
  3. 用户可以更新员工表中的任何行
  4. 用户可以在员工表中不受任何限制地插入行

答案:B . WITH CHECK OPTION 约束确保对视图执行的任何 DML 操作(例如添加行或更改数据)不会阻止视图访问该行,因为它不再满足 WHERE 子句中的条件。如果在 department_id 不是 100 的任何行上执行 INSERT 或 UPDATE,将抛出 ORA 错误。

40.假设您触发一个 UPDATE 语句,如下所示:

UPDATE empvu100
Set department_id = 200
Where employee_id  = 121; 

这个声明的结果是什么?

  1. 没有行更新
  2. 抛出 ORA 错误
  3. A 和 B
  4. 以上都不是

答案:C。如果带有 CHECK OPTION 的视图被更新并且新记录的值违反了视图的范围,则会引发 ORA 异常“ORA-01402:带有检查选项的视图违反”。

41.WITH CHECK CONSTRAINT 的正确之处是什么?

  1. 通过视图执行的 INSERT 或 UPDATE 无法创建视图无法选择的行
  2. 只有通过视图执行的 INSERT 不能创建视图无法选择的行
  3. 只有通过视图执行的 UPDATE 不能创建视图无法选择的行
  4. 以上都不是

答案:A。

42.如何防止View上的DML操作?

  1. 通过定义 WITH CHECK OPTION 约束
  2. 通过定义 WITH READ ONLY 选项
  3. A 和 B 都不行
  4. 以上都不是

答案:B . WITH READ ONLY 选项阻止在视图上执行任何 DML 操作。当用户只能查询数据而不对其进行任何更改很重要时,通常会使用此选项。

考虑表结构和给定的语句,并回答下面的问题 43、44 和 45:

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
CREATE OR REPLACE empvu100(employee_id , first_name, job)
AS 
SELECT employee_id , last_name, job
FROM employees
WHERE department_id = 100
WITH READ ONLY; 

43.以上说法正确的是?

  1. 不会创建视图
  2. 在这个视图上执行 INSERT 操作会抛出 ORA 错误
  3. 在更新部门 100 中所有员工的行时,将抛出 ORA 错误
  4. 以上都不是

答案:B、C。使用 READ ONLY 选项创建的视图上不允许 DML 操作。

44.如上图所示的视图可以删除多少行?

  1. 视图的所有行
  2. 仅部门 100 的所有行
  3. 没有行
  4. 以上都不是

答案:C.不允许对使用 READ ONLY 选项创建的视图进行 DML 操作。

45.以下哪个语句会删除如上创建的视图?

  1. DROP READ ONLY VIEW empvu100;
  2. DROP NOFORCE empvu100;
  3. DROP VIEW empvu100;
  4. 以上都不是

答案:C.可以使用 DROP VIEW 命令删除只读视图。

46. 什么是删除视图是正确的?

  1. 来自基表的视图中的列也被删除
  2. 从数据库中删除视图的定义
  3. 删除视图对底层基表没有影响
  4. 以上都不是

答案:B、C。

47.用户应该具有以下哪些权限才能删除视图?

  1. 创建任何视图
  2. 创建视图
  3. 删除任何视图
  4. 下拉视图

答案:C。

48.关于序列,什么是正确的?

  1. 它生成整数
  2. 它是一个可共享的对象
  3. 可用于创建 PRIMARY KEY 值
  4. 上述所有的

答案:D.一个序列缓存在内存中时可以加快访问序列值的效率

49.关于一个序列,什么是真的?

  1. 它是在安装 Oracle 数据库时创建的
  2. 它由具有 CREATE SEQUENCE 系统权限的用户创建
  3. 不能被两个以上的用户共享
  4. 当数据库断开连接时它会自动删除。

答案:B、C。用户需要 CREATE SEQUENCE 系统权限才能在其自己的模式中创建不能被其他用户共享的序列。

50.下列关于序列的选项中,哪些是正确的?

  1. 通过一个表的序列生成的整数不能被其他表使用
  2. 序列只能递增
  3. 如果另一个序列生成相同的整数,则该序列无效
  4. 一个序列可以被许多表使用,它们可以递增或递减

答案:D。

考虑以下陈述并回答下列问题 51 至 59:

CREATE SEQUENCE dept_deptid_seq
INCREMENT BY 100
START WITH 101
MAXVALUE 9999
NOCACHE
NOCYCLE;

51.这个序列产生的第一个值是什么?

  1. 1
  2. 100
  3. 101
  4. 9999

答案:C . START WITH 子句建立序列的起始值。Oracle 11g 将每个序列从 1 开始,除非在 START WITH 子句中指定了另一个值。

52.这个序列生成的最后一个值是什么?

  1. 0
  2. 100
  3. 101
  4. 9999

答案:D . MINVALUE 和 MAXVALUE 子句确定序列的最小值或最大值。

53.这个序列产生的第二个值是什么?

  1. 102
  2. 100
  3. 99
  4. 9999

答案: A. INCREMENT BY 子句指定两个连续值之间的间隔。如果序列按正值递增,则序列生成的值按升序排列。但是,如果指定了负值,则序列生成的值按降序排列。如果在创建序列时不包含 INCREMENT BY 子句,则使用默认设置,即为每个生成的整数将序列增加 1。

54.这个序列达到最大整数9999后的下一个值是什么?

  1. 101
  2. 没有价值
  3. 它会抛出一个 ORA 错误
  4. 以上都不是

答案:B . CYCLE 和 NOCYCLE 选项决定了 Oracle 11g 是否应该在达到最小值或最大值后开始重新发布序列中的值。

55.Oracle会根据上面给出的顺序在内存中预分配多少个值?

  1. 20
  2. 0
  3. 100
  4. 9999

答案:A。

56.您执行以下查询:

SELECT dept_depid_seq.NEXTVAL from dual; 


假设序列生成的最后一个值是 200,这个查询的结果是什么?

  1. 200
  2. 101
  3. 9999
  4. 201

答案:D . NEXTVAL 伪列将生成序列的下一个唯一整数。

57.您执行以下查询:

SELECT dept_depid_seq.CURRVAL from dual; 


假设序列生成的最后一个值是 200,这个查询的结果是什么?

  1. 200
  2. 101
  3. 9999
  4. 201

答案: A. CURRVAL 伪列将生成序列已经生成的当前唯一整数。

58.假设您需要将此序列的起始值更改为 1000。以下哪些语句会有所帮助?

  1. ALTER dept_deptid_seq
    INCREMENT BY 100
    START WITH 1000
    MAXVALUE 9999
    NOCACHE
    NOCYCLE; 
  2. 必须删除并重新创建序列才能从 1000 开始序列。
  3. ALTER SEQUENCE dept_deptid_seq
    START WITH 101
  4. ALTER SEQUENCE dept_deptid_seq
    INCREMENT BY 100
    START WITH 101
    CYCLE;

答案:B.序列的起始编号不能修改。Oracle 引发异常“ORA-02283:无法更改起始序列号”。

59.假设上述顺序更改如下:

ALTER SEQUENCE dept_deptid_seq
INCREMENT BY 100
START WITH 101
MAXVALUE 99
NOCACHE
NOCYCLE; 

这种改变的结果是什么?

  1. ORA错误
  2. 更改后的序列的最大值现在为 99
  3. A 和 B 都不行
  4. 以上都不是

答案: A.改变序列时,MAXVALUE 不能小于 START WITH 值。

60.什么时候可以在Sequences中使用CYCLE选项?

  1. 如果我们想更快地清除旧行
  2. 如果我们不想使用序列来生成 PRIMARY KEY 值
  3. A 和 B
  4. 以上都不是

答案: C。CYCLE 和 NOCYCLE 选项决定了 Oracle 11g 是否应该在达到最小值或最大值后开始重新发布序列中的值。如果指定了 CYCLE 选项并且 Oracle 11g 达到升序序列的最大值或降序序列的最小值,则 CYCLE 选项将再次启动数字循环。

61. NEXTVAL 伪列的正确之处是什么?

  1. 它重新生成序列的 CURRVAL
  2. 它返回下一个可用的序列值
  3. 它可以返回重复值
  4. 它为不同的用户生成相同的值

答案:B . 伪列 NEXTVAL (NEXT VALUE) 用于实际生成序列值。换句话说,它调用序列对象并请求序列中下一个数字的值。生成值后,将其存储在 CURRVAL (CURRENT VALUE) 伪列中,以便您可以再次引用它。

62. CURRVAL 伪列正确的是什么?

  1. 对于序列,可以在 NEXTVAL 之前使用 CURRVAL
  2. CURRVAL 给出序列的当前值
  3. CURRVAL 可以给出重复值
  4. 以上都不是

答案:B。

63. NEXTVAL 和 CURRVAL 什么时候可以使用?

  1. INSERT 语句的 SET 子句
  2. UPDATE 语句的 VALUES 子句
  3. 不属于子查询的 SELECT 语句的 SELECT 列表
  4. INSERT 语句的 SELECT 列表

答案:C、D。该序列可用于 SELECT 查询、PL/SQL 游标或 IAS (INSERT-AS-SELECT) 直接操作。

64. NEXTVAL 和 CURRVAL 什么时候不能用?

  1. 视图的 SELECT 列表
  2. 带有 DISTINCT 关键字的 SELECT 语句
  3. SELECT、DELETE 或 UPDATE 语句中的子查询
  4. 上述所有的

答案:D。

考虑给定的陈述并回答下列问题 65 和 66:

CREATE TABLE employees 
(employee_id  NUMBER(4) DEFAULT emp_empid_seq.CURRVAL,
 department_id NUMBER(4)); 

65.这个声明的结果是什么?(假设 emp_empid_seq 是用于生成员工 ID 值的序列)

  1. 将创建表
  2. Department_id 列将包含为员工 ID 生成的序列中的值
  3. Department_id 列将有一个 DEFAULT 值
  4. ORA错误

答案:D.不能在列定义的 DEFAULT 子句中指定伪列。

66.如果将 CURRVAL 替换为 NEXTVAL,该语句的结果是什么?(假设生成 emp_empid_seq 来生成员工 ID 值)

  1. 将创建表
  2. Department_id 列将包含为员工 ID 生成的序列中的值
  3. Department_id 列将有一个 DEFAULT 值
  4. ORA错误

答案:D.不能在列定义的 DEFAULT 子句中指定伪列。

检查给出表部门和位置的结构的给定展览。回答下列问题 67 和 68:

SQL> DESC departments
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 DEPARTMENT_ID		 NOT NULL NUMBER(4)
 DEPARTMENT_NAME	 NOT NULL VARCHAR2(30)
 MANAGER_ID			  NUMBER(6)
 LOCATION_ID			  NUMBER(4)
SQL> desc locations
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 LOCATION_ID		 NOT NULL NUMBER(4)
 STREET_ADDRESS 		  VARCHAR2(40)
 POSTAL_CODE			  VARCHAR2(12)
 CITY			 NOT NULL VARCHAR2(30)
 STATE_PROVINCE 		  VARCHAR2(25)
 COUNTRY_ID			  CHAR(2)

67.您需要在位置 ID 1000 中插入一个名为“HR”的新部门。以下哪个语句会给出您需要的结果?

  1. INSERT INTO departments (dept_id, dept_name, location_id)
    VALUES (dept_deptid_seq.NEXTVAL, 'HR', 1000); 
  2. INSERT INTO departments (dept_id, dept_name, location_id)
    VALUES (dept_deptid_seq.NEXTVAL, "HR", 1000); 
  3. INSERT INTO departments (dept_id, dept_name, location_id)
    VALUES (dept_deptid_seq.CURRVAL, 'HR', 1000); 
  4. 以上都不是

答案:A . 选项 C 将导致“违反唯一约束”,因为它将尝试插入 DEPARTMENTS 表中存在的部门 ID 的当前值。

68.假设您在插入值之前执行以下查询,如问题 67 中的选项 A 所示。查询的结果是什么?

SELECT dept_deptid_seq.CURRVAL FROM DUAL; 
  1. ORA错误
  2. 它将给出序列的当前值
  3. A 和 B 都不行
  4. 以上都不是

答案:B.当用户登录到 Oracle 11g 时,CURRVAL 伪列中最初没有存储任何值;当前值为 NULL。在发出 NEXTVAL 调用以生成序列值后,CURRVAL 会存储该值,直到生成下一个值。CURRVAL 仅包含最后生成的值。

69.一个序列的值怎么会出现差距?

  1. 发生回滚时
  2. 系统崩溃
  3. 一个序列在另一个表中使用
  4. 上述所有的

答案:D。

70.关于缓存序列值的说法是什么?

  1. Oracle 中无法缓存序列值
  2. 当达到序列的最大限制时填充缓存
  3. 当序列被引用时,缓存第一次开始
  4. 以上都不是

答案:C。如果在创建序列时指定了 NOCACHE 选项,则在收到请求时会生成每个编号。但是,如果组织的事务在整个会话中需要大量序列号,则可以使用 CACHE 选项让 Oracle 11g 提前生成一组值并将它们存储在服务器的内存中。然后,当用户请求序列值时,将分配下一个可用值——Oracle 11g 无需生成该编号。另一方面,如果未指定 CACHE 选项,Oracle 11g 将采用默认选项 CACHE 20 并自动在内存中存储 20 个连续值供用户访问。

71.在插入了五个员工详细信息的事务之后,对序列 EMP_EMPID_SEQ 执行以下查询。

Select emp_empID_seq.CURRVAL from dual; 

假设员工事务回滚。上述查询的结果是什么?

  1. 员工事务开始时的序列值
  2. 无效的
  3. 员工事务结束时的序列值
  4. 以上都不是

答案:C.序列值不受提交或回滚的影响。如果使用序列生成器的事务回滚,则序列值被浪费并且无法恢复。

72.修改序列需要以下哪些权限?

  1. 创建或替换权限
  2. 序列的 ALTER 权限
  3. ALTER TABLE 权限
  4. 更新权限

答案:B.要更改序列,该序列必须在您自己的模式中,或者您必须对该序列具有 ALTER 对象权限,或者您必须具有 ALTER ANY SEQUENCE 系统权限。

73.当一个序列被改变时会发生什么?

  1. 序列已经生成的现有整数也被改变
  2. 只有未来的整数会受到影响
  3. 序列停止缓存未来的整数
  4. 以上都不是

答案:B.通过使用 ALTER SEQUENCE 命令,任何更改仅应用于修改后生成的值。

74.假设您需要删除一个序列。以下哪个命令会有所帮助?

  1. ALTER SEQUENCE sequence_name START WITH NULL;
  2. DROP sequence_name;
  3. DROP SEQUENCE sequence_name;
  4. 以上都不是

答案:C . DROP 命令用于删除一个序列

75.以下哪些特权将允许您删除序列?(选择最合适的答案)

  1. 改变序列
  2. 更改表
  3. 丢弃序列
  4. 删除任何序列

答案:D.要删除序列,该序列必须在您自己的模式中,或者您必须具有 DROP ANY SEQUENCE 系统权限。

76.关于索引,什么是正确的?

  1. 索引只能手动创建
  2. 索引仅自动创建
  3. A 和 B
  4. 以上都不是

答案:D.索引可以手动创建,也可以在某些操作后自动创建,例如创建主键或取消约束。

77. 索引使用以下哪项来快速定位数据?

  1. 行号
  2. 行号
  3. 顺序
  4. 以上都不是

答案:B . Oracle 11g 索引是一个数据库对象,用于存储列值和匹配表行的 ROWID 的映射。ROWID 是表行的物理地址。

78.当表的某一列没有索引时会发生什么?

  1. 数据快速定位
  2. 有全表扫描
  3. 无法创建表
  4. 表不能改变

答案:B。

79.关于指数,下列哪项是正确的?

  1. 索引减少磁盘 I/O
  2. 索引快速定位数据
  3. 索引在逻辑上和物理上独立于它们索引的表
  4. 上述所有的

答案:D。

80.如果索引被删除会发生什么?

  1. 创建索引的列也被删除
  2. 创建索引的表也被删除
  3. 索引一旦创建就不能删除
  4. 由于索引是逻辑上和物理上独立的对象,它们可以被删除而不影响其他对象

答案:D。索引是物理存储在模式中的对象。删除索引不会影响其他对象。

81.删除表时会发生什么?

  1. 索引仍然保留,因为它们是逻辑上独立的对象
  2. 表中的索引也被删除
  3. A 和 B 都不行
  4. 以上都不是

答案:B。

82.索引是如何自动创建的?

  1. 当我们创建一个表
  2. 当表被改变时
  3. 在表的列(或列组)上定义 PRIMARY KEY 时
  4. 当表定义中定义了 UNIQUE KEY 约束时

答案:C、D。

83.下列哪些对象可以创建同义词?

  1. 仅限表和视图
  2. 表、视图和序列
  3. 存储过程、函数或包
  4. 代名词

答案:B、C、D。您为其创建同义词的模式对象可以是以下类型:表或对象表、视图或对象视图、序列、存储过程、函数或包、物化视图、Java 类架构对象,用户定义的对象类型,同义词

84. 您可以使用以下哪项来引用另一个用户拥有的表?

  1. 指数
  2. 桌子
  3. 同义词
  4. 序列

答案:C。同义词是数据库对象的替代名称或别名。

85.以下哪项是非唯一索引的示例?

  1. 首要的关键
  2. 唯一键
  3. 外键
  4. 以上都不是

答案:C。

86.以下哪个是索引的主要和基本类型?

  1. 位图
  2. B树
  3. 独特
  4. 非唯一

答案:A,B。B树(平衡树)索引是 Oracle 中最常用的索引。您可以使用基本的 CREATE INDEX 语句创建这种类型的索引。位图索引的结构和用途与 B 树索引不同。此索引可用于改进对低选择性(低基数或少量不同值)的列的查询。

87.您需要通过在 EMPLOYEES 表的 FIRST_NAME 上创建索引来加速查询。您可以使用以下哪些语句?(假设表结构如图)

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
  1. CREATE INDEX emp_first_name_idx 
    ON employees (first_name); 
  2. CREATE INDEX emp_first_name_idx 
    ON employees first_name; 
  3. ALTER INDEX emp_first_name_idx 
    ON employees (first_name); 
  4. 以上都不是

答案:A。

88. UNIQUE 关键字在创建索引时有什么作用?

  1. 它指定创建索引的列的值必须是唯一的
  2. 创建索引时不能使用 UNIQUE 关键字
  3. 指定创建的索引只能被一张表使用
  4. 以上都不是

答案: A.当在列上定义 PRIMARY KEY 或 UNIQUE 约束时,通常会自动创建唯一索引。也可以通过在 CREATE INDEX 语句中包含 UNIQUE 关键字来显式创建唯一索引。

89.在创建索引时指定关键字BITMAP会发生什么?

  1. 它为每个不同的键创建带有位图的索引。
  2. 它不会分别在每一行上创建索引
  3. A 和 B
  4. 以上都不是

答案:C。

90.您编写的查询预计将检索不到 2% 到 4% 的行。可以对相关表应用以下哪项来实现此类查询的查询性能?(选择最佳答案)

  1. 索引
  2. UNION 集合运算符
  3. 减号设置运算符
  4. 以上都不是

答: A.索引是实现查询性能的最佳方式。使用索引扫描可以减少和简化繁重的 IO 操作。

91.索引在什么场景下有用?

  1. 如果表非常大
  2. 如果一列的值较少
  3. 如果一列包含大量 NULL 值
  4. 如果一列的值范围很广

答案:C、D。

92.EMPLOYEES 表经常更新。什么时候可以在这个表上创建索引?(选择最合适的答案)

  1. 如果表更新频繁,则不应创建索引
  2. 索引应该在创建表的时候创建
  3. A 和 B 都不行
  4. 以上都不是

答: A.对有索引的表进行频繁或批量的 DML 操作会增加维护索引段的开销,这可能会影响 DML 操作的性能。

93.考虑下面的问题并回答下面的问题。假设 EMPLOYEES 表的 EMPLOYEE_ID 、 DEPARTMENT_ID 和 FIRST_NAME 列被索引。(假设表结构如给定)

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
SELECT first_name, last_name 
FROM employees 
WHERE comm IS NULL; 

如果表 EMPLOYEES 中有 100 万行,现有索引是否会在这种情况下有所帮助?

  1. 是的
  2. 它可能有帮助
  3. 以上都不是

答案:B.当查询谓词不包含创建索引的列时,不使用索引。

94.以下哪项会删除索引?

  1. DELETE FROM index_name; 
  2. DROP INDEX index_name; 
  3. DROP INDEX;
  4. 以上都不是

答案:B.您必须具有 DROP ANY INDEX 权限才能删除索引。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁