创建其他模式对象问题
创建其他模式对象问题
1. 以下哪个数据库对象提供了用户和数据之间的抽象层?
- 桌子
- 行
- 观看次数
- 同义词
答案:C、D。视图和同义词本身不存储数据。视图是用于检索存储在基础数据库表中的数据的临时表或虚拟表。
2. 以下哪些数据库对象可以生成序列号?
- 同义词
- 观看次数
- 表
- 序列
答案:D。可以创建一个序列来生成一系列整数。序列生成的值可以存储在任何表中。使用 CREATE SEQUENCE 命令创建序列。
3. 关于视图,哪些是真的?
- 它们等于表
- 它们存储来自一张或多张表的数据
- 我们可以在简单视图上执行 SELECT 和其他 DML
- 视图与表共享相同的命名空间,因此表和视图不能具有相同的名称
答案:C、D。在包含组函数、GROUP BY 子句、ROWNUM 伪列或 DISTINCT 关键字的视图上不允许 DML 操作。
4. 为什么视图有用?(选择最合适的答案)
- 因为它们的名称比表格短
- 防止用户访问表的列
- 简化用户 SQL
- 上述所有的
答案:B、C。视图是用于检索存储在基础数据库表中的数据的临时表或虚拟表。每次使用视图时都必须执行视图查询。视图可用于简化查询或限制对敏感数据的访问。
5. 在以下哪种情况下,视图上的 DML 操作是不可能的?
- 视图包含 GROUP BY 子句
- 基表包含 NOT NULL 列但未在视图查询中选择
- 查看查询使用 ROWNUM 伪列
- 上述所有的
答案:D. DML 操作不允许对包含组函数、GROUP BY 子句、ROWNUM 伪列或 DISTINCT 关键字的视图进行。
6. 视图从哪里获取数据?
- 来自同一架构的表
- 来自不同模式的表
- A 和 B
- 以上都不是
答案: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;
- 0
- 1
- 2
- 4
答案:D。由于视图定义基于 EMPLOYEES 表中的四列,因此对包含所有列的视图的查询将仅显示这四列。
8. 除了以上4列之外,还需要获取部门名称。以下哪个查询会为您提供所需的结果?
-
SELECT E.*, dept_name FROM departments D join emp_details E ON (E.department_id= D.dept_id);
-
SELECT hire_date, job, salary, dept_name FROM emp_details
- 这是不可能的视图不能连接到其他表
- 以上都不是
答案: A.一个视图可以在 SELECT 查询中与其他表或视图连接。
9. 除了视图中选择的 4 列之外,您还需要找到最高工资和部门名称。以下哪个查询会为您提供所需的结果?
-
Select dept_name, e.salary FROM departments D join emp_details E On (E.department_id= D.dept_id);
-
Select dept_name, max(salary) FROM departments D join emp_details E On (E.department_id= D.dept_id) Group by dept_name;
- 视图不能出现在使用组函数的查询中
-
Select dept_name, max(salary) FROM departments D join emp_details E On (E.department_id= D.dept_id);
答案:B。
10.关于同义词,下列哪项是正确的?
- PUBLIC 和 PRIVATE 同义词可以在同一个表中具有相同的名称
- DROP SYNONYM 将删除同义词
- DROP PUBLIC SYNONYM 只能由 SYSDBA 执行
- 以上都不是
答案:A、C。同义词可以是私有同义词,用户用来引用他们拥有的对象,或者是公共同义词,用户用来访问另一个用户的数据库对象。只有 SYSDBA 或具有 DBA 权限的用户才能创建公共同义词。
11. 关于创建视图,哪些是正确的?(选择最合适的答案)
- 只能从表创建视图
- 一个视图只能从一张表创建
- 可以从一个或多个表或视图创建视图
- 以上都不是
答案:C。包含表达式或函数或连接多个表的视图被视为复杂视图。一个复杂视图只能用于更新一个表。
12. 在自己的架构中创建视图需要以下哪些权限?
- CREATE TABLE 系统权限
- CREATE VIEW 系统权限
- ALTER VIEW 系统权限
- CREATE ANY VIEW 系统权限
答案:B.用户需要 CREATE VIEW 权限才能在其自己的架构中创建视图。
13. 在别人的模式中创建视图需要以下哪些权限?
- 创建任何视图
- 创建视图
- A 和 B
- 以上都不是
答案: A.用户需要 CREATE ANY VIEW 权限才能在其他用户的架构中创建视图。
14.对象视图或关系视图支持以下哪些内容?
- LOB
- 对象类型
- REF 数据类型
- 上述所有的
答案:D。
15. 以下哪些是不同类型的视图?
- 简单视图
- 复杂视图
- A 和 B
- 以上都不是
答案:C.简单视图和复杂视图是两种类型的视图。简单视图基于仅引用一个表且不包括组函数、表达式或 GROUP BY 子句的子查询。复杂视图基于从一个或多个表中检索或派生数据的子查询,并且可以包含函数或分组数据。
16. 什么是简单视图?
- 大多数时候可以针对简单视图发出 DML 语句
- 只有一个源基表
- 不使用组函数
- 上述所有的
答案:D.简单视图基于仅引用一个表且不包括组函数、表达式或 GROUP BY 子句的子查询。
17.什么是复杂的视图是真的?
- 不能针对复杂视图发出 DML 语句
- 包含多个基表
- 无法执行聚合
- 上述所有的
答案:D.复杂视图基于从一个或多个表中检索或派生数据的子查询,并且可以包含函数或分组数据。
18.隐式删除一个视图(如果存在)并创建一个同名的新视图应该使用哪个关键字组合?
- 创建视图
- 替换视图
- 创建或替换视图
- 以上都不是
答案:C . OR REPLACE 选项通知 Oracle 11g 可能已经存在同名的视图;如果是,则视图的先前版本应替换为新命令中定义的版本。
19.视图如何存储在数据字典中?
- 作为 WHERE 子句
- 作为 CREATE 语句
- 作为 UPDATE 语句
- 作为 SELECT 语句
答案:D。
20.以下哪些可以包含单行函数?
- 内联视图
- 简单视图
- 复杂视图
- 复合视图
答案:A、B。单行函数可以在 Inline 和 Simple 视图中使用。
21.以下哪项可以包含一组数据?
- 复合视图
- 简单视图
- 复杂视图
- 以上都不是
答案:C.复杂视图可以在查询中使用分组功能。
22.关于视图,下列哪项是正确的?
- 子查询可以嵌入到 CREATE VIEW 语句中
- CREATE VIEW 语句中使用的子查询必须具有简单的 SELECT 语法
- 在 CREATE VIEW 语句中使用时,不能在子查询中使用 WHERE 子句
- 以上都不是
答: A.视图定义可以使用子查询。
23.即使基表不存在,以下哪个可以创建视图?
- 非军事力量
- 力量
- 或更换
- 创建视图
答案:B.如果您在 CREATE 子句中包含 FORCE 关键字,Oracle 11g 会创建视图,尽管没有任何引用表。NOFORCE 是 CREATE VIEW 命令的默认模式,这意味着所有表和列都必须有效,否则不会创建视图。
24.以下哪个命令可以保证视图不能进行DML操作?
- 非军事力量
- 力量
- 只读
- 或更换
答案:C . WITH READ ONLY 选项阻止在视图上执行任何 DML 操作。当用户只能查询数据而不对其进行任何更改很重要时,通常会使用此选项。
25.CREATE VIEW 语句中的 NOFORCE 选项正确的是什么?
- 即使基表不存在,它也会创建一个视图。
- 仅当基表存在时才创建视图。
- 这是创建视图时的默认设置。
- 以上都不是
答案:B、 C。NOFORCE 是 CREATE VIEW 命令的默认模式,这意味着所有表和列都必须有效,否则不会创建视图。
26. OR REPLACE 关键字正确的是什么?
- 使用此关键字创建视图时,对象权限将丢失
- 无需重新授予先前授予的对象权限
- A 和 B 都不行
- 以上都不是
答案: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;
- 视图必须由基表中定义的原始列名访问
- 视图必须通过视图查询中给出的别名访问
- 视图是一个简单的视图
- 以上都不是
答案: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;
- 别名数量与编号匹配不是强制性的。子查询中的表达式
- 否是强制性的。列出的别名必须与编号匹配。在子查询中选择的表达式
- 创建视图时必须提供别名
- 以上都不是
答案: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;
上面查询中的列别名是什么?
- 列别名作为子查询中的列以随机顺序列出
- 列别名以与子查询中的列相同的顺序列出
- 使用 CREATE OR REPLACE 关键字时,列别名是必需的
- 当我们使用 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.关于上面给出的陈述,可以说些什么?
- 已为视图指定了其他名称
- 如果任何列派生自函数或表达式,则必须提供替代名称
- A 和 B
- 以上都不是
答案: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;
- 这将与原始声明没有什么不同
- 它将成功执行,给出相同的结果,但别名发生了变化。
- 它会抛出一个 ORA 错误
- 以上都不是
答案:B。列别名的顺序并不重要,因为它们不携带任何行为属性。
32.确定以下 DELETE 语句的输出。
DELETE FROM dept_sum_vu;
- 它将删除视图
- 它将从视图中删除所有行,但视图的结构将保持不变
- 它会抛出一个 ORA 错误
- 以上都不是
答案: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;
修改后会有什么影响?
- 可以更新视图以更新 EMPLOYEES 和 DEPARTMENTS 表中的值
- EMPLOYEES 和 DEPARTMENTS 表中的数据无法通过视图删除
- EMPLOYEES 和 DEPARTMENTS 表中的数据可以通过视图插入
- 可以通过视图向 EMPLOYEES 表添加一列
答案:B.不能在复杂视图上执行 DML 操作。DEPT_SUM_VU 是一个复杂的视图,因为它连接了多个表。视图上无法进行 DDL 操作。
34.假设您在上述问题中使用的视图查询中选择了 DISTINCT 部门和员工工资。如果您尝试从视图 dept_sum_vu 中删除行,结果会怎样?
- 行将被删除,没有任何错误
- 只有前 10 行会被删除
- 无法删除行。
- 以上都不是
答案:C。视图 DEPT_SUM_VU 仍然是一个复杂的视图,因为它使用了 DISTINCT 关键字。因此,无法对其进行 DML 操作。
35.什么时候可以删除视图中的行?
- 无法通过视图删除行
- 它应该是一个简单的视图
- 它应该是一个复杂的视图
- 以上都不是
答案:B. DML 操作只能在简单视图上进行。
36.视图中的数据什么时候不能修改?
- 当有组表达式时
- 当有 GROUP BY 子句时
- 在视图查询中使用 ROWNUM 时
- 上述所有的
答案: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;
- 安迪问题——
CREATE SYNONYM EMP_JOBS for JOB_HISTORY
- 人力资源问题——
CREATE SYNONYM EMP_JOBS for andy.JOB_HISTORY
- 人力资源问题——
CREATE PUBLIC SYNONYM EMP_JOBS FOR andy.JOB_HISTORY
- 以上都不是
答案:B.只有 SYSDBA 或具有 DBA 权限的用户才能创建公共同义词。
38.哪个关键字可以保证对视图执行的DML操作留在视图的域中?
- 或更换
- 创建
- 带检查选项
- 以上都不是
答案: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.上面的语句有什么作用?
- 它将允许用户对所有部门执行 INSERT 或 UPDATE
- 它将允许用户执行 INSERT 或 UPDATE 具有部门 100 的任何行
- 用户可以更新员工表中的任何行
- 用户可以在员工表中不受任何限制地插入行
答案:B . WITH CHECK OPTION 约束确保对视图执行的任何 DML 操作(例如添加行或更改数据)不会阻止视图访问该行,因为它不再满足 WHERE 子句中的条件。如果在 department_id 不是 100 的任何行上执行 INSERT 或 UPDATE,将抛出 ORA 错误。
40.假设您触发一个 UPDATE 语句,如下所示:
UPDATE empvu100 Set department_id = 200 Where employee_id = 121;
这个声明的结果是什么?
- 没有行更新
- 抛出 ORA 错误
- A 和 B
- 以上都不是
答案:C。如果带有 CHECK OPTION 的视图被更新并且新记录的值违反了视图的范围,则会引发 ORA 异常“ORA-01402:带有检查选项的视图违反”。
41.WITH CHECK CONSTRAINT 的正确之处是什么?
- 通过视图执行的 INSERT 或 UPDATE 无法创建视图无法选择的行
- 只有通过视图执行的 INSERT 不能创建视图无法选择的行
- 只有通过视图执行的 UPDATE 不能创建视图无法选择的行
- 以上都不是
答案:A。
42.如何防止View上的DML操作?
- 通过定义 WITH CHECK OPTION 约束
- 通过定义 WITH READ ONLY 选项
- A 和 B 都不行
- 以上都不是
答案: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.以上说法正确的是?
- 不会创建视图
- 在这个视图上执行 INSERT 操作会抛出 ORA 错误
- 在更新部门 100 中所有员工的行时,将抛出 ORA 错误
- 以上都不是
答案:B、C。使用 READ ONLY 选项创建的视图上不允许 DML 操作。
44.如上图所示的视图可以删除多少行?
- 视图的所有行
- 仅部门 100 的所有行
- 没有行
- 以上都不是
答案:C.不允许对使用 READ ONLY 选项创建的视图进行 DML 操作。
45.以下哪个语句会删除如上创建的视图?
-
DROP READ ONLY VIEW empvu100;
-
DROP NOFORCE empvu100;
-
DROP VIEW empvu100;
- 以上都不是
答案:C.可以使用 DROP VIEW 命令删除只读视图。
46. 什么是删除视图是正确的?
- 来自基表的视图中的列也被删除
- 从数据库中删除视图的定义
- 删除视图对底层基表没有影响
- 以上都不是
答案:B、C。
47.用户应该具有以下哪些权限才能删除视图?
- 创建任何视图
- 创建视图
- 删除任何视图
- 下拉视图
答案:C。
48.关于序列,什么是正确的?
- 它生成整数
- 它是一个可共享的对象
- 可用于创建 PRIMARY KEY 值
- 上述所有的
答案:D.一个序列缓存在内存中时可以加快访问序列值的效率
49.关于一个序列,什么是真的?
- 它是在安装 Oracle 数据库时创建的
- 它由具有 CREATE SEQUENCE 系统权限的用户创建
- 不能被两个以上的用户共享
- 当数据库断开连接时它会自动删除。
答案:B、C。用户需要 CREATE SEQUENCE 系统权限才能在其自己的模式中创建不能被其他用户共享的序列。
50.下列关于序列的选项中,哪些是正确的?
- 通过一个表的序列生成的整数不能被其他表使用
- 序列只能递增
- 如果另一个序列生成相同的整数,则该序列无效
- 一个序列可以被许多表使用,它们可以递增或递减
答案:D。
考虑以下陈述并回答下列问题 51 至 59:
CREATE SEQUENCE dept_deptid_seq INCREMENT BY 100 START WITH 101 MAXVALUE 9999 NOCACHE NOCYCLE;
51.这个序列产生的第一个值是什么?
- 1
- 100
- 101
- 9999
答案:C . START WITH 子句建立序列的起始值。Oracle 11g 将每个序列从 1 开始,除非在 START WITH 子句中指定了另一个值。
52.这个序列生成的最后一个值是什么?
- 0
- 100
- 101
- 9999
答案:D . MINVALUE 和 MAXVALUE 子句确定序列的最小值或最大值。
53.这个序列产生的第二个值是什么?
- 102
- 100
- 99
- 9999
答案: A. INCREMENT BY 子句指定两个连续值之间的间隔。如果序列按正值递增,则序列生成的值按升序排列。但是,如果指定了负值,则序列生成的值按降序排列。如果在创建序列时不包含 INCREMENT BY 子句,则使用默认设置,即为每个生成的整数将序列增加 1。
54.这个序列达到最大整数9999后的下一个值是什么?
- 101
- 没有价值
- 它会抛出一个 ORA 错误
- 以上都不是
答案:B . CYCLE 和 NOCYCLE 选项决定了 Oracle 11g 是否应该在达到最小值或最大值后开始重新发布序列中的值。
55.Oracle会根据上面给出的顺序在内存中预分配多少个值?
- 20
- 0
- 100
- 9999
答案:A。
56.您执行以下查询:
SELECT dept_depid_seq.NEXTVAL from dual;
假设序列生成的最后一个值是 200,这个查询的结果是什么?
- 200
- 101
- 9999
- 201
答案:D . NEXTVAL 伪列将生成序列的下一个唯一整数。
57.您执行以下查询:
SELECT dept_depid_seq.CURRVAL from dual;
假设序列生成的最后一个值是 200,这个查询的结果是什么?
- 200
- 101
- 9999
- 201
答案: A. CURRVAL 伪列将生成序列已经生成的当前唯一整数。
58.假设您需要将此序列的起始值更改为 1000。以下哪些语句会有所帮助?
-
ALTER dept_deptid_seq INCREMENT BY 100 START WITH 1000 MAXVALUE 9999 NOCACHE NOCYCLE;
- 必须删除并重新创建序列才能从 1000 开始序列。
-
ALTER SEQUENCE dept_deptid_seq START WITH 101
-
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;
这种改变的结果是什么?
- ORA错误
- 更改后的序列的最大值现在为 99
- A 和 B 都不行
- 以上都不是
答案: A.改变序列时,MAXVALUE 不能小于 START WITH 值。
60.什么时候可以在Sequences中使用CYCLE选项?
- 如果我们想更快地清除旧行
- 如果我们不想使用序列来生成 PRIMARY KEY 值
- A 和 B
- 以上都不是
答案: C。CYCLE 和 NOCYCLE 选项决定了 Oracle 11g 是否应该在达到最小值或最大值后开始重新发布序列中的值。如果指定了 CYCLE 选项并且 Oracle 11g 达到升序序列的最大值或降序序列的最小值,则 CYCLE 选项将再次启动数字循环。
61. NEXTVAL 伪列的正确之处是什么?
- 它重新生成序列的 CURRVAL
- 它返回下一个可用的序列值
- 它可以返回重复值
- 它为不同的用户生成相同的值
答案:B . 伪列 NEXTVAL (NEXT VALUE) 用于实际生成序列值。换句话说,它调用序列对象并请求序列中下一个数字的值。生成值后,将其存储在 CURRVAL (CURRENT VALUE) 伪列中,以便您可以再次引用它。
62. CURRVAL 伪列正确的是什么?
- 对于序列,可以在 NEXTVAL 之前使用 CURRVAL
- CURRVAL 给出序列的当前值
- CURRVAL 可以给出重复值
- 以上都不是
答案:B。
63. NEXTVAL 和 CURRVAL 什么时候可以使用?
- INSERT 语句的 SET 子句
- UPDATE 语句的 VALUES 子句
- 不属于子查询的 SELECT 语句的 SELECT 列表
- INSERT 语句的 SELECT 列表
答案:C、D。该序列可用于 SELECT 查询、PL/SQL 游标或 IAS (INSERT-AS-SELECT) 直接操作。
64. NEXTVAL 和 CURRVAL 什么时候不能用?
- 视图的 SELECT 列表
- 带有 DISTINCT 关键字的 SELECT 语句
- SELECT、DELETE 或 UPDATE 语句中的子查询
- 上述所有的
答案:D。
考虑给定的陈述并回答下列问题 65 和 66:
CREATE TABLE employees (employee_id NUMBER(4) DEFAULT emp_empid_seq.CURRVAL, department_id NUMBER(4));
65.这个声明的结果是什么?(假设 emp_empid_seq 是用于生成员工 ID 值的序列)
- 将创建表
- Department_id 列将包含为员工 ID 生成的序列中的值
- Department_id 列将有一个 DEFAULT 值
- ORA错误
答案:D.不能在列定义的 DEFAULT 子句中指定伪列。
66.如果将 CURRVAL 替换为 NEXTVAL,该语句的结果是什么?(假设生成 emp_empid_seq 来生成员工 ID 值)
- 将创建表
- Department_id 列将包含为员工 ID 生成的序列中的值
- Department_id 列将有一个 DEFAULT 值
- 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”的新部门。以下哪个语句会给出您需要的结果?
-
INSERT INTO departments (dept_id, dept_name, location_id) VALUES (dept_deptid_seq.NEXTVAL, 'HR', 1000);
-
INSERT INTO departments (dept_id, dept_name, location_id) VALUES (dept_deptid_seq.NEXTVAL, "HR", 1000);
-
INSERT INTO departments (dept_id, dept_name, location_id) VALUES (dept_deptid_seq.CURRVAL, 'HR', 1000);
- 以上都不是
答案:A . 选项 C 将导致“违反唯一约束”,因为它将尝试插入 DEPARTMENTS 表中存在的部门 ID 的当前值。
68.假设您在插入值之前执行以下查询,如问题 67 中的选项 A 所示。查询的结果是什么?
SELECT dept_deptid_seq.CURRVAL FROM DUAL;
- ORA错误
- 它将给出序列的当前值
- A 和 B 都不行
- 以上都不是
答案:B.当用户登录到 Oracle 11g 时,CURRVAL 伪列中最初没有存储任何值;当前值为 NULL。在发出 NEXTVAL 调用以生成序列值后,CURRVAL 会存储该值,直到生成下一个值。CURRVAL 仅包含最后生成的值。
69.一个序列的值怎么会出现差距?
- 发生回滚时
- 系统崩溃
- 一个序列在另一个表中使用
- 上述所有的
答案:D。
70.关于缓存序列值的说法是什么?
- Oracle 中无法缓存序列值
- 当达到序列的最大限制时填充缓存
- 当序列被引用时,缓存第一次开始
- 以上都不是
答案:C。如果在创建序列时指定了 NOCACHE 选项,则在收到请求时会生成每个编号。但是,如果组织的事务在整个会话中需要大量序列号,则可以使用 CACHE 选项让 Oracle 11g 提前生成一组值并将它们存储在服务器的内存中。然后,当用户请求序列值时,将分配下一个可用值——Oracle 11g 无需生成该编号。另一方面,如果未指定 CACHE 选项,Oracle 11g 将采用默认选项 CACHE 20 并自动在内存中存储 20 个连续值供用户访问。
71.在插入了五个员工详细信息的事务之后,对序列 EMP_EMPID_SEQ 执行以下查询。
Select emp_empID_seq.CURRVAL from dual;
假设员工事务回滚。上述查询的结果是什么?
- 员工事务开始时的序列值
- 无效的
- 员工事务结束时的序列值
- 以上都不是
答案:C.序列值不受提交或回滚的影响。如果使用序列生成器的事务回滚,则序列值被浪费并且无法恢复。
72.修改序列需要以下哪些权限?
- 创建或替换权限
- 序列的 ALTER 权限
- ALTER TABLE 权限
- 更新权限
答案:B.要更改序列,该序列必须在您自己的模式中,或者您必须对该序列具有 ALTER 对象权限,或者您必须具有 ALTER ANY SEQUENCE 系统权限。
73.当一个序列被改变时会发生什么?
- 序列已经生成的现有整数也被改变
- 只有未来的整数会受到影响
- 序列停止缓存未来的整数
- 以上都不是
答案:B.通过使用 ALTER SEQUENCE 命令,任何更改仅应用于修改后生成的值。
74.假设您需要删除一个序列。以下哪个命令会有所帮助?
-
ALTER SEQUENCE sequence_name START WITH NULL;
-
DROP sequence_name;
-
DROP SEQUENCE sequence_name;
- 以上都不是
答案:C . DROP 命令用于删除一个序列
75.以下哪些特权将允许您删除序列?(选择最合适的答案)
- 改变序列
- 更改表
- 丢弃序列
- 删除任何序列
答案:D.要删除序列,该序列必须在您自己的模式中,或者您必须具有 DROP ANY SEQUENCE 系统权限。
76.关于索引,什么是正确的?
- 索引只能手动创建
- 索引仅自动创建
- A 和 B
- 以上都不是
答案:D.索引可以手动创建,也可以在某些操作后自动创建,例如创建主键或取消约束。
77. 索引使用以下哪项来快速定位数据?
- 行号
- 行号
- 顺序
- 以上都不是
答案:B . Oracle 11g 索引是一个数据库对象,用于存储列值和匹配表行的 ROWID 的映射。ROWID 是表行的物理地址。
78.当表的某一列没有索引时会发生什么?
- 数据快速定位
- 有全表扫描
- 无法创建表
- 表不能改变
答案:B。
79.关于指数,下列哪项是正确的?
- 索引减少磁盘 I/O
- 索引快速定位数据
- 索引在逻辑上和物理上独立于它们索引的表
- 上述所有的
答案:D。
80.如果索引被删除会发生什么?
- 创建索引的列也被删除
- 创建索引的表也被删除
- 索引一旦创建就不能删除
- 由于索引是逻辑上和物理上独立的对象,它们可以被删除而不影响其他对象
答案:D。索引是物理存储在模式中的对象。删除索引不会影响其他对象。
81.删除表时会发生什么?
- 索引仍然保留,因为它们是逻辑上独立的对象
- 表中的索引也被删除
- A 和 B 都不行
- 以上都不是
答案:B。
82.索引是如何自动创建的?
- 当我们创建一个表
- 当表被改变时
- 在表的列(或列组)上定义 PRIMARY KEY 时
- 当表定义中定义了 UNIQUE KEY 约束时
答案:C、D。
83.下列哪些对象可以创建同义词?
- 仅限表和视图
- 表、视图和序列
- 存储过程、函数或包
- 代名词
答案:B、C、D。您为其创建同义词的模式对象可以是以下类型:表或对象表、视图或对象视图、序列、存储过程、函数或包、物化视图、Java 类架构对象,用户定义的对象类型,同义词
84. 您可以使用以下哪项来引用另一个用户拥有的表?
- 指数
- 桌子
- 同义词
- 序列
答案:C。同义词是数据库对象的替代名称或别名。
85.以下哪项是非唯一索引的示例?
- 首要的关键
- 唯一键
- 外键
- 以上都不是
答案:C。
86.以下哪个是索引的主要和基本类型?
- 位图
- B树
- 独特
- 非唯一
答案: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)
-
CREATE INDEX emp_first_name_idx ON employees (first_name);
-
CREATE INDEX emp_first_name_idx ON employees first_name;
-
ALTER INDEX emp_first_name_idx ON employees (first_name);
- 以上都不是
答案:A。
88. UNIQUE 关键字在创建索引时有什么作用?
- 它指定创建索引的列的值必须是唯一的
- 创建索引时不能使用 UNIQUE 关键字
- 指定创建的索引只能被一张表使用
- 以上都不是
答案: A.当在列上定义 PRIMARY KEY 或 UNIQUE 约束时,通常会自动创建唯一索引。也可以通过在 CREATE INDEX 语句中包含 UNIQUE 关键字来显式创建唯一索引。
89.在创建索引时指定关键字BITMAP会发生什么?
- 它为每个不同的键创建带有位图的索引。
- 它不会分别在每一行上创建索引
- A 和 B
- 以上都不是
答案:C。
90.您编写的查询预计将检索不到 2% 到 4% 的行。可以对相关表应用以下哪项来实现此类查询的查询性能?(选择最佳答案)
- 索引
- UNION 集合运算符
- 减号设置运算符
- 以上都不是
答: A.索引是实现查询性能的最佳方式。使用索引扫描可以减少和简化繁重的 IO 操作。
91.索引在什么场景下有用?
- 如果表非常大
- 如果一列的值较少
- 如果一列包含大量 NULL 值
- 如果一列的值范围很广
答案:C、D。
92.EMPLOYEES 表经常更新。什么时候可以在这个表上创建索引?(选择最合适的答案)
- 如果表更新频繁,则不应创建索引
- 索引应该在创建表的时候创建
- A 和 B 都不行
- 以上都不是
答: 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 万行,现有索引是否会在这种情况下有所帮助?
- 是的
- 不
- 它可能有帮助
- 以上都不是
答案:B.当查询谓词不包含创建索引的列时,不使用索引。
94.以下哪项会删除索引?
-
DELETE FROM index_name;
-
DROP INDEX index_name;
-
DROP INDEX;
- 以上都不是
答案:B.您必须具有 DROP ANY INDEX 权限才能删除索引。