SQL - 使用集合運算子的問題



1.下圖表示哪個集合運算子?

Table UNION
  1. UNION
  2. UNION ALL
  3. INTERSECT
  4. MINUS

答案:A. 集合運算子用於組合兩個(或多個)SELECT 語句的結果。Oracle 11g 中有效的集合運算子為 UNION、UNION ALL、INTERSECT 和 MINUS。當與兩個 SELECT 語句一起使用時,UNION 集合運算子返回兩個查詢的結果。但是,如果存在任何重複項,則會將其刪除,並且重複記錄僅列出一次。要包含結果中的重複項,請使用 UNION ALL 集合運算子。INTERSECT 僅列出兩個查詢都返回的記錄;MINUS 集合運算子從輸出中刪除第二個查詢的結果,如果它們也存在於第一個查詢的結果中。INTERSECT 和 MINUS 集合運算產生無重複的結果。

2.下圖表示哪個集合運算子?

Table UNION_ALL
  1. UNION
  2. UNION ALL
  3. INTERSECT
  4. MINUS

答案:B. UNION ALL 返回來自兩個查詢的組合行,無需排序或刪除重複項。

sql_certificate

3.下圖表示哪個集合運算子?

Table INTERSECT
  1. UNION
  2. UNION ALL
  3. INTERSECT
  4. MINUS

答案:C. INTERSECT 僅返回兩個查詢結果集中都出現的行,並對其進行排序並刪除重複項。

4.下圖表示哪個集合運算子?

Table MINUS
  1. UNION
  2. UNION ALL
  3. INTERSECT
  4. MINUS

答案:D. MINUS 僅返回第一個結果集中未出現在第二個結果集中的行,並對其進行排序並刪除重複項。

5.關於集合運算子,以下哪一項是正確的?

  1. 它們更改行的值
  2. 它們將僅兩個組成查詢的結果組合成一個結果
  3. 它們將 10 個組成查詢的結果組合成兩個結果集。
  4. 它們將兩個或多個組成查詢的結果組合成一個結果

答案:D. 集合運算子用於組合兩個(或多個)SELECT 語句的結果。Oracle 11g 中有效的集合運算子為 UNION、UNION ALL、INTERSECT 和 MINUS。

6.包含集合運算子的查詢稱為什麼?

  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. MINUS、UNION、UNION ALL 和 INTERSECT
  3. INTERSECT、MINUS、UNION ALL、UNION
  4. 優先順序相同

答案:D. 集合運算子具有相同的優先順序。

12.集合運算子的求值順序是什麼?

  1. 從左到右
  2. 從右到左
  3. 隨機求值
  4. 從上到下

答案:A, D. 假設沒有使用括號對查詢進行分組,則集合運算子將從上到下、從左到右水平求值。

13.在以下哪種情況下,應指定括號?

  1. 當 INTERSECT 與其他集合運算子一起使用時
  2. 當 UNION 與 UNION ALL 一起使用時
  3. 當 MINUS 用於查詢時
  4. 以上都不是

答案:A. 當 INTERSECT 與其他運算子一起使用時,使用括號將明確更改求值順序。

14.當使用集合運算子時,關於 SELECT 子句,以下哪一項是正確的?

  1. 對所選列沒有限制
  2. SELECT 子句中使用的列、表示式在組合查詢中的數量必須匹配
  3. SELECT 子句中使用的列、表示式在第一個查詢中必須為 N,在後續組合查詢中必須為 N-1
  4. B 和 C 都是

答案:B. 使用集合運算子時,所有組合都應具有相同數量的列。構成複合查詢的查詢中的對應列必須屬於相同的資料型別組。

15.關於集合運算子,以下哪一項是正確的?

  1. SELECT 子句應具有相同數量的列,資料型別可以不同
  2. 集合運算子只能用於組合兩個查詢
  3. 第二個查詢中每列的資料型別必須與第一個查詢中其對應列的資料型別匹配。
  4. 以上都不是

答案:C. 使用集合運算子時,所有組合都應具有相同數量的列。構成複合查詢的查詢中的對應列必須屬於相同的資料型別組。

16.在使用集合運算子的情況下,ORDER BY 子句可以在哪裡使用?

  1. 在每個要組合的查詢中
  2. 僅在第一個查詢中
  3. 在複合查詢的最後
  4. 以上都不是

答案:C. 如果在使用集合運算子連線的任何查詢之間使用 ORDER BY 子句,則會丟擲 ORA 錯誤。

17.關於在 WHERE 子句中包含集合運算子的查詢,以下哪一項是正確的?

  1. 這些查詢的 SELECT 子句中必須具有相同數量和資料型別的列。
  2. WHERE 子句查詢和主 SELECT 中使用的列數可以不同
  3. WHERE 子句中使用的列數應相同,資料型別可以不同
  4. 以上都不是

答案:A. 使用集合運算子時,所有組合都應具有相同數量的列。構成複合查詢的查詢中的對應列必須屬於相同的資料型別組。

18.關於第二個查詢中的列相對於第一個查詢中的列,以下哪一項是正確的?

  1. 第二個查詢中的列必須與第一個查詢中對應列的資料型別組相同
  2. 如果第一個查詢中的列為 NUMBER,則第二個查詢中對應列應為 VARCHAR2
  3. 如果第一個查詢中的列為 NUMBER,則第二個查詢中對應列也應為 NUMBER。
  4. 以上都不是

答案:A, C.

19.關於集合運算子,以下哪一項是正確的?

  1. 集合運算子不能用於子查詢
  2. 集合運算子只能用於 WHERE 子句
  3. ORDER BY 可以用於所有由集合運算子組合的查詢
  4. 集合運算子可以在子查詢中使用

答案:D.

20.考慮到集合運算子具有相同的優先順序,更改其優先順序的最佳方法是什麼?

  1. 可以更改集合運算子的使用順序以更改優先順序
  2. 相同的優先順序無法更改
  3. 可以使用括號更改優先順序
  4. 以上都不是

答案:C. 可以使用括號對特定查詢進行分組,以明確更改優先順序。在執行過程中,括號優先於其他集合運算子。

21.關於重複值和集合運算子,可以說什麼?

  1. 沒有集合運算子顯示重複值
  2. 所有集合運算子都可以顯示重複值
  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. 來自不同表的查詢不能與集合運算子一起使用
  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 個職位。考慮到上述查詢,他的記錄在結果中將顯示多少次?

  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. UNION
  2. UNION ALL
  3. MINUS
  4. 以上都不是

答案: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),如果在 SELECT 子句中也包含部門 ID,結果將是什麼?

  1. 結果將相同
  2. 結果將不同
  3. 結果將相同,但順序將不同
  4. 以上都不是

答案:A。結果可以解釋為——在同一部門擔任過相同職位名稱的員工。

45.關於 MINUS 運算子,以下哪項為真?

  1. 它會返回所有元件查詢中的所有行
  2. 它僅返回所有元件查詢中的公共行
  3. 它會返回第一個查詢中的所有行,而不是後續查詢中的行
  4. 它會返回第一個查詢選擇的所有不同行,但不在後續查詢中

答案:D。MINUS 集運算子會從輸出中刪除第二個查詢的結果,如果這些結果也存在於第一個查詢的結果中。

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。

Table AUDIT_YEARLY Table AUDIT

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 替換為 UNION ALL,查詢的結果是什麼?

  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運算子的使用涉及兩個或多個基於列而不是基於行的SELECT語句,因此SET運算子被稱為什麼?

  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. UNION
  2. UNION ALL
  3. INTERSECT
  4. 以上都不是

答案:B. UNION ALL 返回來自兩個查詢的組合行,無需排序或刪除重複項。

56.您需要顯示所有重複值以及兩個查詢結果集中存在的所有值。在上面給出的查詢中,您可以使用以下哪個SET運算子?

  1. INTERSECT
  2. UNION
  3. MINUS
  4. 以上都不是

答案: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和查詢2中都存在的結果。

60.INTERSECT和UNION運算子之間有什麼區別?

  1. INTERSECT遵循“AND”布林邏輯,UNION遵循“OR”布林邏輯。
  2. UNION遵循“OR”布林邏輯,而INTERSECT遵循“AND”邏輯。
  3. A 或 B 均可
  4. 以上都不是

答案:A。

61.在以下哪個SET運算子中,更改元件查詢的順序會更改結果集?

  1. UNION
  2. UNION ALL
  3. MINUS
  4. INTERSECT

答案:C. MINUS僅返回第一個結果集中未出現在第二個結果集中的行,對它們進行排序並刪除重複項。

考慮以下查詢並回答後面的問題62到66。

SELECT 4 from dual
INTERSECT
SELECT 1 from dual;

62.給定查詢的結果是什麼?

  1. 無行
  2. 4
  3. 1
  4. NULL

答案:A. 不會選擇任何行,因為INTERSECT運算子不會從兩個查詢中獲得任何公共結果 - INTERSECT運算子給出查詢1和查詢2中都存在的公共結果。

63.如果用MINUS運算子替換INTERSECT運算子,結果會怎樣?

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

答案:B. MINUS給出存在於第一個查詢中但不存在於第二個查詢中的結果。

64.如果用UNION運算子替換INTERSECT運算子,上面查詢的結果會怎樣?

  1. 1

    4

  2. 4

    1

  3. NULL
  4. 0

答案:A. UNION將在結果集中生成唯一的行,並按升序排列。

65.如果用UNION ALL運算子替換INTERSECT運算子,上面查詢的結果會怎樣?

  1. 4

    1

  2. 0
  3. NULL
  4. 1

    4

答案:A. UNION ALL按查詢中排列的位置顯示結果,不進行排序。

66.如果上面查詢修改如下,結果會怎樣?

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

    4

  2. 4

    1

  3. NULL
  4. 以上都不是

答案:A。

檢查JOB_HISTORY_ARCHIVE表的結構。它是JOB_HISTORY表的備份表,沒有額外的列。假設兩個表的資料不同,請考慮以下查詢並回答後面的問題67到70。

Table 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. COUNT(*)
  2. COUNT(*)和GROUP BY employee_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. EMP ID
  2. Employee ID
  3. EMPLOYEE_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. ORDER BY j.2
  3. ORDER BY 1
  4. 以上都不是,在查詢中不允許使用ORDER BY。

答案:C. 這是一個更通用的規範,Oracle將根據第一個查詢的第一列進行排序。

77.考慮以下示例並回答下面的問題

Table AUDIT_YEARLY Table AUDIT
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. Employee_id
  4. 以上都不是

答案:A. FOR UPDATE子句不能與使用SET運算子組合的查詢一起使用。

80.以下查詢的結果是什麼?

SELECT * from employees
UNION
SELECT job_id FROM job_history;;
  1. 它將給出employees表中的所有列以及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. 為了使包含表示式的 select 查詢有效,應提供列別名以便在 order_by_clause 中引用它。
  4. 在包含 TABLE 集合表示式的 SELECT 語句中,不能使用這些運算子。

答案:A. 集合運算子不支援 LONG、CLOB 和 BLOB 資料型別。

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. ORDER BY 2,1
  2. ORDER BY EMPLOYEE_NO
  3. ORDER BY 2, employee_id
  4. ORDER BY "EMPLOYEE_NO"

答案:A, C. ORDER BY 子句必須透過其位置或第一個查詢引用的名稱來引用列。

85.使用 SET 運算子組合的兩個查詢中,要排除第二個查詢中的列,可以使用哪個子句?

  1. GROUP BY
  2. ORDER BY
  3. MINUS
  4. UNION

答案: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.您需要顯示員工擁有 'SA_REP' 或 'ACCOUNTANT' 工作 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 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. RIGHT OUTER JOIN
  2. LEFT OUTER JOIN
  3. EQUI-JOIN
  4. FULL OUTER JOIN

答案: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.以下哪些 SET 運算子功能在 SQL/Foundation:2003 中受支援,但在 Oracle 中不受支援?

  1. UNION ALL
  2. MINUS ALL
  3. INTERSECT ALL
  4. EXCEPT ALL

答案:B, C, D.

99.您需要找出部門 100 和 200 中的公共工作 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. 所有集合運算子的優先順序相同,因此優先順序由它們出現的順序決定。

廣告

© . All rights reserved.