Sql Certificate 简明教程

SQL - Manipulating Data Questions

1.What does ACID mean with respect to relational database?

回答:C. 所有 Oracle 事务都符合数据库事务的基本属性,即 ACID 属性。原子性规定,一个事务的所有任务都执行,或没有一项被执行。不存在部分事务。一致性意味着事务将数据库从一个一致状态带到另一个一致状态。隔离意味着在事务提交之前,其它事务看不到该事务的影响。持久性意味着已提交事务所做的变更是永久的。在事务完成后,数据库通过其恢复机制确保该事务的变更不会丢失。

2. What does the word DML stands for in Oracle SQL?

回答:C. DML 代表数据操作语言。

3. Which of the following are DML commands in Oracle Database?

回答:A,D. 从严格意义来说,SELECT 是一个 DML 命令,因为它是在表中操作数据时一项强制性的条款。

4.Which of the following DML commands can be considered to be a hybrid of INSERT and UPDATE in a single statement?

回答:D. 在 Oracle 中,MERGE 可以使用一个语句执行 INSERT 和 UPDATE 动作。

5. What all operations can MERGE statement perform in SQL?

*答案:A,B。*在某些情况下,除了插入和更新,MERGE 还可以执行 DELETE 操作。

6.Which of following commands is a DDL (Data Definition Language) command but is often considered along with DML commands?

*答案:C。*TRUNCATE 是一条 DDL 命令。它从表中删除记录,没有任何条件。它不是任何正在进行的事务的一部分,在 TRUNCATE 执行后,会话中未提交的事务将被提交。

7.Which of the following commands manipulate data basically?

*答案:B,C。*UPDATE 是一条 DML 语句,用于修改表中的列值。TRUNCATE 通过无条件地从表中删除数据来操作数据。

8. Which of the following commands is used to populate table rows with data?

*答案:B。*INSERT 命令用于向表中插入行。

9. What is true about the INSERT statement? (Choose the most appropriate answer)

*答案:C。*INSERT 语句一次可以将一行或一组行插入到一张表中。

10.What is true about the insertion of rows in tables?

*答案:C。*约束是对列施加的业务规则,以确保进入列中的数据的行为。这些约束在 INSERT 过程中对数据进行验证。

11. What is true about the INSERT statement in Oracle SQL? (Choose the most appropriate answer)

*答案:D。*如果 insert 语句中包含的任何数据违反了约束,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
  • [style="arabic"]1. 检查 EMPLOYEES 表的结构。你发出以下命令:*

INSERT INTO EMPLOYEES (employee_id  , first_name , job_id) VALUES (5100, 'BRUCE', 'CLERK');

假设 EMPLOYEE_ID 列上有一个重复值检查约束,上述语句的结果是什么?

*答案:C。*由于表中已经存在值“5100,BRUCE,CLERK”的行,因此无法向使用相同数据集的 insert 语句中插入行。

  • 13. 你向上面显示的数据集发出以下命令:*

INSERT INTO EMPLOYEES (employee_id  , first_name , job_id) VALUES (51003,'BRUCE','CLERK');

这个语句的输出是什么?

*回答:A. *由于 FIRST_NAME 和 job_id 列没有任何约束,INSERT 将在不发生任何错误的情况下起作用

14. You issue the following command to the data set shown above:

INSERT INTO EMPLOYEES (employee_id  , first_name , job_id ) VALUES (51003,'BRUCE', NULL);

这个语句的输出是什么?

*回答:D. *由于 FIRST_NAME 和 JOB_ID 列没有任何 NOT NULL 约束,NULL 值将被插入。

  • [style="arabic"]1. 关于在表中插入行,以下哪些说法是正确的?*

*回答:B. *INSERT 语句可以使用替代变量在运行时提示用户键入值。它提供了一种将数据插入表的交互方式

16.Which of the following can be used to insert rows in tables?

*回答:D. *INSERT 语句可以使用显式 INSERT、INSERT-SELECT 或子查询方法将数据插入表中。

17. Which among the following is a common technique for inserting rows into a table? (Choose the most sensible and appropriate answer)

*回答:A. *使用 SELECT 子句是将行插入表中最常用的技术。它减少了为每列手动键入值的工作量。

18.Which of the following commands is used to change the rows that already exist in a table?

*回答:C. *UPDATE 是一条 DML 语句,用于修改表中的列值。

19.What is true about the UPDATE command?

*回答:C. *UPDATE 可以根据 WHERE 子句条件一次更新一行或多行。

20.Which of the following clauses decides how many rows are to be updated?

*回答:B. *UPDATE 语句使用 WHERE 子句来捕获需要更新的行集。

21.What among the following is true about the UPDATE statement? (Choose the most appropriate answer)

*回答: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. You need to change the JOB_ID for Bruce (Employee Id 7389) to 'ACCOUNTANT'. Which of the following statements will you fire?

*回答:A。*选项 B 失败,因为它会将所有职员的职务代码更改为 ACCOUNTANT。选项 C 错误,因为它会将表中所有员工的职务代码更新为 ACCOUNTANT。

Answer the following questions 23 and 24 based on the below actions -

您向 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
  • [style="arabic"]1. 假设您发出 UPDATE 语句将 Bruce 的 JOB_ID 更新为 'SALESMAN'(关于上所示数据组)。此查询的结果是什么?*

*回答:B。*UPDATE 将向该 NULL 值添加新值,从而将 NULL 更改为新值

  • [style="arabic"]1. 您发出 UPDATE 语句将员工 ID 7389 更新为 7900。在提交事务之前,您按其 ID '7389' 查询员工。结果是什么?*

*回答:B。*会话中的查询与正在进行的事务一致。如果在不同的会话中执行此相同的查询,将会显示 ID 为 7389 的员工记录,因为第一个会话中的活动事务尚未提交。

25. What among the following is a typical use of an UPDATE statement? (Select the most appropriate answer)

*回答:A。*虽然 UPDATE 语句可以修改所有行中的所有字段值,但通常用于选择一行并更新一列或多列。

26. Which of the following practices appropriately describe for selecting which row set to update using the UPDATE statement?

回答:C。

27. Which of the following columns in a table are not usually updated?

*回答: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. You issue an UPDATE statement as follows:

UPDATE employees
SET job_id  = NULL;

上述语句的结果是什么?

*回答:C。*没有 WHERE 子句的 UPDATE 语句将更新表的所有行。

  • [style="arabic"]1. 您发出如下 UPDATE 语句:*

UPDATE employees
SET employee_id   = NULL;
WHERE job_id  = 'CLERK';

上述语句的结果会是什么?(此处通过设置约束,将 EMPLOYEE_ID 列标记为必需)

*回答:D。*更新字段值时必须遵守该字段上的约束。在给定的 UPDATE 语句中,将引发错误,因为 EMPLOYEE_ID 字段是 EMPLOYEES 表中的主键,这意味着它不能为 NULL。

30. Which of the following commands can be used to remove existing records from a table?

*答:D. *DELETE 用于移除表中的记录,可以根据条件选择性地移除。作为 DML 语句,它是一笔交易的一部分。

31. What among the following is true about the DELETE statement?

*答:B. *DELETE 语句中的 WHERE 子句谓词是可选的。如果省略 WHERE 子句,则表中的所有行都将被删除。

32.What among the following happens when we issue a DELETE statement on a table? (Choose the most appropriate answer)

*答:C. *作为活动交易或新交易的一部分,表中的行将被删除。

33.Consider the following data set from the EMPLOYEES table and its structure:

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 列中的数据。以下哪些查询是正确的?

*答:D. *你不能通过 DELETE 语句针对特定行删除特定列值。整个行将根据给定条件被删除。列中不需要的值可以更新为 NULL。选项“A”接近但根据问题的上下文不正确。

34. What is the difference between the UPSERT and MERGE statements?

*答:D. *UPSERT 是一条过时的语句,MERGE 取而代之并具有新功能。

35. What is the difference between the MERGE command and the commands INSERT, UPDATE and DELETE?

*答:C. *MERGE 语句可以将表上的所有三个操作嵌入到单条语句中,而 INSERT、UPDATE 和 DELETE 一次执行一个操作。

36. Which of the following objects can be the data source in a MERGE statement?

*答:C. *MERGE 既可以与表配合使用,也可以作为子查询配合使用。

37. What among the following is a TRUNCATE statement equivalent to? (Choose the most suitable answer)

*答:C. * TRUNCATE 通过一条命令删除所有行。

38.Which of the following situations indicate that a DML operation has taken place?

*答:A. *当表中的现有行插入、修改或从表中移除时,则通过 DML 语句完成。

39.Which of the following best defines a transaction?

*答案:C。*数据库事务包括一条或多条 DML 语句,构成数据中的一个一致更改,或一条 DDL 语句或一条 DCL 命令 (GRANT 或 REVOKE)。它以第一条 DML 语句开始,以 DCL 或 DDL 或 TCL (COMMIT 或 ROLLBACK) 命令结束。请注意,DDL 和 DCL 命令具有自动提交功能。

40. What does a collection of DML statements that form a logical unit work known as?

*回答:D. *

41.What happens when a DML statement in an active transaction encounters an error on execution?

*答案:A。*如果活动事务中的任何 DML 语句遇到错误,整个事务将最终回滚。

42.What is true about the keyword VALUES in INSERT statements?

*答案:D。*VALUES 关键字仅在 INSERT 语句中明确指定列值时使用。

请考虑以下语句和表结构。回答以下第 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. How many rows will be inserted by the above statement?

*答案:D。*当使用 VALUES 关键字时,它一次仅插入一行。

44. In which order the values will get inserted with respect to the above INSERT statement?

*答案:B。*如果在 INSERT 子句中提到了列,则 VALUES 关键字应按相同顺序包含值

45. Suppose the above given statement is modified as below:

INSERT INTO departments VALUES (100, 'Human Resources', 121, 1000);

此修改的结果是什么?假设 DEPARTMENTS 表有四列,即 department_id、DEPARTMENT_NAME、MANAGER_ID 和 LOCATION_ID。

*答案:A。*在 INSERT 语句中包括列名称是可选的,前提是值必须符合表中列的计数和顺序。

46. What will be the outcome of the below INSERT statement? (Consider the table structure)

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");

*答案:C。*日期文字格式有误。它应放在单引号内,而不是双引号内。

47.What will be the outcome of the below INSERT statement? (Consider the given table structure)

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");

*答案:C。*字符串文字格式有误。它应放在单引号内,而不是双引号内。

48. Suppose you need to insert the name O’Callaghan as the last name of the employees table. Which of the following queries will give you the required results? (Consider the given table structure)

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)

回答:C。

49. What will be the outcome of the below INSERT statement? (Consider the given table structure)

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');

*答案:A. *数字值不应该用引号括起来。

50. What will be the outcome of the below INSERT statement? (Consider the given table structure)

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);

*答案:C. *NULL 可用于 VALUES 子句来交替填充列值。

51. What will be the outcome of the below INSERT statement? (Assume there is a NOT NULL constraint on the department_id column and consider the table structure given)

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);

*答案:A. *NULL 值不能插入非 NULL 列。

52. What will be the outcome of the below INSERT statement? (Assume there is a NOT NULL constraint on the department_id column and consider the given table structure)

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);

*答案:B. *值的数据类型与表中列的数据类型不匹配。

53. Which of the following commands is used to save the changed data in a table permanently?

*答案:B. *TCL 命令 COMMIT 用于通过使表中的所有挂起数据更改永久化来结束会话中的当前活动事务。

54. Which of the following commands allows undoing the changed data?

*答案:A. *TCL 命令 ROLLBACK 用于通过丢弃所有挂起的数据更改来结束会话中的当前活动事务。

55. Which of the following commands allows enabling markers in an active transaction?

*答案:C. *SAVEPOINT 标记事务中一个点,将事务分为更小的部分。

56. Which of the following commands prevents other users from making changes to a table?

回答:C。

57. What is true about an INSERT statement which tries to insert values into a virtual column? (Choose the most appropriate answer)

*答案:A. *虚拟列是一个总是根据列规范中定义的派生表达式自动生成的列。用户不能显式地插入其值。

58.Which of the following commands allows the user to insert multiple rows with a single statement?

*答案:B。*可以使用 INSERT ALL 执行批量插入操作。

59. Which of the following is the syntax for inserting rows through a sub-query?

答案: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. Which of the following queries will execute successfully?

答案:A。

61.Due to structural reorganization in the organization, you are asked to update department IDs for all the employees to NULL before the final decision is made public. Only those records should be updated which have the JOB_ID as NULL. Which of the following queries will work?

*答案:C。*使用 IS NULL 运算符检查列的空值。

62.You need to add a basic employee data into EMPLOYEES table. The basic data contains the last name as 'Bond' and department ID as 300. Which of the following statements will give the correct results?

*答案: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 命令后,会发生什么?

*答案:A、C。*由于存在两个保存点 - A 和 B,并且 ROLLBACK 命令没有指定实际保存点标记,因此 Oracle 会引发错误。

65.If a user issues a DML command and exits the SQL Developer abruptly without a COMMIT or ROLLBACK, what will be the outcome? (Assume the session is not auto commit)

*答案:B。*当系统故障中断了事务时,整个事务将自动回滚。

66. Which of the following commands / statements would end a transaction?

*答案:A、D。*除了 TCL 命令(即 COMMIT 或 ROLLBACK)以外,DDL 命令和 DCL 命令具有自动提交功能。如果在同个会话中执行 DDL 语句,将提交活动的事务。

67. 交易何时完成?

答案:D. *如果在会话中执行 TCL、DCL 或 DDL 命令,则交易完成。

68. Examine the given table structures and consider the following query:

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);

上述查询的结果会怎样?

答案: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);

哪一项是对给定查询的正确描述?

回答:C。

70.What happens when a transaction is committed?

答案:D. *提交交易会将待定数据更改永久保存到数据库中。

  • [style="arabic"]1. 下列哪一个是最适合使用字符串的原因?*

答案:C、B、D. *意外引用不存在的对象/列可能是其他原因。

  • [style="arabic"]1. 当 INSERT 语句尝试将记录插入旧表时,会发生什么?*

回答:C。

  • [style="arabic"]1. 一个名为“Jonathan Adams”的用户能够从 EMPLOYEES 表中选择列,但他无法将记录插入 EMPLOYEES 中。这可能是由什么原因造成的?*

答案:C. *用户可以根据其职责享受表访问权限。一个用户可能只有对一张表的读取访问权限,而另一个用户则可以享有读取和写入访问权限。

  • [style="arabic"]1. 假设要将 1 百万行插入 AUDIT 表。一个 INSERT 交易对前 1000 行运行成功,但抛出了 ORA 错误“约束被违反”。第一千行中插入的值会发生什么?*

答案: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. What will be the outcome of this statement?

答案:C. *DEPARTMENTS 表包含四列,但 INSERT 语句只给两列提供了值,且也没有提及这些列。因此,会抛出 ORA 错误。

76. What is true about the above INSERT statement?

*答案:A. *如果 INSERT 语句中未指定列,则 Oracle 将按顺序和位置将每个值映射到表中的列。

77. With respect to the statement given above, what will happen if the table is altered to add a new column?

*答案: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)
INSERT INTO employees (employee_id , last_name, hire_date)
VALUES (100, 'ADAMS','21-DEC-12');
INSERT INTO employees (employee_id , last_name, hire_date)
VALUES (100, upper('ADAMS'),to_date('21-DEC-12','DD-MON-YY'));

78. Which of the above two queries is better?

*答案:C. *查询 2 更好,因为它将日期值作为日期插入,而不是作为字符串插入。尽管 Oracle 会将指定为日期的字符串文本隐式转换为日期,但不推荐这样做。

  • [style="arabic"]1. 下列哪个查询等同于上面给出的查询 2?*

*答案:A、C、D. *算术运算/函数可用于插入值,如上所示。

80. You need to copy the data from one table to another table. Which of the following methods can be used?

*答案: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)

*答案:C. *选项“C”正确显示了 IAS(INSERT-AS-SELECT)方法的用法。

Examine the given table structure. Consider the following query and answer the questions 82 and 83 that follow:

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. Interpret the output of the above INSERT statement.

*答案:B、C. *INSERT ALL 可以对目标表进行条件插入。

  • [style="arabic"]1. 哪个员工的数据将插入到部门 20 中?*

*答案:B. *根据 INSERT ALL 语句,job_id 并非“销售代表”的员工详细信息。

  • [style="arabic"]1. 下面查询的结果是什么?(考虑给定的表结构)*

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;

*答案:C. *代换变量与 DML 语句配合使用效果很好。

  • [style="arabic"]1. 按照指定顺序在用户会话中执行以下 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';

上述语句的结果是什么?

回答:B。

  • [style="arabic"]1. 在 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);
  • [style="arabic"]1. 以上查询的结果是什么?*

*答案:B. *查询结果可用于更新表中的列值。

  • [style="arabic"]1. 假设 EMPLOYEES 表中不存在员工 7382。查询的结果是什么?*

*答案: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');
  • [style="arabic"]1. 查询的结果是什么?*

*答案:C. *子查询可能返回多行,从而导致错误。

  • [style="arabic"]1. 在以上查询中进行了哪些更改以确保不引起错误?*

答案: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');
  • [style="arabic"]1. 给定查询的结果是什么?*

*答案:B. *算术函数 MAX 或 MIN 可与子查询一起使用,以获取标量值并避免错误。

  • [style="arabic"]1. 假设以上子查询替换为以下内容:*

 SELECT distinct salary from employees where last_name = 'Adam';

给定主查询的结果是什么?

*答案: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. What will the above statement do? (Choose the most appropriate answer)

回答:C。

  • [style="arabic"]1. 如果给定的 WHERE 子句被替换为以下内容,会发生什么事?*

 WHERE job_id = (select job_id from job_history where department_id  = 10);

*答: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;
  • [style="arabic"]1. 给定查询的结果是什么?*

*答:A。*DELETE 语句可以具有 WHERE 子句谓词。基于条件,记录将从表中移除。

  • [style="arabic"]1. 考虑以下语句:*

DELETE FROM employees where employee_id  IS NULL and job_id = NULL;
COMMIT;

假设 employee_id 列有 NOT NULL 约束,上述查询的结果是什么?

*答:B。*可以将多个谓词应用于 DML 语句 UPDATE 和 DELETE。

  • [style="arabic"]1. 考虑以下查询:*

DELETE FROM employees where department_id  = &deptID;
COMMIT;

执行上述语句时会发生什么?

*答:B。*代换变量可与 DML 语句一起使用。

  • [style="arabic"]1. 事务的所有部分都应完成,或者没有一个部分完成。ACID 规则的哪项属性符合给定语句?*

*答:A。*ACID 指数据库事务的基本属性:原子性、一致性、隔离性和持久性。原子性意味着一整套动作要么完成,要么中止。一致性意味着事务将资源从一个一致状态转移到另一个一致状态。隔离性意味着在事务提交之前,事务的效果对于其他事务不可见。持久性意味着已提交事务所做的更改是永久的,并且必须能够在系统故障中存活。

  • [style="arabic"]1. ACID 属性中持久性原则说明了什么?*

回答:C。

  • [style="arabic"]1. 不完整的交易对于所有其他用户应该是不可见的。ACID 的哪项属性说明了这一点?*

答:A。“I”代表隔离性。

  • [style="arabic"]1. 一致性原则说明了什么?*

答案:A。 ACID 属性中的"C"代表一致性

  • [style="arabic"]1. 下列哪一项最能描述事务?*

*回答:D. *

  • [style="arabic"]1. 名为"Jonathan"的用户在 EMPLOYEES 表中插入数据。其他用户何时能够看到新数据?*

答案:C。 活动事务必须在同一会话中提交。

  • [style="arabic"]1. 关于事务嵌套有什么可以说的?*

回答:C。

  • [style="arabic"]1. 下列哪种原因将终止事务?*

答案:D。 DDL 会自动提交并且将会结束正在进行的活动事务。