处理数据问题
处理数据问题
1.ACID对于关系型数据库是什么意思?
- 准确性、一致性、隔离性、数据库
- 准确性、并发性、隔离性、持久性
- 原子性、一致性、隔离性、持久性
- 原子性、并发性、隔离性、持久性
答案:C。所有 Oracle 事务都符合数据库事务的基本属性,称为 ACID 属性。原子性表示事务的所有任务都已执行或不执行。没有部分交易。一致性意味着事务将数据库从一种一致状态转移到另一种一致状态。隔离意味着一个事务的影响在事务提交之前对其他事务是不可见的。持久性意味着已提交事务所做的更改是永久性的。事务完成后,数据库通过其恢复机制确保事务中的更改不会丢失。
2、DML这个词在Oracle SQL中代表什么?
- 耐久性管理语言
- 数据库管理语言
- 数据库操作语言
- 以上都不是
答案:C. DML 代表数据操作语言。
3. 以下哪些是 Oracle 数据库中的 DML 命令?
- 选择
- 通过…分组
- 相交
- 插入
答案:A、D。严格来说,SELECT 是 DML 命令,因为它是操作表中数据的强制性子句之一。
4.以下哪个 DML 命令可以被认为是单个语句中 INSERT 和 UPDATE 的混合?
- 相交
- 插入
- 选择
- 合并
答案:D. MERGE 可以在 Oracle 中的单个语句中执行 INSERT 和 UPDATE 操作。
5. MERGE 语句在 SQL 中可以执行哪些操作?
- 插入
- 删除
- 通过…分组
- 以上都不是
答案:A、B。在某些情况下,MERGE 也可以执行 DELETE 操作以及 INSERT 和 UPDATE。
6.以下哪个命令是DDL(数据定义语言)命令但经常与DML命令一起考虑?
- 删除
- 插入
- 截短
- 以上都不是
答案:C. TRUNCATE 是一个 DDL 命令。它无条件地从表中删除记录。它不是任何正在进行的事务的一部分,并且在执行 TRUNCATE 后会提交会话中未提交的事务。
7.以下哪个命令基本上是操作数据的?
- 减
- 更新
- 截短
- 上述所有的
答案:B、 C。UPDATE 是一个 DML 语句,用于修改表中的列值。TRUNCATE 通过无条件地从表中删除数据来操作数据。
8. 以下哪个命令用于用数据填充表行?
- 删除
- 插入
- 选择
- 更新
答案:B. INSERT 命令用于在表中插入行。
9. INSERT 语句的正确之处是什么?(选择最合适的答案)
- 它可以一次在一张表的一行中插入数据
- 它可以一次在一张表的多行中插入数据
- 可以一次在多张表的多行插入数据
- 上述所有的
答案: C。INSERT 语句能够一次在单个表中插入一行或一组行。
10.表中插入行的说法正确的是?
- 行可以随机插入
- 可以在表中插入任意数量的行而没有任何限制
- 通常,根据称为约束的某些规则将行插入表中
- 上述所有的
答案:C。约束是强加在列上的业务规则,以确保进入列的数据的行为。这些约束在 INSERT 过程中对数据进行验证。
11. Oracle SQL 中的 INSERT 语句正确的是什么?(选择最合适的答案)
- INSERT 语句可以覆盖放在表上的任何约束
- 如果已经在表上放置了约束,则不能在表上使用 INSERT 语句
- 只有在表上已经放置了约束时,才能在表上使用 INSERT 语句
- INSERT 语句永远不能插入违反约束的行。
答案:D。如果插入语句中包含的任何数据违反约束,Oracle 将引发异常。
考虑来自 EMPLOYEES 表的以下数据集及其结构,并回答问题 12、13 和 14:
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)
EMPLOYEE_ID FIRST_NAME JOB_ID ------------------- ------------------ -------- 5100 BRUCE CLERK 5101 JESSICA SALESMAN 5102 DEBBY SALESMAN
12. 检查 EMPLOYEES 表的结构。您发出以下命令:
INSERT INTO EMPLOYEES (employee_id , first_name , job_id) VALUES (5100, 'BRUCE', 'CLERK');
假设在 EMPLOYEE_ID 列上存在重复值检查约束,那么上述语句的结果是什么?
- 它将插入具有 5100 个 BRUCE CLERK 值的另一行
- 它将插入具有 51002 个 BRUCE CLERK 值的另一行
- 它将抛出“违反约束”的 ORA 错误
- 以上都不是
答案:C。由于表中已经存在值为“5100, BRUCE, CLERK”的行,因此无法使用相同数据集的insert语句。
13.您向上面显示的数据集发出以下命令:
INSERT INTO EMPLOYEES (employee_id , first_name , job_id) VALUES (51003,'BRUCE','CLERK');
这个语句的输出是什么?
- 它将插入一个包含 51003 个 BRUCE CLERK 值的新行
- 它会抛出一个 ORA 错误,因为不能有另一个 BRUCE 作为 CLERK
- 它将抛出“违反约束”的 ORA 错误
- 以上都不是
答案:A.由于对 FIRST_NAME 和 job_id 列没有限制,因此 INSERT 将正常工作而不会出现任何错误
14. 向上面显示的数据集发出以下命令:
INSERT INTO EMPLOYEES (employee_id , first_name , job_id ) VALUES (51003,'BRUCE', NULL);
这个语句的输出是什么?
- 它将插入一个包含 51003 个 BRUCE CLERK 值的新行
- 它会抛出一个 ORA 错误,因为不能有另一个 BRUCE 作为 CLERK
- 它将抛出“违反约束”的 ORA 错误
- 它将插入一个包含 51003 个 BRUCE NULL 值的新行
答案:D。由于列 FIRST_NAME 和 JOB_ID 上没有 NOT NULL 约束,因此将插入 NULL 值。
15. 关于在表中插入行,以下哪项可以说?
- 用户不能以交互方式插入行
- 可以使用替换变量编写查询,以便用户交互式插入行
- 当提示用户插入行时,插入不起作用并抛出 ORA 错误
- 以上都不是
答案:B . INSERT 语句可以使用替换变量来提示用户在运行时键入值。它提供了一种将数据插入表格的交互式方式
16.下列哪项可以用来在表格中插入行?
- 选择
- 插入
- 子查询
- 上述所有的
答案:D. INSERT 语句可以使用显式的 INSERT、INSERT-SELECT 或子查询方法将数据插入表中。
17. 以下哪一项是向表中插入行的常用技术?(选择最合理、最合适的答案)
- 使用 SELECT 子句
- 在 INSERT 子句中手动输入每个值
- 使用 SET 运算符
- 以上都不是
答案: A.使用 SELECT 子句是将行插入表中的最常用技术。它减少了手动键入每列值的工作量。
18.以下哪个命令用于更改表中已存在的行?
- 插入
- 联盟
- 更新
- 选择
答案: C。UPDATE 是一个 DML 语句,用于修改表中的列值。
19. UPDATE 命令的正确之处是什么?
- 一次只能更新一行
- 它一次只能更新 100 行
- 它可以一次批量更新无限行
- 以上都不是
答案:C . UPDATE 可以根据 WHERE 子句条件一次更新一行或多行中的多行。
20.以下哪个条款决定了要更新多少行?
- 选择
- 在哪里
- 从
- 上述所有的
答案:B. UPDATE 语句利用 WHERE 子句来捕获需要更新的行集。
21.下列关于UPDATE语句的说法正确的是?(选择最合适的答案)
- UPDATE 只能更新一个表中的行
- UPDATE 可以更新多个表中的行
- 单个 UPDATE 命令不能影响多个表中的行
- 以上都不是
答案:A、 C。UPDATE 语句只影响一个表的行,而不影响多个表的行。
考虑以下来自 EMPLOYEES 表的数据集及其结构。回答后面的问题 22 到 24。
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)
EMPLOYEE_ID FIRST_NAME JOB_ID ------------------- ------------------ -------- 5100 BRUCE CLERK 5101 JESSICA SALESMAN 5102 DEBBY SALESMAN
22. 您需要将 Bruce(员工 ID 7389)的 JOB_ID 更改为“ACCOUNTANT”。您会触发以下哪些语句?
-
UPDATE employees SET job_id = 'ACCOUNTANT' WHERE employee_id = 7389;
-
INSERT INTO EMPLOYEES (employee_id , first_name , job_id ) VALUES (5100,'BRUCE', 'ACCOUNTANT');
-
UPDATE employees SET job_id = 'ACCOUNTANT' WHERE job_id = 'CLERK';
-
UPDATE employees SET job_id = 'ACCOUNTANT';
答案:A.选项 B 失败,因为它将所有文员的职务代码修改为 ACCOUNTANT。选项 C 是错误的,因为它将表中所有员工的工作代码更新为 ACCOUNTANT。
根据以下动作回答以下问题 23 和 24 –
您使用如上所示的数据集向 EMPLOYEES 表发出以下查询。
UPDATE employees Set job_id = NULL Where employee_id = 51000;
数据集将如下所示:(假设 EMPLOYEE_ID 列上存在重复值约束)
EMPLOYEE_ID FIRST_NAME JOB_ID ------------------- ------------------ -------- 5100 BRUCE 5101 JESSICA SALESMAN 5102 DEBBY SALESMAN
23. 假设您触发一条 UPDATE 语句以将 Bruce 的 JOB_ID 更新为“SALESMAN”(关于上面显示的数据集)。查询的结果是什么?
- Bruce 的工作代码仍然为 NULL
- 布鲁斯的工作代码将被修改为“销售员”
- ORA错误
- 无动作
答案:B . UPDATE 会将新值添加到 NULL 值,将 NULL 更改为新值
24. 您发出 UPDATE 语句以将员工 ID 7389 更新为 7900。您在提交事务之前通过其 ID ‘7389’ 查询员工。结果会怎样?
- 更新将成功运行,而选择将显示 7389。
- 更新将成功运行,而 select 将不显示任何记录。
- 对 EMPLOYEE_ID 的约束将不允许更新
- 它将成功更新,但 EMPLOYEE_ID 7389 的所有值都将变为 NULL。
答案:B.会话中的查询与正在进行的事务一致。如果在不同的会话中执行相同的查询,它会显示 ID 为 7389 的员工记录,因为第一个会话中的活动事务尚未提交。
25. 以下哪些是 UPDATE 语句的典型用法?(选择最合适的答案)
- 检索一行并更新该行的多列之一
- 修改某些列的所有行
- 修改表中所有列的所有行
- 以上都不是
答案: A.虽然 UPDATE 语句可以修改所有行中的所有列值,但它通常用于选择一行并更新一个或多个列。
26. 以下哪些做法恰当地描述了使用 UPDATE 语句选择要更新的行集?
- 如果要更新某些行,可以使用 PRIMARY KEY 约束
- 如果要更新所有行,可以考虑 WHERE 子句
- 要更新一组行使用 WHERE,要更新表的所有行,请在表上放置一个 PRIMARY KEY 约束
- 以上都不是
答案:C。
27. 表中以下哪些列通常不更新?
- 表中的 LONG 类型列
- 表中的 LOB 列
- 一个主键列,也用作另一个表中的外键引用
- 上述所有的
答案:C。作为惯例,其他表中作为外键引用的主键列不应更新。尽管可以通过推迟通常不推荐的约束来更新它们。
考虑以下 EMPLOYEES 表的数据集和结构,并回答以下问题 28 和 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)
EMPLOYEE_ID FIRST_NAME JOB_ID ------------------- ------------------ -------- 5100 BRUCE NULL 5101 JESSICA SALESMAN 5102 DEBBY SALESMAN
28. 您发出 UPDATE 语句如下:
UPDATE employees SET job_id = NULL;
上述声明的结果是什么?
- 数据集的第一行将更新为 NULL
- 第一行的第三列将更新为 NULL
- 所有行的第 3 列将更新为 NULL
- 并且会抛出ORA错误
答案:C。没有 WHERE 子句的 UPDATE 语句将更新表的所有行。
29. 您发出 UPDATE 语句如下:
UPDATE employees SET employee_id = NULL; WHERE job_id = 'CLERK';
上述声明的结果是什么?(这里 EMPLOYEE_ID 列通过放置约束被标记为强制性)
- 数据集的第一列将更新为 NULL
- 第一行的第三列将更新为 NULL
- 所有行的第 3 列将更新为 NULL
- 并且会抛出ORA错误
答案:D . 更新列值时必须遵守列的约束条件。在给定的 UPDATE 语句中,将抛出错误,因为 EMPLOYEE_ID 列是 EMPLOYEES 表中的主键,这意味着它不能为 NULL。
30. 以下哪个命令可用于从表中删除现有记录?
- 更新
- 插入
- 减
- 删除
答案:D. DELETE 用于从表中删除记录,可以根据条件选择删除记录。作为 DML 语句,它是事务的一部分。
31.关于 DELETE 语句,下列哪项是正确的?
- DELETE 语句必须伴随着 WHERE 子句
- 使用 DELETE 语句编写 WHERE 子句不是强制性的
- DELETE 可以一次从多个表中删除数据
- 以上都不是
答案:B . WHERE 子句谓词在 DELETE 语句中是可选的。如果省略 WHERE 子句,则表的所有行都将被删除。
32.当我们在一个表上发出 DELETE 语句时会发生以下情况?(选择最合适的答案)
- 弹出提示询问用户他/她是否确定删除请求的行
- 立即删除符合 DELETE 语句中给定条件的行
- 请求的行将被立即删除,没有任何提示。
- 以上都不是
答案:C。作为活动或新事务的一部分,表中的行将被删除。
33.考虑来自 EMPLOYEES 表的以下数据集及其结构:
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)
EMPLOYEE_ID FIRST_NAME JOB_ID ------------------- ------------------ -------- 5100 BRUCE 5101 JESSICA SALESMAN 5102 DEBBY SALESMAN
您需要删除employee_id 51001 行的JOB_ID 列中的数据。以下哪个查询是正确的?
-
UPDATE employees SET job_id = NULL WHERE employee_id = 51001;
-
DELETE job_id FROM employees WHERE employee_id = 51001;
-
DELETE FROM employees;
- 以上都不是
答案:D.不能使用 DELETE 语句删除特定行的特定列值。根据给定的条件删除整行。列中不需要的值可以更新为 NULL。在问题的上下文中,选项“A”接近但不正确。
34. UPSERT 和 MERGE 语句有什么区别?
- 没有区别
- UPSERT 是 MERGE 语句采用的最新术语,已过时
- UPSERT 可以执行 MERGE 不能执行的删除操作
- MERGE 进行 INSERT、UPDATE 和 DELETE,UPSERT 仅进行 UPDATE 和 INSERT
答案:D. UPSERT 是一个过时的声明,MERGE 接管了新功能。
35. MERGE 命令和 INSERT、UPDATE 和 DELETE 命令有什么区别?
- MERGE 语句比单独完成的每个操作(INSERT、UPDATE、DELETE)消耗更多的时间
- Oracle 10g 之后 MERGE 已过时
- MERGE 可以对表执行所有三个操作,而 INSERT、UPDATE 和 DELETE 一次执行一个操作。
- 以上都不是。
答案:C . MERGE 语句可以将表上的所有三个操作嵌入到单个语句中,而 INSERT、UPDATE 和 DELETE 一次执行一个操作。
36. 以下哪些对象可以作为 MERGE 语句中的数据源?
- 只有一张桌子
- 仅子查询
- 一个表或一个子查询
- 无论是 A 还是 B
答案:C. MERGE 适用于表或子查询。
37.下列TRUNCATE语句等价于什么?(选择最合适的答案)
- 到 DELETE 语句
- 到 UPDATE 语句
- 不带 WHERE 子句的 DELETE 语句
- 以上都不是
答案:C. TRUNCATE 删除一个命令中的所有行。
38.以下哪种情况表明发生了DML操作?
- 当新行添加到表中时
- 当两个查询合并时
- 当表被截断时
- 以上都不是
答案: A.在表中插入、修改或删除表中的现有行时,是通过 DML 语句完成的。
39.以下哪一项最能定义交易?
- 事务由数据库模式上的 DDL 语句组成
- 事务由数据库会话中的 COMMIT 或 ROLLBACK 组成
- 事务由一组 DML 语句或 DDL、DCL 或 TCL 语句组成,以形成数据库会话中的逻辑工作单元
- 事务由数据库不同会话中的 DML 和 DDL 语句的集合组成
答案:C.一个数据库事务由一个或多个 DML 语句组成,以构成一个一致的数据更改,或者一个 DDL 语句或一个 DCL 命令(GRANT 或 REVOKE)。它以第一个 DML 语句开始,以 DCL 或 DDL 或 TCL(COMMIT 或 ROLLBACK)命令结束。请注意,DDL 和 DCL 命令具有自动提交功能。
40. 组成逻辑单元的 DML 语句集合称为什么?
- 酸属性
- 联盟
- 联合所有
- 交易
答案:D。
41.活动事务中的DML语句在执行时遇到错误怎么办?
- 完整的事务被回滚
- 事务中的 DML 是互斥的,因此可以继续执行
- 事务中的其他 DML 被中断并等待错误解决
- 以上都不是
答: A.如果活动事务中的任何 DML 语句遇到错误,则整个事务以回滚结束。
42. INSERT 语句中的关键字 VALUES 是什么?
- VALUES 可以在 INSERT 期间一次添加多行
- VALUES 在 INSERT 期间一次只能添加 100 行
- 如果我们使用关键字 INSERT,则必须使用 VALUES
- VALUES 一次只添加一行
答案:D。仅当在 INSERT 语句中显式指定列值时才使用 VALUES 关键字。
考虑以下语句和表结构。回答下列问题 43 至 45:
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)
INSERT INTO departments (department_id , department_name , manager_id, location_id ) VALUES (100, 'Human Resources', 121, 1000);
43. 上面的语句会插入多少行?
- 0
- 2
- 3
- 1
答案:D。当使用关键字 VALUES 时,它一次只插入一行。
44. 对于上述 INSERT 语句,值将按什么顺序插入?
- Location_id、manager_id、department_name、department_id
- 部门 ID、部门名称、经理 ID、位置 ID
- 部门 ID、经理 ID、部门名称、位置 ID
- 部门 ID、部门名称、位置 ID、经理 ID
答案:B.如果 INSERT 子句中提到了列,则 VALUES 关键字应包含相同顺序的值
45.假设上面给出的语句修改如下:
INSERT INTO departments VALUES (100, 'Human Resources', 121, 1000);
这种修改的结果是什么?假设 DEPARTMENTS 表有四列,即 Department_id 、DEPARTMENT_NAME 、MANAGER_ID 和 LOCATION_ID 。
- 假设列值的提供顺序与表中的列相同,它会将值插入到部门表的所有列中
- 它会抛出一个 ORA 错误,因为没有明确提到列名
- 它会抛出 ORA 错误,因为在 INSERT 中错误地使用了 VALUES 子句
- 以上都不是
答案: A.在 INSERT 语句中包含列名是可选的,前提是值必须符合表中列的计数和顺序。
46. 下面的 INSERT 语句的结果是什么?(考虑表结构)
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)
INSERT INTO EMPLOYEES (employee_id , hire_date) VALUES (210,"21-JUN-2013");
- 它将仅插入员工 ID 和员工的雇用日期,将所有其他列留为空白
- 它只会插入employee_id
- 它会抛出一个 ORA 错误
- 以上都不是
答案:C。日期文字格式包含错误。它应该用单引号括起来,而不是用双引号括起来。
47.下面INSERT语句的结果是什么?(考虑给定的表结构)
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)
INSERT INTO EMPLOYEES (employee_id , first_name) VALUES (210,"Bryan");
- 它将只插入employee_id 和Bryan 的名字,将所有其他列留为空白
- 它只会插入名字
- 它会抛出一个 ORA 错误
- 以上都不是
答案:C。字符串文字格式包含错误。它应该用单引号括起来,而不是用双引号括起来。
48. 假设您需要插入姓名 O’Callaghan 作为员工表的姓氏。以下哪个查询会为您提供所需的结果?(考虑给定的表结构)
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)
-
INSERT INTO EMPLOYEES (employee_id , last_name) VALUES (210,'O'callahan');
-
INSERT INTO EMPLOYEES (employee_id , last_name) VALUES (210,'O"callahan');
-
INSERT INTO EMPLOYEES (employee_id , last_name) VALUES (210,'O' 'Callahan');
-
INSERT INTO EMPLOYEES (employee_id , last_name) VALUES (210,"O'callahan");
答案:C。
49. 下面的 INSERT 语句的结果是什么?(考虑给定的表结构)
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)
INSERT INTO EMPLOYEES (employee_id , first_name) VALUES ("210",'Bryan');
- 它会抛出一个数值错误
- 它将仅插入employee_id 和Bryan 的名字,将所有其他列保留为NULL
- 它只会插入employee_id
- 以上都不是
答案: A.数值不应包含在引号内。
50. 下面的 INSERT 语句的结果是什么?(考虑给定的表结构)
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)
INSERT INTO departments VALUES (200,'Accounts', NULL, NULL);
- 它会抛出一个 ORA 错误
- 它将成功执行,但可能会在列中插入错误的值
- 它将成功执行
- 以上都不是
答案:C。可以在 VALUES 子句中使用 NULL 来交替填充列值。
51. 下面的 INSERT 语句的结果是什么?(假设department_id 列上有一个NOT NULL 约束并考虑给定的表结构)
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)
INSERT INTO departments VALUES (NULL, 'Accounts', NULL);
- 它会抛出一个 ORA 错误
- 它将成功执行但结果错误
- 它将成功执行但结果正确
- 以上都不是
答案:A. NULL 值不能插入到非空列中。
52. 下面的 INSERT 语句的结果是什么?(假设department_id 列上有一个NOT NULL 约束并考虑给定的表结构)
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)
INSERT INTO departments VALUES (200, 34, NULL);
- 它将成功执行但结果错误
- 它会抛出一个 ORA 错误
- 它将成功执行但结果正确
- 以上都不是
答案:B.值的数据类型与表中列的数据类型不匹配。
53. 以下哪个命令用于将更改后的数据永久保存在表中?
- 回滚
- 犯罪
- 插入
- 更新
答案:B . TCL 命令 COMMIT 用于通过使所有未决数据更改永久保存在表中来结束会话中的当前活动事务。
54. 以下哪个命令允许撤销更改的数据?
- 回滚
- 犯罪
- 插入
- 更新
答案: A. TCL 命令 ROLLBACK 用于通过丢弃所有挂起的数据更改来结束会话中的当前活动事务。
55. 以下哪个命令允许在活动事务中启用标记?
- 回滚
- 犯罪
- 保存点
- 以上都不是
答案:C. SAVEPOINT 标记事务中的一个点,它将事务划分为更小的部分。
56. 以下哪个命令可以防止其他用户对表进行更改?
- 回滚
- 犯罪
- 锁表
- 保存点
答案:C。
57. 试图将值插入到虚拟列中的 INSERT 语句正确的是什么?(选择最合适的答案)
- 它无法在虚拟列中插入值
- 它可以插入值
- 它抛出一个 ORA 错误
- 上述所有的
答案: A.虚拟列是始终根据列规范中定义的派生表达式自动生成的列。它的值不能由用户显式插入。
58.以下哪个命令允许用户用一条语句插入多行?
- 插入
- 全部插入
- 联合所有
- 以上都不是
答案:B.可以使用 INSERT ALL 执行批量插入操作。
59. 以下哪一项是通过子查询插入行的语法?
-
INSERT INTO tablename [{column_name,..}] subquery;
-
INSERT INTO tablename VALUES [{column_name,..}] subquery;
- A 和 B
- 以上都不是
答案:A。
考虑以下 EMPLOYEES 表,并回答后面的问题 60 到 63:
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)
60. 以下哪个查询会成功执行?
-
UPDATE employees SET salary = salary + 1000 WHERE to_char (hire_date, 'YYYY') > '2006';
-
UPDATE employees SET salary = salary + 1000 WHERE to_date (hire_date, 'YYYY') > '2006';
-
UPDATE employees SET salary = salary + 1000 WHERE hire_date > to_date (substr ('01-jan-200',8));
-
UPDATE employees SET salary = salary + 1000 WHERE hire_date in (to_date ('JUN 01 11', to_date ('JUL 01 11'));
答案:A。
61.由于组织结构重组,在最终决定公开之前,您需要将所有员工的部门 ID 更新为 NULL。只有那些 JOB_ID 为 NULL 的记录才应该被更新。以下哪个查询有效?
-
UPDATE employees SET department_id = NULL Where job_id = NULL;
-
UPDATE employees SET department_id = NULL Where job_id = TO_NUMBER(NULL);
-
UPDATE employees SET department_id = NULL Where job_id IS NULL;
-
UPDATE employees SET department_id = TO_NUMBER (' ', 9999) Where job_id = TO_NUMBER(NULL);
答案:C.使用 IS NULL 运算符检查列值是否为空。
62.您需要在 EMPLOYEES 表中添加一个基本的员工数据。基本数据中的姓氏为“Bond”,部门 ID 为 300。以下哪个语句会给出正确的结果?
-
INSERT INTO employees (employee_id , last_name, department_id ) (100,'Bond', (select department_id from departments where department_id = 300));
-
INSERT INTO employees (employee_id , last_name, department_id ) VALUES (100,'Bond', (select department_id from departments where department_id = 300));
-
INSERT INTO employees (employee_id , last_name, department_id ) VALUES ('100','Bond',300);
- 以上都不是
答案:B、C。子查询在 INSERT 语句中确实有效,前提是它们返回数据类型匹配或与它们所用于的列兼容的标量值。
63. 您触发以下查询:
DELETE FROM EMPLOYEES;
假设任何会话中的 EMPLOYEES 表上都没有活动事务,以下哪个陈述是正确的?
- 它删除表的所有行和结构
- 它删除所有可以回滚的行
- 它永久删除所有行
- 以上都不是
答案:B.作为 DML 语句,DELETE 操作导致的数据更改只有在会话中发出 COMMIT 后才能永久生效。
64.考虑 COUNTRY 表的结构,如下所示:
SQL> desc countries Name Null? Type ----------------------- -------- ---------------- COUNTRY_ID NOT NULL CHAR(2) COUNTRY_NAME VARCHAR2(40) REGION_ID NUMBER
您在会话中发出以下语句。
INSERT INTO COUNTRIES (1, 'Whales') / INSERT INTO COUNTRIES (2, 'England') / SAVEPOINT A; UPDATE COUNTRIES SET country_id= 100 where country_id= 1 / SAVEPOINT B; DELETE FROM COUNTRIES where country_id= 2 / COMMIT / DELETE FROM COUNTRIES where country_id= 100 /
当为用户会话发出 ROLLBACK TO SAVEPOINT 命令时会发生什么?
- 回滚产生错误
- 仅回滚 DELETE 语句
- 没有回滚 SQL 语句
- 以上都不是
答案:A、C。由于有两个保存点 – A 和 B,并且 ROLLBACK 命令确实指定了实际的保存点标记,因此 Oracle 会抛出错误。
65.如果用户发出 DML 命令并在没有 COMMIT 或 ROLLBACK 的情况下突然退出 SQL Developer,结果会怎样?(假设会话不是自动提交)
- 自动提交
- 自动回滚
- 可能是 COMMIT 或 ROLLBACK 来结束事务
- 以上都不是
答案:B.当事务被系统故障中断时,整个事务自动回滚。
66. 以下哪个命令/语句会结束交易?
- 犯罪
- 选择
- 保存点
- 创建
答案:A、D。除了TCL 命令即COMMIT 或ROLLBACK 外,DDL 命令和DCL 命令具有自动提交功能。如果 DDL 语句在同一会话中执行,则将提交活动事务。
67.交易何时完成?
- 执行 ROLLBACK 时
- 执行 COMMIT 时
- 执行 TRUNCATE 时
- 上述所有的
答案:D.如果在会话中执行了 TCL、DCL 或 DDL 命令,则事务完成。
68. 检查给定的表结构并考虑以下查询:
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)
INSERT INTO EMPLOYEES (department_id ) VALUES (select department_id FROM departments);
上述查询的结果是什么?
- EMPLOYEES 表和部门表中的列不匹配
- WHERE 子句必须在子查询中使用
- 使用子查询时,VALUES 关键字不能与 INSERT 子句一起使用
- 以上都不是
答案:C . VALUES 关键字的错误使用。只有当您手头有列数据时才必须使用它,这些数据必须插入表中。
69.检查给定的表结构并考虑以下查询:
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 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)
UPDATE (select employee_id , job_id from employees) SET hire_date = '01-JAN-13' WHERE employee_id = (select employee_id FROM job_history);
关于给定的查询,以下哪项是正确的?
- 它不会执行,因为我们不能在单个更新语句中使用两个表
- 它不会执行,因为 UPDATE 不能使用子查询
- 它将在指定列的限制下执行
- 它不会执行,因为在 WHERE 子句中使用了子查询
答案:C。
70.当一个事务被提交时会发生什么?
- 为特定用户会话保存在事务期间所做的更改
- 事务期间所做的更改被丢弃
- 如果事务是 DDL,则提交不起作用
- 以上都不是
答案:D.提交事务会将挂起的数据更改永久保存到数据库中。
71. 下列哪个原因最适合字符串的使用?
- 使用子查询
- 语法错误
- 访问权限
- 违反约束
答案:C、B、D。对不存在的对象/列的引用,空间问题可能是其他原因。
72. 当 INSERT 语句试图在旧表中插入记录时会发生什么?
- 所有列都将获得 NULL 值
- 将自动创建具有相同名称的新表并插入值
- INSERT 无法工作并引发 ORA 错误
- 以上都不是
答案:C。
73. 名为“Jonathan Adams”的用户能够从 EMPLOYEES 表中选择列,但无法将记录插入到 EMPLOYEES 中。原因是什么?
- Jonathan 连接到不支持 INSERT 语句的数据库
- INSERT 语句不能应用于表 EMPLOYEES
- Jonathan 有权访问 SELECT 但无权访问 INSERT INTO 表 EMPLOYEES
- 以上都不是
答案:C.用户可以根据职责享受表访问权限。一个人只能对表进行读取访问,而其他人则可以享有读写访问权限。
74. 假设要在 AUDIT 表中插入 100 万行。INSERT 事务对前 1000 行成功运行,并抛出 ORA 错误“违反约束”。插入前 1000 行的值会发生什么情况?
- 他们将保持原样
- 他们都会被删除
- 他们都会被回滚
- 以上都不是
答案:C。如果事务中的任何 DML 语句遇到错误,则整个事务将被回滚。
检查表结构并考虑以下查询并回答后面的问题 75、76 和 77:
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)
INSERT INTO departments values (15, NULL);
75. 这个声明的结果是什么?
- 它将插入一个 Department_id = 15 的行,所有其他值都为 NULL
- 它将成功执行但在表中插入 0 行
- 它会抛出一个 ORA 错误作为否。列数和值不匹配
- 以上都不是
答案: C。DEPARTMENTS 表包含四列,但 INSERT 语句只提供两列的值,而没有提及这些列。因此,抛出 ORA 错误。
76. 上面的 INSERT 语句正确的是什么?
- 如果 INSERT 语句中未提及列,则将值按位置插入列中
- 必须在 INSERT 语句后提及列
- A 和 B
- 以上都不是
答案: A.如果在 INSERT 语句中没有指定列,Oracle 将按顺序和位置将每个值映射到表中的列。
77.关于上面给出的陈述,如果改变表以添加新列会发生什么?
- 该声明仍然有效
- 语句执行将抛出错误,因为 no 中存在不匹配。列和值
- 不会有任何变化,语句会像以前一样执行
- 以上都不是
答案:B。由于之前没有指定列,所以问题仍然存在。列值映射中的不匹配会引发 ORA 错误。
检查下面给出的表结构并考虑以下查询并回答后面的问题 78 和 79:
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:
INSERT INTO employees (employee_id , last_name, hire_date) VALUES (100, 'ADAMS','21-DEC-12');
查询 2:
INSERT INTO employees (employee_id , last_name, hire_date) VALUES (100, upper('ADAMS'),to_date('21-DEC-12','DD-MON-YY'));
78.以上两个查询哪个更好?
- 两者都更好
- 只有查询 1 更好
- 只有查询 2 更好
- 没有一个查询是正确的
答案:C. Query-2 更好,因为它将日期值作为日期而不是字符串插入。虽然 Oracle 会执行指定为日期的字符串文字的隐式转换,但不推荐。
79. 以下哪个查询与上面给出的查询 2 等效?
-
INSERT INTO employees (employee_id , last_name, hire_date) VALUES (101-1, upper('ADAMS'),to_date('21-DEC-12','DD-MON-YY'));
-
INSERT INTO employees (employee_id , last_name, hire_date) VALUES (99+1, upper('ADAMS'),to_date('22-DEC-12','DD-MON-YY') +1 );
-
INSERT INTO employees (employee_id , last_name, hire_date) VALUES (100, upper('ADAMS'),to_date('21-DEC-12','DD-MON-YY') - 1);
-
INSERT INTO employees (employee_id , last_name, hire_date) VALUES (100, upper('ADAMS'),to_date('28-DEC-12','DD-MON-YY')-7 );
答案:A、C、D。算术运算/函数可用于插入如上所示的值。
80. 你需要将数据从一张表复制到另一张表。可以使用以下哪种方法?
- 您可以使用 COPY 命令
- 您可以使用 INSERT 命令
- 您可以使用 UPDATE 命令
- 以上都不是
答案:B . 直接路径操作 INSERT-AS-SELECT (IAS) 是将数据从一个表复制到另一个表的最常用方法。
81.以下哪个语句会将数据从JOB_HISTORY表复制到JOB_HISTORY_ARCHIVE表?(考虑给定的表结构)
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)
-
INSERT INTO job_history values (select * from job_history);
-
INSERT INTO JOB_HISTORY_ARCHIVE values (select * from job_history_archive);
-
INSERT INTO JOB_HISTORY_ARCHIVE select * from job_history;
- 以上都不是
答案:C。选项“C”正确显示了 IAS (INSERT-AS-SELECT) 方法的用法。
检查给定的表结构。考虑以下查询并回答后面的问题 82 和 83:
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)
INSERT ALL WHEN job_id = 'SA_REP' then INTO employees (employee_id , department_id , salary, hire_date) VALUES (employee_id , 10, salary, hire_date) WHEN job_id <> 'SA_REP' then INTO employees (employee_id , department_id , salary, hire_date) VALUES (employee_id , 20, salary, hire_date) SELECT employee_id , department_id , job_id, salary, commission_pct , hire_date FROM employees WHERE hire_date > sysdate - 30;
82. 解释上面 INSERT 语句的输出。
- 抛出错误
- 它将插入在 sysdate 前一个月被雇用的所有员工的记录。
- 它将插入所有在部门 10 中担任销售代表的员工的记录
- 以上都不是
答案:B、 C。INSERT ALL 可以对目标表进行条件插入。
83. 部门20中会插入哪些员工的数据?
- 销售代表
- 会计师
- 无论是 A 还是 B
- 以上都不是
答案:B.根据 INSERT ALL 语句,job_id 不是“销售代表”的员工的详细信息。
84. 以下查询的结果是什么?(考虑给定的表结构)
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)
INSERT INTO employees (employee_id , salary) VALUES (&employee_id , &salary); COMMIT;
- 语法错误,因为替换变量不能在 DML 语句中使用
- 将提示用户输入员工 ID 和工资,但替换变量无法在表中插入数据
- 系统将提示用户输入员工 ID,并在 EMPLOYEES 表中成功创建工资和记录
- 以上都不是
答案:C.替换变量与 DML 语句配合良好。
85. 评估在用户会话中按指定顺序执行的以下 SQL 语句:
CREATE SEQUENCE id_seq; SELECT id_seq.nextval FROM dual; INSERT INTO employees (employee_id ,first_name,job_id ) VALUES (ord_seq.CURRVAL, 'Steyn','Trainee'); UPDATE employees SET employee_id = id_seq.NEXTVAL WHERE first_name = 'Steyn' AND job_id ='Trainee';
上述声明的结果是什么?
- CREATE SEQUENCE 命令将抛出错误,因为尚未指定序列的最小值和最大值
- 所有语句都将成功执行,并且employee_id 列将包含雇员STEYN 的值2。
- CREATE SEQUENCE 命令不会执行,因为尚未指定序列的起始值和增量值。
- 所有语句都将成功执行,并且对于员工 STEYN,employee_id 列的值为 20,因为默认的 CACHE 值为 20。
答案:B。
86. UPDATE 语句中使用的子查询有什么限制?
- 子查询应该是多行子查询
- 子查询应该是单行子查询
- 没有限制
- 子查询可以是单行或多行子查询
答案:B . 子查询在 UPDATE 语句中使用时不应返回多行
检查给定的表结构并考虑下面给出的查询并回答下面的问题 87 和 88:
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)
UPDATE employees SET salary = (SELECT salary FROM employees WHERE employee_id =7382);
87. 上述查询的结果是什么?
- 它在执行时抛出 ORA 错误
- 所有员工的薪水将更新为与员工 7382 相同的薪水
- 所有员工的工资将更新为NULL
- 以上都不是
答案:B.查询结果可用于更新表中的列值。
88. 假设雇员 7382 不存在于 EMPLOYEES 表中。查询的结果是什么?
- 它在执行时抛出 ORA 错误,因为查询结果无法更新到列
- 所有员工的工资将更新为NULL
- 由于员工 7382 不存在,将引发 ORA 异常“NO_DATA_FOUND”
- 以上都不是
答案:B.除语法错误外,UPDATE 语句不会引发任何异常。
检查给定的表结构并考虑下面给出的查询并回答下面的问题 89 和 90:
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)
UPDATE employees set salary = (select salary from employees where last_name = 'Adams');
89. 查询的结果是什么?
- 它执行成功
- 表的所有行都有相同的薪水
- 执行时可能会抛出 ORA 错误“TOO_MANY_ROWS”
- 以上都不是
答案:C。子查询可能会返回多行导致错误。
90. 上面查询中的哪些更改可以确保不会导致错误?
- 使用 MAX、MIN 或 AVG 等单行函数将多行结果减少为标量结果
- 在 SALARY 列上添加主键约束
- 无需更改
- 以上都不是
答案:A。
检查给定的表结构并考虑以下查询并回答以下问题 91 和 92:
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)
UPDATE employees SET salary = (select max (salary) from employees where last_name = 'Adams');
91. 上面给出的查询的结果是什么?
- 它将更新所有员工的工资,等于名为 Adam 的员工的工资
- 它将更新所有员工的工资,等于所有姓氏为“亚当”的平均工资
- 它将更新 0 行
- 它只会更新一行
答案:B.算术函数 MAX 或 MIN 可用于子查询以获取标量值并避免错误。
92.假设上面的子查询替换为以下内容:
SELECT distinct salary from employees where last_name = 'Adam';
上面给出的主要查询的结果是什么?
- 它将成功执行并给出错误的结果
- 它将成功执行并给出正确的结果
- 它会抛出一个 ORA 错误
- 以上都不是
答案:C.它给出了一个错误,因为有许多姓氏为“亚当”,因此会有许多不同的薪水。
检查给定的表结构并考虑以下查询并回答后面的问题 93 和 94:
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)
UPDATE employees SET salary = 50000; WHERE job_id in (select job_id from job_history where department_id = 10);
93. 上面的语句有什么作用?(选择最合适的答案)
- 它将所有员工的所有工资更新为 50000
- 它将更新部门 10 中所有员工的所有工资
- 它将更新具有与部门 10 相似的工作 ID 之一的所有员工的工资
- 以上都不是
答案:C。
94. 如果将上面给出的 WHERE 子句替换为以下内容,会发生什么情况?
WHERE job_id = (select job_id from job_history where department_id = 10);
- 它将成功执行但结果不正确
- 它将以正确的结果成功执行
- 它会抛出一个 ORA 错误
- 以上都不是
答案:C。等号会引发错误。
检查给定的表结构并考虑以下语句。回答下列问题 95 至 97。
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)
DELETE FROM employees where last_name = 'A%'; COMMIT;
95. 上面给出的查询的结果是什么?
- 执行成功但没有删除任何行
- 将删除姓氏以“A”开头的所有员工
- ORA 错误,因为 DELETE 语句不能有 WHERE 谓词
- 员工表中的所有行都将被删除
答: A. DELETE 语句可以有 WHERE 子句谓词。根据条件,记录将从表中删除。
96. 考虑以下陈述:
DELETE FROM employees where employee_id IS NULL and job_id = NULL; COMMIT;
假设在列 employee_id 上有一个 NOT NULL 约束,上述查询的结果是什么?
- 由于无效的 WHERE 谓词,它将引发 ORA 错误
- 它将成功执行并且不会删除任何行
- 它会引发 ORA 错误,因为多个谓词不能在 DELETE 语句中工作
- 以上都不是
答案:B.可以将多个谓词应用于 DML 语句 UPDATE 和 DELETE。
97. 考虑以下查询:
DELETE FROM employees where department_id = &deptID; COMMIT;
执行上面的语句会发生什么?
- 它会引发错误,因为 DML 语句不能使用替换变量
- 它将提示从用户中删除部门 ID 并删除具有给定部门 ID 的记录
- 会提示输入部门ID但事务无法提交
- 以上都不是
答案:B.替换变量可以与 DML 语句一起使用。
98. 交易的所有部分都应该完成或不完成。ACID 规则的哪个属性符合给定的语句?
- 原子性
- 一致性
- 隔离
- 耐用性
答: A. ACID 是指数据库事务的基本属性:原子性、一致性、隔离性和持久性。原子性意味着必须完成或中止整个操作序列。一致性意味着事务将资源从一种一致状态转移到另一种一致状态。隔离意味着在提交事务之前,事务的效果对其他事务是不可见的。持久性意味着提交的事务所做的更改是永久性的,并且必须在系统故障后幸免于难。
99、ACID属性中的Durability原理是什么状态?
- 它指出数据库可能会丢失已完成的事务
- 它指出交易无法完成
- 它指出,一旦事务完成,数据库就不可能丢失它。
- 以上都不是
答案:C。
100. 一个不完整的交易应该对所有其他用户不可见。ACID 的哪些属性说明了这一点?
- 隔离
- 一致性
- 原子性
- 耐用性
答案: A. “I”代表隔离。
101.一致性原则是什么意思?
- 它指出查询的结果必须与查询开始时数据库的状态一致
- 它指出一个不完整的交易应该对所有其他用户不可见
- 它指出,一旦事务完成,数据库就不可能丢失它
- 以上都不是
答案:A . ACID 属性中的“C”代表 Consistency
102. 以下哪一项最能描述交易?
- 插入到提交/回滚
- 更新到提交/回滚
- 删除以提交/回滚
- 插入/更新/删除到提交/回滚
答案:D。
103. 名为“Jonathan”的用户在表 EMPLOYEES 中插入数据。其他用户何时才能看到新数据?
- 当 Jonathan 向用户提供访问权限时
- 当 Jonathan 在会话中执行 ROLLBACK 语句时
- 当 Jonathan 在同一个会话中执行 COMMIT 语句时
- 当 Jonathan 打开一个新会话并发出 COMMIT 时
答案:C . 活动事务必须在同一个会话中提交。
104.关于事务的嵌套可以说些什么?
- 最多可以有 2 层嵌套
- 最多可嵌套 255 层
- 事务的嵌套是不可能的
- 只能嵌套 1 级
答案:C。
105、下列哪个原因会终止交易?
- DDL 语句
- 退出客户端
- 系统崩溃
- 上述所有的
答:D. DDL 是自动提交的,会结束正在进行的活动事务。