使用集合运算符问题

使用集合运算符问题


1.下图表示的是哪个SET运算符?

表联合

  1. 联盟
  2. 联合所有
  3. 相交

答案:A.集合运算符用于组合两个(或多个)SELECT 语句的结果。Oracle 11g 中的有效集合运算符是 UNION、UNION ALL、INTERSECT 和 MINUS。当与两个 SELECT 语句一起使用时,UNION 集合运算符返回两个查询的结果。但是,如果有任何重复项,它们将被删除,并且重复的记录仅列出一次。要在结果中包含重复项,请使用 UNION ALL set operator.INTERSECT 只列出两个查询都返回的记录;如果在第一个查询的结果中也找到了第二个查询的结果,则 MINUS 集合运算符将从输出中删除第二个查询的结果。INTERSECT 和 MINUS 集合操作产生不重复的结果。

2.下图表示的是哪个SET操作符?

表 UNION_ALL

  1. 联盟
  2. 联合所有
  3. 相交

答案:B. UNION ALL 返回来自两个查询的组合行,而不排序或删除重复项。


sql_证书

3.下图表示的是哪个SET操作符?

表相交

  1. 联盟
  2. 联合所有
  3. 相交

答案:C. INTERSECT 只返回出现在两个查询结果集中的行,对它们进行排序并删除重复项。

4.下图表示的是哪个SET操作符?

表减

  1. 联盟
  2. 联合所有
  3. 相交

答案:D. MINUS 仅返回第一个结果集中没有出现在第二个结果集中的行,对它们进行排序并删除重复项。

5. SET 操作符的正确之处是什么?

  1. 他们改变行的值
  2. 它们仅将两个组件查询的结果合并为一个结果
  3. 他们将 10 个组件查询的结果组合成两个结果集。
  4. 它们将两个或多个组件查询的结果合并为一个结果

答案:D.集合运算符用于组合两个(或多个)SELECT 语句的结果。Oracle 11g 中的有效集合运算符是 UNION、UNION ALL、INTERSECT 和 MINUS。

6. 包含 SET 运算符的查询称为什么?

  1. 子查询
  2. 相关子查询
  3. GROUP BY 查询
  4. 复合查询

答案:D。

7.关于 UNION 操作符的哪些信息是正确的?

  1. 它从组合查询中返回行以及 NULL 值
  2. 它在消除重复后返回组合查询的行
  3. 它返回组合查询的行以及重复值
  4. 它返回组合查询的行,忽略 NULL 值

答案:B. UNION 从两个查询返回合并的行,对它们进行排序并删除重复项。

8. UNION ALL 运算符的正确之处是什么?

  1. 它从组合查询中返回行以及 NULL 值
  2. 它在消除重复后返回组合查询的行
  3. 它返回组合查询的行以及重复值
  4. 它返回组合查询的行,忽略 NULL 值

答案:C. UNION ALL 返回来自两个查询的组合行,而不排序或删除重复项。

9. INTERSECT 运算符正确的是什么?

  1. 它从组合查询中返回行以及 NULL 值
  2. 它在消除重复后返回组合查询的行
  3. 它从组合查询中返回公共行
  4. 以上都不是

答案:C. INTERSECT 只返回出现在两个查询结果集中的行,对它们进行排序并删除重复项。

10. MINUS 运算符正确的是什么?

  1. 它从第一个查询返回行,但不从第二个查询返回
  2. 它返回第二个查询的行,但不返回第一个查询的行
  3. 它为组合查询返回重复的行
  4. 它返回组合查询的行,忽略 NULL 值

答案: A. MINUS 只返回第一个结果集中没有出现在第二个结果集中的行,对它们进行排序并删除重复项。

11.集合运算符 UNION、UNION ALL、INTERSECT 和 MINUS 的优先级是什么?

  1. UNION、UNION ALL、INTERSECT 和 MINUS
  2. 减号、联合、联合所有和相交
  3. 相交,减号,联合所有,联合
  4. 同等优先级

答案:D. SET 运算符具有相同的优先级。

12.集合运算符的求值顺序是什么?

  1. 左到右
  2. 右到左
  3. 随机评估
  4. 从上到下

答案:A、D。假设没有使用括号对查询进行分组,SET 运算符将在水平方向上从上到下和从左到右进行计算。

13.在下列哪种情况下,应指定括号?

  1. 当 INTERSECT 与其他集合运算符一起使用时
  2. 当 UNION 与 UNION ALL 一起使用时
  3. 当 MINUS 用于查询时
  4. 以上都不是

答案: A.当 INTERSECT 与其他运算符一起使用时,使用括号将显式更改计算顺序。

14. 使用 SET 运算符时 SELECT 子句的正确之处是什么?

  1. 对选择的列没有限制
  2. SELECT 子句中使用的列、表达式在组合查询中的数量必须匹配
  3. SELECT 子句中使用的列、表达式在第一个查询中必须为 N,在随后的组合查询中必须为 N-1
  4. B 和 C

答案:B.所有的组合应该有相​​同的编号。使用 SET 运算符时的列数。构成复合查询的查询中的相应列必须属于相同的数据类型组。

15.关于 SET 操作符,哪些是正确的?

  1. SELECT 子句应该有相同的列数,数据类型可以不同
  2. SET 运算符只能用于组合两个查询
  3. 第二个查询中每列的数据类型必须与第一个查询中对应列的数据类型匹配。
  4. 以上都不是

答案:C。所有的组合应该有相​​同的编号。使用 SET 运算符时的列数。构成复合查询的查询中的相应列必须属于相同的数据类型组。

16.在使用SET操作符的情况下,ORDER BY子句可以用在什么地方?

  1. 在每个被组合的查询中
  2. 仅在第一个查询中
  3. 在复合查询的最后
  4. 以上都不是

答案:C。如果在使用 SET 运算符连接的任何查询之间使用 ORDER BY 子句,它将抛出 ORA 错误。

17.WHERE 子句中包含 SET 运算符的查询是什么?

  1. 这些查询必须具有相同的编号。SELECT 子句中列的数据类型。
  2. 没有。WHERE 子句查询和主 SELECT 中使用的列数可以不同
  3. 没有。WHERE 子句中使用的列数应该相同,数据类型可以不同
  4. 以上都不是

答案:A.所有的组合应该有相​​同的编号。使用 SET 运算符时的列数。构成复合查询的查询中的相应列必须属于相同的数据类型组。

18.关于第一个查询中的列,第二个查询中的列的正确性是什么?

  1. 第二个查询中的列必须与第一个查询中的对应列在相同的数据类型组中
  2. 如果第一个查询中的列是 NUMBER,则第二个查询中的对应列应该是 VARCHAR2
  3. 如果第一个查询中的列是 NUMBER,则第二个查询中的相应列也应该是 NUMBER。
  4. 以上都不是

答案:A、C。

19.下列关于SET运算符的说法正确的是?

  1. SET 运算符不能用于子查询
  2. SET 运算符只能用在 WHERE 子句中
  3. ORDER BY 可用于由 SET 运算符组合的所有查询
  4. SET 运算符可用于子查询

答案:D。

20.鉴于它们具有相同的优先级,更改 SET 运算符的优先级的最佳方法是什么?

  1. 可以更改 SET 运算符的使用顺序以更改优先级
  2. 同等优先级不能改变
  3. 括号可用于更改优先级
  4. 以上都不是

答案:C。括号可用于对特定查询进行分组,以便显式更改优先级。在执行期间,括号优先于其他 SET 运算符。

21.关于重复值和 SET 运算符可以说些什么?

  1. 没有 SET 运算符显示重复值
  2. 所有 SET 运算符都可以显示重复值
  3. 只有 UNION ALL 运算符显示重复值
  4. 以上都不是

答案:C. UNION、INTERSECT 和 MINUS 自动消除重复值

检查 EMPLOYEES 和 DEPARTMENTS 表的结构,并考虑以下查询并回答问题 22 和 23。

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)
SELECT department_id 
FROM employees e
UNION 
SELECT department_id 
FROM departments

22.这个查询的结果会显示什么?

  1. 它将显示 EMPLOYEES 和 DEPARTMENTS 表中共同包含的不同部门 ID
  2. 它会抛出 ORA 错误
  3. 未选择任何行
  4. 以上都不是

答案: A. UNION 从两个查询返回合并的行,对它们进行排序并删除重复项。

23. 上面给出的查询正确的是什么?

  1. 此查询返回 ORA 错误
  2. 它执行成功但没有给出任何结果
  3. 来自不同表的查询不能与 SET 运算符一起使用
  4. 查询执行成功并按预期给出结果

答案:D。复合查询是由使用不同表的多个查询组成的一个查询。

24.使用UNION ALL运算符时,结果的默认排序顺序是什么?

  1. 降序
  2. 上升
  3. A或B
  4. 上述所有的

答案:B。默认情况下,复合查询将返回跨所有列排序的行,从左到右按升序排列。唯一的例外是 UNION ALL,其中不会对行进行排序。唯一允许使用 ORDER BY 子句的地方是复合查询的末尾。

25. SELECT 中哪些列是 CHAR 且长度相等的复合查询的输出是什么?

  1. 输出将具有等长的 VARCHAR2 数据类型
  2. 输出将具有等长的 CHAR 数据类型
  3. 输出将具有不同长度的 CHAR 数据类型
  4. 输出将具有等长的 NUMBER 数据类型

答案:B。构成复合查询的查询中的列可以有不同的名称,但输出结果集将使用第一个查询中的列的名称。构成复合查询的查询中的相应列必须属于相同的数据类型组。

26. SELECT 中哪些列是 CHAR 和不同长度的复合查询的输出是什么?

  1. 输出将具有等长的 VARCHAR2 数据类型
  2. 输出将具有等长的 CHAR 数据类型
  3. 输出将具有不同长度的 CHAR 数据类型
  4. 输出将具有 VARCHAR2 数据类型,其长度为较大的 CHAR 值

答案:D。虽然选定的列列表不必是完全相同的数据类型,但它们必须来自相同的数据类型组。复合查询的结果集将包含具有更高精度级别的列。

27.如果一个或两个查询选择 VARCHAR2 的值,复合查询的输出是什么?

  1. 输出将具有 VARCHAR2 数据类型。
  2. 输出将具有等长的 CHAR 数据类型
  3. 输出将具有不同长度的 CHAR 数据类型
  4. 输出将具有 VARCHAR2 数据类型,其长度为较大的 CHAR 值

答案: A.虽然选定的列列表不必是完全相同的数据类型,但它们必须来自相同的数据类型组。复合查询的结果集将包含具有更高精度级别的列。

28.如果复合查询选择数字数据,那么什么是真的?

  1. 数值、运算符的优先级相同
  2. 返回值将由数字优先级决定
  3. 返回值将是 NUMBER 数据类型
  4. 以上都不是

答案:B、C。虽然选定的列列表不必是完全相同的数据类型,但它们必须来自相同的数据类型组。复合查询的结果集将包含具有更高精度级别的列。

29.如果复合查询的 SELECT 列表返回 VARCHAR2 和 NUMBER 数据类型结果会发生什么?

  1. Oracle 将隐式转换它们并返回 VARCHAR2 数据类型结果
  2. Oracle 将隐式转换它们并返回一个 NUMBER 数据类型结果
  3. 抛出 ORA 错误
  4. 以上都不是

答案:C. Oracle 不会隐式转换数据类型。

30.关于 UNION 操作符的哪些说法是正确的?

  1. 它消除了忽略 NULL 值的重复值
  2. 它返回重复值而忽略 NULL 值
  3. 它返回重复的值,包括 NULL 值
  4. 它消除了重复值并且不会忽略 NULL 值

答案:D.使用 UNION 运算符时不会忽略 NULL 值

31.关于使用 UNION 运算符的 SQL 查询的名称和列,可以说些什么?

  1. 列的名称应该相同
  2. 列的名称和数据类型应该相同
  3. 列的名称不必相同
  4. 以上都不是

答案:C。构成复合查询的查询中的列可以有不同的名称,但输出结果集将使用第一个查询中的列的名称。

考虑 JOB_HISTORY 表的以下展示和随后的查询。回答查询下方的问题 32 和 33。

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 employee_id , first_name, last_name, job_id
FROM employees E
UNION
SELECT employee_id , first_name, last_name, job_id
From job_history;

32.上述查询会显示每个员工多少次?

  1. 0
  2. 1
  3. 2
  4. 4

答案:B. UNION 从两个查询返回合并的行,对它们进行排序并删除重复项。

33.以上查询的结果是什么?

  1. 它两次显示员工当前和以前的工作详细信息
  2. 它只显示员工当前和以前的工作详细信息一次
  3. A或B
  4. 以上都不是

答案:B。

检查给定的表结构并考虑以下查询并回答以下问题 34 到 37:

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)
SELECT employee_id , job_id, department_id 
FROM employees
UNION
SELECT employee_id , job_id, department_id 
From job_history;

34.假设ID为121的员工在公司任职期间持有2个工作ID。考虑上面的查询,他的记录会在结果中显示多少次?

  1. 一次
  2. 两次
  3. 三次
  4. 以上都不是

答案:B. UNION 从两个查询返回合并的行,对它们进行排序并删除重复项。重复性是通过列的组合而不是单独的列来衡量的。

35.假设 ID 为 121 的员工在公司的两个不同部门担任两个职位 – 10 和 20。他在部门 10 和 20 中担任“SA_REP”。上述查询的结果是什么?

  1. 2 行
  2. 3排
  3. 没有行
  4. ORA错误

答案:B。

36.哪个陈述最能描述从问题 34 和 35 中得出的推论?

  1. 职务代码存在重复值
  2. 查询执行但产生的结果出乎意料
  3. 部门没有重复值
  4. 以上都不是

答案:C。由于职务代码和部门的组合是唯一的,因此没有获得重复。

37.查询得到的结果集中会怎样排序?

  1. 员工 ID 降序
  2. 作业 ID 降序
  3. 员工 ID 升序
  4. 按部门 ID 升序

答案:C。默认排序将根据第一列升序排列,即:本例中的员工 ID。但是,可以通过在末尾放置一个 ORDER BY 子句来修改此行为。

38.以下哪些操作符将用于从组件查询中获取重复记录?

  1. 联盟
  2. 联合所有
  3. 以上都不是

答案:B. UNION ALL 不会消除重复值。

39. UNION 和 UNION ALL 运算符有什么区别?

  1. 没有区别
  2. UNION ALL 也显示重复值
  3. UNION ALL 的情况下的输出默认不排序
  4. 以上都不是

答案:B、C。当与两个 SELECT 语句一起使用时,UNION 集合运算符返回两个查询的结果。但是,如果有任何重复项,它们将被删除,并且重复的记录仅列出一次。要在结果中包含重复项,请使用 UNION ALL 集合运算符

40. INTERSECT 运算符正确的是什么?

  1. 组件查询中的列数和列的数据类型应该相同
  2. 组件查询中列的名称和列的数据类型应相同
  3. A 和 B
  4. 以上都不是

答案: A.这是 SET 运算符的常见属性标准特性。

41.使用INTERSECT时,如果改变了相交表的顺序,结果集会怎样?

  1. 结果变了
  2. 结果还是一样
  3. 更改时的排序更改
  4. 以上都不是

答案:B。

42.下列关于 INTERSECT 运算符的说法正确的是?

  1. 它忽略 NULL 值
  2. 它不会忽略 NULL 值
  3. 它返回第一个组件查询中的所有行
  4. 以上都不是

答案:B。

回答下面给出的相关问题 43 和 44。

43.您需要显示当前职位与之前职位相同的员工的姓名和职位 ID。以下哪个查询有效?(考虑给定的表结构)

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)
  1. SELECT employee_id , job_id, first_name, last_name
    FROM employees
    UNION
    SELECT employee_id , job_id, first_name, last_name
    FROM job_history;
  2. SELECT employee_id , job_id, first_name, last_name
    FROM employees
    INTERSECT
    SELECT employee_id , job_id, first_name, last_name
    FROM job_history;
  3. SELECT employee_id , job_id, first_name, last_name
    FROM employees
    UNION ALL
    SELECT employee_id , job_id, first_name, last_name
    FROM job_history;
  4. 以上都不是

答案:B。

44.考虑上面的查询,即问题43中的选项B,如果部门ID也包含在SELECT子句中,结果会怎样?

  1. 结果是一样的
  2. 结果会不一样
  3. 结果相同但顺序不同
  4. 以上都不是

答案: A.结果可以解释为 – 在同一部门从事相同职位的员工。

45. MINUS 运算符正确的是什么?

  1. 它返回来自所有组件查询的所有行
  2. 它只返回所有组件查询中的公共行
  3. 它返回第一个查询中的所有行,而不是后续查询中的所有行
  4. 它返回第一个查询选择的所有不同行,但不存在于后续查询中

答案:D. MINUS set 运算符从输出中删除第二个查询的结果,如果它们也出现在第一个查询的结果中

46.使用MINUS运算符时,组件查询的列数和数据类型有什么说法?

  1. 它们应该相同,数据类型可能不同,但它们应该属于相同的数据类型组。
  2. 它们应该与列的名称相同
  3. A 和 B
  4. 以上都不是

答案: A. SET 运算符的共同特征。

47.在公司任职期间没有换过一次工作的员工,需要显示员工ID。在这种情况下,以下哪个查询是正确的?(考虑给定的表结构)

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)
  1. SELECT employee_id 
    FROM employees
    UNION
    SELECT employee_id 
    FROM job_history;
  2. SELECT employee_id 
    FROM employees
    INTERSECT
    Select employee_id 
    FROM job_history;
  3. SELECT employee_id 
    FROM employees
    MINUS
    Select employee_id 
    FROM job_history;
  4. SELECT employee_id 
    FROM employees
    UNION ALL
    SELECT employee_id 
    FROM job_history;

答案:C。

检查给定的表结构并考虑以下查询回答后面的问题 48 和 49:

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)
SELECT employee_id , first_name, job_id
FROM employees
UNION
SELECT employee_id , NULL "first_name", job_id
FROM job_history;

48.以上查询的正确性是什么?

  1. 由于无法使用 TO_CHAR (NULL),因此会引发错误
  2. 它成功执行并给出员工 id、first_name 和当前工作角色的值,包括重复行
  3. 它成功执行并给出员工的 id、first_name 和员工持有的所有工作的值,不包括重复的行
  4. 以上都不是

答案:C.每个查询必须包含相同数量的列,这些列是按位置进行比较的。NULL 可以代替同一复合查询中其他查询中缺少的列。

49.考虑上面的查询,如果将UNION运算符替换为MINUS运算符,结果将是什么意思?

  1. 结果显示那些在 JOB_HISTORY 表中有条目的员工
  2. 结果显示那些在 JOB_HISTORY 中没有条目但存在于 EMPLOYEES 表中的员工
  3. A 或 B
  4. 以上都不是

答案:B. MINUS 给出出现在第一个查询中但没有出现在第二个查询中的唯一结果。

考虑下面给出的展览并回答下面的问题 50 和 51:

表 AUDIT_YEARLY
表审计

50.以下查询的结果是什么?

SELECT AU_DETAILS 
FROM AUDIT
UNION
SELECT AU_DETAILS
FROM AUDIT_YEARLY;
  1. 它成功执行并给出正确的结果,包括重复值
  2. 它成功执行,给出正确的结果,不包括重复值
  3. 它抛出一个 ORA 错误
  4. 以上都不是

答案:C.使用 UNION 集合运算符时,CLOB 或 LONG 列不能出现在 SELECT 子句中。

51.如果用UNION ALL代替UNION,查询的结果是什么?

  1. 它将成功执行并给出正确的结果,包括重复值
  2. 它抛出一个 ORA 错误
  3. 它将成功执行,给出正确的结果,不包括重复值
  4. 它成功执行但给出了不正确的结果。

答案:B. .UNION、UNION ALL、INTERSECT 和 MINUS 运算符与 LONG 或 CLOB 列一起使用时会引发错误。

52.假设有4个组件查询。可以使用多少个 SET 运算符将它们组合在一个复合查询中?

  1. 1
  2. 2
  3. 4
  4. 3

答案:D。要使用的 SET 运算符将是 N-1,其中 N 是组件查询的数量。

53. SET 运算符因使用 SET 运算符时涉及基于列而不是行的两个或多个 SELECT 的事实而称为什么?

  1. 水平连接
  2. 笛卡尔连接
  3. 垂直连接
  4. 外连接

答案:C。

54. UNION 和 INTERSECT 运算符有什么区别?(仅选择最佳差异)

  1. UNION 将两个组件查询的结果合并为一个具有重复值的结果集
  2. INTERSECT 仅返回由两个组件查询中的每一个返回的那些行
  3. UNION 给出来自组件查询的不同值,INTERSECT 给出来自组件查询的公共值
  4. B 和 C

答案:C。

检查 EMPLOYEES 表的结构并考虑以下查询。回答下面的 55 到 60 题。

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

SELECT *
FROM EMPLOYEES 
where department_id = 10

查询 2

SELECT *
FROM EMPLOYEES  E
where E.job_id IN (select first_name  from EMPLOYEES  E1 where E1.job_id = 'CLERK' and E.job_id  = E1.job_id )

55.您需要提取一份报告,其中显示两个查询的结果。应该使用以下哪些运算符来获得所需的结果?

  1. 联盟
  2. 联合所有
  3. 相交
  4. 以上都不是

答案:B. UNION ALL 返回来自两个查询的组合行,而不排序或删除重复项。

56.您需要显示所有重复值以及两个查询结果集中存在的所有值。您可以在上述给定查询中使用以下哪些 SET 运算符?

  1. 相交
  2. 联盟
  3. 以上都不是

答案:D. UNION ALL 将给出带有重复的未排序结果。

57.使用UNION和UNION ALL集合运算符时的结果集有什么区别?

  1. 来自 UNION ALL 的结果集被过滤,包括重复值
  2. 来自 UNION 的结果集被过滤和排序,包括重复值
  3. UNION ALL 的结果集未排序且具有重复值
  4. 来自 UNION 的结果集被过滤和排序,没有重复值

答案:C、D。

58.UNION 操作符在数据库上的开销比 UNION ALL 多。这个说法有什么问题?

  1. 说法正确
  2. UNION ALL 操作符在数据库上的开销比 UNION 操作符多
  3. UNION 必须排序并消除重复项,这会导致额外的开销
  4. 以上都不是

答案:A, C。UNION 必须执行比 UNION ALL 更多的任务,因为它对结果集进行排序和重复数据删除。因此,建议除非需要不同的行,否则应使用 UNION ALL。

59.如果使用 INTERSECT 运算符组合上面给出的两个查询,结果会怎样?

  1. 它将只显示那些在部门 10 中担任文员的员工
  2. 它将显示部门 10 中的所有员工
  3. 它将显示所有文员。
  4. 以上都不是

答案:A. INTERSECT 返回查询 1 AND 查询 2 中存在的那些记录。

60. INTERSECT 和 UNION 运算符之间的区别是什么?

  1. INTERSECT 遵循“AND”布尔逻辑,UNION 遵循“OR”布尔逻辑
  2. UNION 遵循“OR”布尔逻辑,而 INTERSECT 遵循“AND”逻辑
  3. A 或 B
  4. 以上都不是

答案:A。

61.在下列SET运算符中,改变组件查询的顺序会改变结果集?

  1. 联盟
  2. 联合所有
  3. 相交

答案:C. MINUS 仅返回第一个结果集中没有出现在第二个结果集中的行,对它们进行排序并删除重复项。

考虑以下查询并回答后面的问题 62 到 66:

SELECT 4 from dual
INTERSECT
SELECT 1 from dual;

62.给定查询的结果是什么?

  1. 没有行
  2. 4
  3. 1
  4. 无效的

答案:A.不会选择任何行,因为 INTERSECT 运算符不会从两个查询中获得任何共同结果 – INTERSECT 运算符给出查询 1 和查询 2 中存在的共同结果。

63.如果将INTERSECT 运算符替换为MINUS 运算符,查询的结果将是什么?

  1. 3
  2. 4
  3. 0
  4. 1

答案:B. MINUS 给出出现在第一个查询中但不出现在第二个查询中的结果。

64.如果将 INTERSECT 运算符替换为 UNION 运算符,上述查询的结果将是什么?

  1. 1

    4

  2. 4

    1

  3. 无效的
  4. 0

答案: A. UNION 将在结果集中按升序生成不同的行。

65.如果将 INTERSECT 运算符替换为 UNION ALL 运算符,上述查询的结果将是什么?

  1. 4

    1

  2. 0
  3. 无效的
  4. 1

    4

答案: A. UNION ALL 显示结果,因为它们在查询中被定位,而不对其进行排序。

66.如果上面的查询修改如下,结果会怎样?

SELECT 1 from dual
UNION ALL
SELECT 4 from dual;
  1. 1

    4

  2. 4

    1

  3. 无效的
  4. 以上都不是

答案:A。

检查 JOB_HISTORY_ARCHIVE 表结构。它是 JOB_HISTORY 表的备份表,没有附加列。假设两个表都有不同的数据,请考虑下面给出的查询并回答后面的问题 67 到 70:

表 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)
 
(SELECT * FROM job_history;
MINUS
SELECT * FROM job_history_archive)
UNION ALL
(SELECT * FROM job_history_archive
MINUS
SELECT * FROM job_history;);

67. 上面给出的查询的结果是什么?(选择最佳答案)

  1. 它将返回两个表中不同的那些行
  2. 它将返回两个表中的公共行
  3. 它将返回两个表中的所有行
  4. 以上都不是

答案:A。

68.如果上面给定的查询只从 JOB_HISTORY 表产生行,可以得出什么结论?

  1. 它表明 JOB_HISTORY 包含与 JOB_HISTORY_ARCHIVE 表不同的两行
  2. 它表明 JOB_HISTORY 和 JOB_HISTORY_ARCHIVE 表中的两行相同
  3. 它表明 JOB_HISTORY_ARCHIVE 包含与 JOB_HISTORY 表不同的两行
  4. 以上都不是

答案:A。

69.如果上面的查询没有结果怎么办?

  1. 它表明两个表具有相同的数据
  2. 它表明组件查询放置错误
  3. 它表明在复合查询中错误地使用了 SET 运算符
  4. 以上都不是

答案:A。

70.关于上面给出的查询,如果两个表中存在重复的记录,对上面给出的查询应该做以下哪些修改?

  1. 数数(*)
  2. COUNT(*) 和 GROUP BY 员工 ID
  3. COUNT (*) 和 ORDER BY employee_id
  4. 以上都不是

答案:B. COUNT(*) 可用于查看表之间的差异。

考虑以下查询:

SELECT 1 NUM, 'employee' TEXT FROM dual
UNION
SELECT TO_CHAR(NULL) NUM, 'departments' TEXT FROM dual;

71.上面给出的查询的结果是什么?

  1.        NUM TEXT
    ---------- -----------
             1 employee
               departments
  2.        NUM TEXT
    ---------- -----------
             1 employee
          NULL departments
  3. ORA错误
  4.        NUM TEXT
    ---------- -----------
               departments
             1 employee

答案:C。这里将数字 1 与字符 NULL 进行比较,从而引发错误“ORA-01790:表达式必须与相应的表达式具有相同的数据类型”。

考虑以下查询并回答后面的问题 72 和 73:

SELECT months_between (sysdate, to_date('21-MAY-2013','DD-MON-YYYY')) FROM dual
UNION
SELECT TO_date(NULL) NUM FROM dual;

72.上面给出的查询的结果是什么?(假设 SYSDATE 是 2013 年 7 月 1 日)

  1. 它以正确的结果成功执行
  2. 它执行成功但没有结果
  3. 它抛出一个 ORA 错误
  4. 以上都不是

答案:C. NUMBER 和 DATE 不属于同一数据类型失败。这里将 MONTHS_BETWEEN 获得的数字与 DATE 进行比较,从而得出错误。

73.假设第二个查询中的SELECT语句修改如下:

SELECT to_number (NULL) NUM FROM dual;

由于这种变化,结果会怎样?

  1. 它以正确的结果成功执行
  2. 它执行成功但没有结果
  3. 它抛出一个 ORA 错误
  4. 以上都不是

答案:A。

74.检查表结构并考虑以下查询:

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)
SELECT employee_id  "Employee ID"
FROM employees
UNION
SELECT employee_id  "EMP ID"
FROM job_history;

以下哪个列标题将显示在结果集中?

  1. 电磁脉冲标识
  2. 员工ID
  3. 员工ID
  4. ORA 错误,因为组件查询中的列名必须相同。

答案:B。构成复合查询的查询中的列可以有不同的名称,但输出结果集将使用第一个查询中的列的名称。

检查给出的两个表结构并考虑以下查询并回答以下问题 75 和 76:

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)
SELECT employee_id 
FROM employees e
UNION
SELECT employee_id 
FROM job_history j
ORDER BY j.employee_id ;

75.上面给出的查询的结果是什么?

  1. 结果将按 JOB_HISTORY 表中的员工 ID 排序
  2. 结果将按 EMPLOYEES 表中的员工 ID 排序
  3. 不会有结果的排序
  4. ORA错误

答案:D . ORDER BY 应该根据第一个查询中的列名称而不是第二个查询列的名称来完成。

76.以下哪个 ORDER BY 子句可以替换上面给出的查询中错误的 ORDER BY?

  1. ORDER BY e.employee_id
  2. 按 j.2 订购
  3. 按 1 订购
  4. 以上都不是,查询中不允许 ORDER BY

答案:C。这是一个更通用的规范,Oracle 将根据第一个查询的第一列进行排序。

77.考虑下面的展览并回答下面的问题:

表 AUDIT_YEARLY
表审计

SELECT au_doc
From audit
UNION
SELECT au_doc
From audit_yearly;

上述给定查询的结果是什么?

  1. 它给出了两个表之间的审计文件
  2. 它在执行时给出 ORA 错误
  3. 它从表 AUDIT 中给出审计文件
  4. 以上都不是

答案:B. LONG 列不能与 SET 运算符一起使用。

78. 考虑下面给出的查询:

SELECT col_1
From TABLE (package1.proc1)
UNION
SELECT col_1
From TABLE (package2.proc2);

上面给出的查询的结果是什么?

  1. 它以重复项成功执行
  2. 它成功执行,没有重复
  3. 它抛出一个 ORA 错误
  4. 以上都不是

答案:C. TABLE 表达式不能与 SET 运算符一起使用。

检查给定的两个表结构并考虑以下查询。回答下列问题 79 和 80:

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)
SELECT employee_id , job_id
FROM employees E
UNION
SELECT employee_id , job_id
FROM job_history J
FOR UPDATE OF job_id;

79.查询执行时会发生什么?

  1. ORA错误
  2. Employee_id 和 job_id
  3. 员工ID
  4. 以上都不是

答案: A. FOR UPDATE 子句不能与使用 SET 运算符组合的查询一起使用。

80.以下查询的结果是什么?

SELECT * from employees
UNION
SELECT job_id FROM job_history;;
  1. 它将提供员工表中的所有列,而仅提供 job_history 表中的 job_id 列
  2. 它会抛出错误,因为组件查询中的列数应该匹配
  3. 无论是 B 还是 C
  4. 以上都不是

答案:B。

81.如果在一个 SQL 语句中使用了 UNION、UNION ALL、INTERSECT,关于该 SQL 语句,下列哪项是正确的?

  1. UNION, UNION ALL 将首先执行,然后结果集将用于 INTERSECT 语句。
  2. INTERSECT 的执行将在 UNION 和 UNION ALL 执行之前。
  3. 执行将从右到左同时考虑所有操作符。
  4. 执行将从左到右同时考虑所有操作符。

答案:D。

82.考虑下面给出的问题并回答下列问题:

SELECT '3' FROM dual
INTERSECT
SELECT 3f FROM dual;

关于上面给出的查询的执行,什么是正确的?

  1. 它执行成功。
  2. 它抛出一个错误
  3. 它给出了结果 3。
  4. 它给出了结果 3f

答案:B.字符文字必须用单引号括起来。

83.对于 SQL 查询中使用的集合运算符,以下哪项是错误的?

  1. 集合运算符在 LONG 数据类型的列上使用时有效。
  2. 集合运算符对 BLOB、CLOB、BFILE、VARRAY 或嵌套表类型的列无效。
  3. 为了包含表达式的选择查询,应提供列别名以将其引用到 order_by_clause。
  4. 您不能在包含 TABLE 集合表达式的 SELECT 语句中使用这些运算符。

答:A . LONG、CLOB 和 BLOB 数据类型不支持 SET 运算符。

84.检查给定的表结构并评估以下 SQL 语句:

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 employee_id , last_name "Last Name"
FROM employees
WHERE department_id  = 100
UNION
SELECT employee_id  EMPLOYEE_NO, last_name
FROM employees
WHERE department_id  = 101;

哪些 ORDER BY 子句对上述查询有效?(选择所有适用的选项。)

  1. 按 2,1 排序
  2. 按 EMPLOYEE_NO 订购
  3. ORDER BY 2,employee_id
  4. 按“EMPLOYEE_NO”订购

答案:A、 C。ORDER BY 子句必须按列的位置或第一个查询引用的名称来引用列。

85. 在使用 SET 运算符组合的两个查询中,您将使用以下哪个子句从第二个查询中排除该列?

  1. 通过…分组
  2. 订购者
  3. 联盟

答案:C。

86. 检查给定的表结构。以下查询的结果是什么?

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 distinct department_id 
FROM employees
WHERE salary > ANY (SELECT AVG (salary)
FROM employees
GROUP BY department_id )
UNION
SELECT *
FROM employees
WHERE salary > ANY (SELECT MAX (salary)
FROM employees
GROUP BY department_id );
  1. 它将显示所有具有平均工资和最高工资的部门 ID
  2. 它会抛出一个 ORA 错误作为否。两个查询中选择的列数不同
  3. 它将显示所有具有平均工资的部门 ID
  4. 它将显示所有具有最高工资的部门 ID

答案:B . 没有。列数应该相同。

87.关于 UNION 运算符,下列哪项是正确的?

  1. UNION 只对 SELECT 列表中的第一列进行操作
  2. UNION 对组件查询中 SELECT 列表的第一列进行操作
  3. UNION 对所有被选择的列进行运算。
  4. 以上都不是

答案:C. UNION 对 SELECT 列表中的所有列进行运算,并且不会忽略任何列。

88.您需要显示JOB ID 为“SA_REP”或“ACCOUNTANT”的员工所在的部门。以下哪个查询会为您获取所需的结果?(考虑给定的表结构)

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. SELECT department_id 
    FROM employees E
    Where job_id = 'SA_RE'
    UNION
    SELECT department_id 
    FROM employees E
    Where job_id = 'ACCOUNTANT';
  2. SELECT department_id 
    FROM employees E
    Where job_id = 'SA_REP'
    UNION ALL 
    Select department_id 
    FROM employees E
    Where job_id = 'ACCOUNTANT';
  3. SELECT department_id 
    FROM employees E
    Where job_id = 'SA_REP'
    INTERSECT
    Select department_id 
    FROM employees E
    Where job_id = 'ACCOUNTANT';
  4. SELECT department_id 
    FROM employees E
    Where job_id = 'SA_REP'
    MINUS
    Select department_id 
    FROM employees E
    Where job_id = 'ACCOUNTANT';

答案:A。

89.关于使用 SET 运算符的查询中的行排序,以下哪项是正确的?

  1. 在进行复合查询的单个查询中不能使用 ORDER BY。
  2. ORDER BY 子句可以附加到复合查询的末尾。
  3. UNION ALL 返回的行将按照它们在两个源查询中出现的顺序排列。
  4. UNION 返回的行将在所有列中从右到左排序。

答案:A、B、C。

90.在ANSI SQL语法到位之前,UNION运算符用于完成以下哪个功能?

  1. 右外连接
  2. 左外连接
  3. 等值连接
  4. 全外连接

答案:D。

回答下面给出的相关问题 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)
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)

91.您需要找到没有为其记录任何作业历史记录的作业 ID。以下哪个查询有效?(考虑给定的表结构)

  1. SELECT job_id
    FROM employees 
    UNION ALL
    SELECT job_id
    FROM job_history;;
  2. SELECT job_id
    FROM employees 
    MINUS
    Select job_id
    FROM job_history;;
  3. SELECT job_id
    FROM employees 
    UNION
    SELECT job_id
    FROM job_history;;
  4. 以上都不是

答案:B。

92.考虑以下查询:

SELECT distinct  job_id
FROM employees 
NATURAL JOIN job_history ;

以下哪些查询与上述查询相同?

  1. SELECT job_id
    FROM employees
    UNION 
    SELECT   job_id
    FROM job_history;;
  2. SELECT job_id
    FROM employees
    UNION ALL
    SELECT job_id
    FROM job_history;;
  3. SELECT job_id
    FROM employees
    MINUS
    Select job_id
    FROM job_history;;
  4. SELECT job_id
    FROM employees
    INTERSECT 
    SELECT job_id
    FROM job_history;;

答案:A。

检查此处给出的表结构。考虑下面给出的查询并回答以下相关的问题 93 到 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)
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 job_id
FROM employees
UNION ALL
SELECT job_id
FROM job_history;;

93.如果EMPLOYEES表有5条记录,JOB_HISTORY有3条记录,下面的查询会得到多少条记录?

  1. 4
  2. 3
  3. 0
  4. 8

答案:D. UNION ALL 返回来自两个查询的组合行而不排序或删除重复项。

94.如果将UNION ALL操作符替换为UNION操作符,会得到多少条记录?(假设两个表中有 6 个不同的值)

  1. 5
  2. 3
  3. 2
  4. 6

答案:D. UNION 从两个查询中返回合并的行,对它们进行排序并删除重复项。

95.如果将UNION ALL 运算符替换为MINUS 运算符,将获得多少条记录?(假设 EMPLOYEES 中有 3 个不同的值,JOB_HISTORY 中有 2 个值)

  1. 3
  2. 2
  3. 1
  4. 0

答案:C. MINUS 仅返回第一个结果集中没有出现在第二个结果集中的行,对它们进行排序并删除重复项。

96.如果将UNION ALL操作符替换为INTERSECT操作符,会得到多少条记录?(假设两个表之间有 3 个共同的值)

  1. 8
  2. 6
  3. 3
  4. 2

答案:C. INTERSECT 只返回出现在两个查询结果集中的行,对它们进行排序并删除重复项。

97.考虑以下查询:

1.select job_id
2. from employees
3.ORDER BY department_id 
4.UNION ALL
5.select job_id
6.FROM job_history;
7.ORDER BY department_id ;

上述查询产生错误。上述查询中的哪一行会产生错误?

  1. 3
  2. 7
  3. 2
  4. 没有得到错误

答案:A. ORDER BY 应该只出现在复合查询的末尾,而不应该出现在组件查询中。

98.SQL/Foundation:2003 支持以下哪些 SET 运算符特性,但 Oracle 不支持?

  1. 联合所有
  2. 减去所有
  3. 相交所有
  4. 除了所有

答案:B、C、D。

99.您需要找出部门 100 和 200 中的公共 JOB ID(不包括重复项)。您将触发哪个查询以获得所需的结果?(考虑给定的表结构)

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. SELECT job_id from employee
    WHERE department_id  = 100
    INTERSECT 
    SELECT job_id from employee
    WHERE department_id  = 200;
  2. SELECT job_id from employee
    WHERE department_id  = 100
    UNION ALL
    SELECT job_id from employee
    WHERE department_id  = 200;
  3. SELECT job_id from employee
    WHERE department_id  = 100
    MINUS
    Select job_id from employee
    WHERE department_id  = 200;
  4. SELECT job_id from employee
    WHERE department_id  = 100
    INTERSECT ALL
    Select job_id from employee
    WHERE department_id  = 200;

答案:A。

100.如果复合查询同时包含 MINUS 和 INTERSECT 运算符,将首先应用哪个?(选择最佳答案。)

  1. INTERSECT,因为 INTERSECT 的优先级高于 MINUS。
  2. MINUS,因为MINUS 的优先级高于INTERSECT。
  3. 优先级由它们的指定顺序决定。
  4. 复合查询不可能同时包含 MINUS 和 INTERSECT。

答案:C。所有集合运算符具有相同的优先级,因此优先级由它们出现的顺序决定。

觉得文章有用?

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