SQL - 從多個表獲取資料問題



1.以下哪個與關係資料庫無關?

  1. 選擇
  2. 投影
  3. 連線
  4. 以上均不正確

答案:D. 選項 A、B 和 C 是 Oracle 關係資料庫的主要功能。

2.使用哪種方法可以編寫包含來自多個表的列的查詢?

  1. SELECT
  2. GROUP BY
  3. ORDER BY
  4. JOINS

答案:D. 在 Oracle 中,連線用於連線多個表並投影來自多個表的列資料。

3.以下哪種方法是連線多個表最常見的方法之一?

  1. 雜湊連線
  2. 等值連線
  3. 自連線
  4. 交叉連線

答案:B. 等值連線是連線型別之一,也是連線多個表最常見和最簡單的技術。等值連線也稱為簡單連線或內部連線。等值連線涉及主鍵和外部索引鍵。

4.如果列值落在不等式運算子定義的範圍內,將使用以下哪一項連線其他表的行?

  1. 等值連線
  2. 簡單連線
  3. 非等值連線
  4. 以上均不正確

答案:C. 等值連線使用等式運算子連線行,非等值連線使用不等式運算子。

5.關於 Oracle 連線,以下哪個陳述是正確的?

  1. 結果集中包含 NULL 值
  2. 僅獲取具有匹配條件的行
  3. 獲取任何一個表中存在的所有行
  4. 以上均不正確

答案:B. 使用連線時,會排除 NULL 值和公共連線列中不同的條目。

6.以下哪個可以用於將表的行與同一表的其他行連線?

  1. 等值連線
  2. 非等值連線
  3. 外部連線
  4. 自連線

答案:D. 關聯基於具有邏輯且通常是層次關係的列。

7.關於 Oracle DB 中兩個表的笛卡爾積連線,哪個是正確的?

  1. 必須避免,因為它成本高且未最佳化
  2. 當一個表中的每一行都與第二個表中的所有行連線時形成
  3. A 和 B 均正確
  4. 以上均不正確

答案:B. 笛卡爾積連線通常是由於缺少或不充分的連線條件導致的。它只是兩個表的叉積。

8.以下哪項是 Oracle DB 中的基本連線型別之一?

  1. 外部連線
  2. 自連線
  3. 等值連線
  4. 以上所有

答案:C. 等值連線和非等值連線是 Oracle DB 中的兩種基本連線型別。

9.在 Oracle DB 中,為了獲取非笛卡爾積結果,在源表和目標表之間使用連線的主要條件是什麼?

  1. 沒有條件
  2. 兩個表中至少應有一個列是公共的。
  3. 兩個連線表中列的名稱應相同才能使用連線
  4. 以上均不正確

答案:B. 表必須透過關聯兩個實體的公共列連線。在公共列上連線的表會產生非笛卡爾積。

10. 以下哪個可以用於在一個 SQL 查詢中從多個表中獲取行?

  1. SELECT
  2. WHERE
  3. FROM
  4. 等值連線

答案:D. 等值連線也稱為簡單連線或內部連線。等值連線涉及主鍵和外部索引鍵。

11.關於 Oracle 連線中的源表和目標表,哪個是正確的?

  1. 它們必須至少有一個同名的列
  2. 所有列都應具有相同的名稱和相同的資料型別才能連線兩個表
  3. 源表和目標表不能互換,並且是位置特定的
  4. 以上均不正確

答案:D. 源表和目標表可以互換,並且其位置不是固定的。根據查詢中使用的連線型別,結果可能不同或保持相同。

12.關於 Oracle DB 中的自然連線,哪個是正確的?

  1. 源表和目標表的列名應相同
  2. 如果源表和目標表的列名不同,Oracle 會隱式執行必要的操作
  3. NATURAL JOINS、USING 和 ON 是與自然連線相關的關鍵字
  4. 以上所有

答案:C. 關鍵字 NATURAL JOIN 指示 Oracle 識別源表和目標表之間具有相同名稱的列。自然連線使用所有具有匹配名稱和資料型別的列來連線表。USING 子句可用於指定僅應用於等值連線的列。

13.假設表 EMPLOYEES 和 DEPARTMENT 必須使用 NATURAL JOIN 連線。以下兩個查詢有什麼區別?(考慮給定的表結構)

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 NATURAL JOIN department
WHERE first_name = 'John'
AND last_name = 'Bacon';
SELECT department_id 
FROM department NATURAL JOIN employees
WHERE first_name = 'John'
AND last_name = 'Bacon';
  1. 沒有區別
  2. 這兩種情況下的結果不同
  3. 兩個查詢在執行時都會給出 ORA 錯誤
  4. 以上均不正確

答案:B. 使用 NATURAL JOIN 時,源表和目標表可以互換,從而產生關係上不同的結果集。

14.關於 Oracle DB 中的 NATURAL JOIN,以下哪個選項是正確的?

  1. 使用 NATURAL JOIN 時,必須提及兩個表中所有列的名稱
  2. 只有當兩個表的所有列的名稱都相同時才能使用 NATURAL JOIN
  3. 只有當用戶指定源表和目標表的列時,NATURAL JOIN 中才會發生連線。
  4. 使用 NATURAL JOINS 時,無需提及列。

答案:D. 使用 NATURAL JOIN 時,會隱式連線來自源表和目標表的列。NATURAL JOIN 是一種 JOIN 操作,它根據要連線的兩個表中公共列為您建立隱式連線子句。公共列是指在兩個表中具有相同名稱的列。

15. NATURAL JOIN 和 JOIN..ON 連線有什麼區別?

  1. 兩者之間沒有區別
  2. JOIN..ON 將源表和目標表連線到具有相同名稱的特定列上
  3. NATURAL JOIN 隱式連線來自源表和目標表的所有匹配列
  4. 以上均不正確

答案:B, C. 自然連線的連線條件基本上是所有具有相同名稱的列的等值連線。使用 ON 子句指定任意條件或指定要連線的列。連線條件與其他搜尋條件分開。ON 子句使程式碼易於理解。

16.關於 Oracle DB 中的 JOIN..ON 子句,哪個是正確的?

  1. 它不依賴於源表和目標表中的列是否具有相同的名稱
  2. 只有源表和目標表中具有相同名稱的列才能與此子句一起使用
  3. 它是 NATURAL JOIN 的一種格式
  4. 以上所有

答案:A, C. 自然連線的連線條件基本上是所有具有相同名稱的列的等值連線。使用 ON 子句指定任意條件或指定要連線的列。連線條件與其他搜尋條件分開。ON 子句使程式碼易於理解。

17. 資料庫設計人員將兩個表中的鍵(唯一)列命名不同。連線這些表時,以下哪項將是最佳實踐?

  1. JOIN..ON
  2. NATURAL JOIN 或 JOIN...ON 子句
  3. A 和 B 均正確
  4. 以上均不正確

答案:A. 在這種情況下使用 NATURAL JOINS 會產生意外的結果,因為存在隱式搜尋具有相同名稱的列,而這裡不存在。

18.以下哪個可以用於在 Oracle DB 中獲取源表和目標表之間匹配行以及非匹配行?

  1. EQUI-JOIN
  2. SELF-JOIN
  3. NATURAL JOIN
  4. OUTER-JOIN

答案:D. 當需要在結果中包含記錄而沒有連線表中的對應記錄時,就會建立外部連線。這些記錄與 NULL 記錄匹配,以便將其包含在輸出中。

19. 在 Oracle DB 中,笛卡爾積連線也被稱為什麼?

  1. 等值連線
  2. 反連線
  3. 交叉連線
  4. 以上均不正確

答案:C. 兩個表之間的笛卡爾積連線返回表中每一行所有可能的組合。可以透過不包含查詢中的連線操作或使用 CROSS JOIN 來生成笛卡爾積連線。

20.下面查詢中給出的兩個表 EMPLOYEES 和 DEPARTMENT 之間的 NATURAL JOIN 的結果是什麼?(考慮給定的表結構)

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 * FROM employees NATURAL JOIN department;
  1. 兩個表中同名的公共列 DEPARTMENT_ID 將在結果集中出現兩次
  2. 所有具有相同名稱並使用 NATURAL JOIN 連線的列都將在結果集中出現兩次
  3. 結果集將對來自兩個表的每一對同名列只有一個列

  4. 以上均不正確

答案:C. NATURAL JOIN 關鍵字不需要條件來建立兩個表之間的關係。但是,必須存在一個公共列。列限定符不能與 NATURAL JOIN 關鍵字一起使用。

21.Oracle 資料庫中 NATURAL JOIN 和 EQUI-JOIN 的區別是什麼?

  1. 沒有區別
  2. 從兩者獲取的結果集方面,它們是相同的
  3. A 和 B 均正確
  4. 以上均不正確

答案:D. NATURAL JOIN 連線所有名稱相同的列,而 EQUI-JOIN 要求在 SQL 查詢中明確提及列。

22.Oracle 資料庫中的 INNER JOIN 是什麼?

  1. 給出兩個表之間匹配記錄的連線稱為 INNER JOIN
  2. 內部聯接可以使用 <、>、<> 等運算子
  3. A 和 B 均正確
  4. 以上均不正確

答案:C. 連線可以是內部連線,其中僅返回在所有表中都有匹配記錄的記錄;也可以是外部連線,其中可以返回記錄,無論在連線中是否有匹配記錄。

23.Oracle 資料庫中 INNER JOIN 和 EQUI-JOIN 的區別是什麼?

  1. 它們在語法和獲得的結果集方面是相同的。
  2. INNER JOIN 是 EQUI-JOIN 的一個子集
  3. INNER JOIN 可以使用 <、>、<> 以及 "=" 等運算子,而 EQUI-JOIN 僅使用 "=" 運算子
  4. 以上所有

答案:C. EQUI-JOIN 是一種 INNER JOIN,在連線條件中包含 "=" 運算子,而 INNER JOIN 可以包含等式和不等式運算子

24.關於 Oracle 資料庫中 ANSI SQL: 1999 語法中的 NATURAL JOIN,哪些說法是正確的?

  1. 使用等號運算子 (=)
  2. 與傳統語法相比,它們獲取不同的結果
  3. ANSI SQL 語法在 SQL 查詢中使用 NATURAL JOIN 等詞
  4. 以上均不正確。

答案:C. ANSI SQL 語法與傳統使用 "=" 的方式不同。ANSI SQL 語法中有一些關鍵字,如 NATURAL JOIN 等,用於區分使用的連線。

25.關於以下查詢,以下哪種說法是正確的?(請考慮給定的表結構)

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 first_name, salary
FROM employees e, departments d
WHERE e.department_id  (+) = d.department_id ;
  1. 兩個表中的 department_id 之間存在外部連線,等效於 ANSI SQL 中的右外部連線
  2. 兩個表中的 department_id 之間存在外部連線,等效於 ANSI SQL 中的左外部連線
  3. 它獲取 employees 表中所有 department_id 的記錄,無論它們是否匹配
  4. 它獲取 department 表中所有 department_id 的記錄,無論它們是否匹配

答案:A、D. 條件 e.department_id (+) = d.department_id 表示它將執行右外部連線,並且將顯示 department 表中的所有 department_id,無論它們是否匹配

26.以下哪種語法模型在全球軟體系統中得到廣泛使用?

  1. ANSI SQL: 1999
  2. 傳統的 Oracle 語法和 ANSI SQL: 1999 語法
  3. 傳統的 Oracle 語法
  4. 所有選項

答案:C. 儘管 ANSI SQL: 1999 語法不像傳統的 Oracle 語法那樣使用廣泛,但它仍然是 Oracle SQL 中可能使用的語法之一。

27.關於 Oracle 資料庫中的笛卡爾積,以下哪種說法是正確的?

  1. 如果連線的表數為 'N',則如果連線數為 N-1,則不會執行笛卡爾積
  2. 如果連線的表數為 'N',則如果連線數為 N,則執行笛卡爾積
  3. 如果連線的表數為 'N',則如果連線數為 N+1,則執行笛卡爾積
  4. 如果連線的表數為 'N',則如果連線數為 N-1 或更少,則執行笛卡爾積。

答案:A. 兩個表之間的笛卡爾連線返回表中每一行的所有可能組合。笛卡爾連線可以透過在查詢中不包含連線操作或使用 CROSS JOIN 來生成。查詢必須至少具有 (N-1) 個連線條件以防止笛卡爾積,其中 N 是查詢中表的數量。

28.以下 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)
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 first_name, last_name
FROM employees, departments
WHERE department_id (+) = department_id ;
  1. 沒有為表使用別名。
  2. 此處未使用 RIGHT OUTER JOIN,因此它會引發錯誤
  3. "+" 應該位於等式條件的右側,而不是左側
  4. 應在條件中與 department_id 一起使用表別名以消除歧義命名

答案:D. 如果沒有表別名,Oracle 將無法推匯出正在連線的列的來源,因此在執行時會引發歧義錯誤。

29.Oracle 資料庫中使用什麼來避免列歧義問題?

  1. ;
  2. ,
  3. .
  4. /

答案:C. 消除列歧義問題的語法為:table_alias.column_name

30.關於以下查詢,以下哪種說法最合適?(請考慮給定的表結構)

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 employee_id , first_name, last_name
FROM employees e right outer join department d
On e.department_id  = d.department_id ;
  1. 它提供了不在任何部門的員工的詳細資訊
  2. 它提供了沒有員工的部門的詳細資訊
  3. 它提供了所有部門的詳細資訊,無論它們是否有員工
  4. 它提供了在“ABC”公司入職的員工的詳細資訊,無論部門如何。

答案:C. 使用外部連線的 JOIN 方法,您可以新增 LEFT、RIGHT 或 FULL 關鍵字。左外部連線包括連線左側列出的表中的所有記錄,即使在連線中的其他表中找不到匹配項也是如此。完全外部連線包括兩個表中的所有記錄,即使在另一個表中找不到相應的記錄也是如此。

31.以下查詢的結果是什麼?(請考慮給定的表結構)

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 *
FROM employees e, department d
WHERE a.department_id  = b.department_id ;
  1. 它將給出兩個表中所有具有相同 department_id 的匹配值
  2. 它將給出 employees 表中的所有列以及 departments 表中的前 100 行
  3. 它將給出 ORA 錯誤:“b.department_id”無效識別符號
  4. 以上選項均不正確

答案:C. WHERE 子句中應與 FROM 子句中宣告的相同別名

32.關於表連線中的 USING 和 ON 子句,以下哪種說法是正確的?(如果適用,請選擇多個選項)

  1. ON 子句可用於根據資料型別相同的列連線表,但不一定需要名稱相同
  2. USING 和 ON 子句僅用於等值連線和非等值連線
  3. ON 子句不能使用多個條件
  4. 可以在 USING..ON 子句之後編寫 WHERE 子句以應用其他條件

答案:A、D. JOIN ... USING 方法類似於 NATURAL JOIN 方法,只是公共列在 USING 子句中指定。USING 子句中不能包含條件來指示表是如何關聯的。此外,對於 USING 子句中指定的公共列,不能使用列限定符。JOIN... ON 方法根據指定的條件連線表。FROM 子句中的 JOIN 關鍵字指示要連線的表,而 ON 子句指示兩個表是如何關聯的。如果要連線的表在每個表中沒有名稱相同的公共列,則必須使用此方法。

33.Oracle 資料庫中可以使用 JOIN 連線多少個表?

  1. 1
  2. 2
  3. 255
  4. 沒有限制

答案:D. 目前對參與連線的表數沒有限制。

34.當在 SQL 語句中使用多個連線時,哪些說法是正確的?

  1. 連線從左到右進行評估
  2. 連線從右到左進行評估
  3. 連線的評估過程中沒有優先順序
  4. 以上均不正確

答案:A. 當語句中存在多個連線時,它們從左到右進行評估。

35.關於以下查詢,哪些說法是正確的?(請考慮給定的表結構)

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)
SQL> desc bonus
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER
 JOB_ID 			  VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
SELECT bonus, first_name, department_id 
FROM bonus b NATURAL JOIN employees e NATURAL JOIN department d;
  1. 使用 NATURAL JOIN 連線多個表是一個更好的選擇,並且可以產生準確的結果
  2. 使用 NATURAL JOIN 連線多個表時,錯誤機率非常低
  3. 連線多個表時,USING..JOIN..ON 子句比 NATURAL JOIN 提供更準確的結果
  4. 當使用 NATURAL JOIN 時,Oracle 會隱式連線多個表,因此使用 NATURAL JOIN 是一個好習慣

答案:C. 使用 NATURAL JOIN 會建立行的笛卡爾積,並且結果集不可靠,容易出錯。

36.關於 Oracle 資料庫中的 JOIN..ON 子句,哪些說法是正確的?

  1. 與連線多個表時的 NATURAL JOIN 相比,它們不太可靠
  2. JOIN..ON 子句類似於 WHERE 子句,它使用條件限制行
  3. 使用 JOIN..ON 子句時,必須使用額外的 WHERE 子句
  4. 以上均不正確

答案:B. JOIN .... ON 方法根據指定的條件連線表。FROM 子句中的 JOIN 關鍵字指示要連線的表,而 ON 子句指示兩個表是如何關聯的。如果要連線的表在每個表中沒有名稱相同的公共列,則必須使用此方法。

檢查給定的表結構。回答以下給定查詢後的問題 37 和 38

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 e.salary, d.department_id 
FROM employees e JOIN department d
On (e.department_id  = d.department_id  and e.last_name = 'Brandon');

37.關於上述查詢,哪些說法是正確的?

  1. 它會引發 ORA 錯誤,因為缺少必需的 WHERE 子句
  2. JOIN..ON 子句不能包含多個條件
  3. 查詢會忽略最後一個條件並執行,不會引發 ORA 錯誤
  4. JOIN..ON 子句可以按上述形式編寫以新增更多條件。

答案:D. 可以省略 WHERE 子句,並將相關條件直接新增到 JOIN..ON 子句中,如給定查詢所示

38.關於給定的查詢,如果將使用的 JOIN 替換為 NATURAL JOIN,則會引發錯誤。此錯誤的原因是什麼?

  1. 當使用 NATURAL JOIN 時,必須使用 WHERE 子句,省略它會引發錯誤
  2. ON 子句應替換為 USING 子句
  3. NATURAL、JOIN 和 USING 在同一個連線子句的上下文中是互斥的
  4. 查詢在連線時不能組合 NATURAL JOIN 和 ON(或 USING)子句。

答案:C、D。

39.關於 Oracle 資料庫中的非等值連線,哪些說法是正確的?

  1. 它們基於 NON-EQUI JOIN 關鍵字連線
  2. 它們使用 JOIN..ON 子句和 "=" 符號
  3. 當提到的不等式的結果計算為真時,將獲得結果。
  4. 以上均不正確

答案:C. 非等值連線使用 JOIN..ON 子句,但使用不等式運算子。

檢查 EMPLOYEES 和 DEPARTMENTS 表的結構,並回答以下問題 40 和 41。

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)

40.以下查詢在 Oracle 資料庫中的結果是什麼?

SELECT e.first_name, e.last_name, e.employee_id 
FROM employees e JOIN department d
ON (e.salary BETWEEN 1000 AND 10000);
  1. 它將引發 ORA 錯誤,因為 ON 子句中的條件不正確。
  2. 由於語法錯誤,它將引發 ORA 錯誤,因為 ON 子句中沒有等號“=”
  3. 它將成功執行並給出滿足條件的員工的姓、名和員工 ID。
  4. 非等值連線只能用於顯示不等式,而不能用於顯示範圍。

答案:C。

41.您需要查詢一份報告,該報告列出薪資大於 20000 且位於日內瓦任何部門的員工的姓和名。以下哪個查詢可以給出所需的結果?

  1. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >20000)
    AND d.loc = upper ('Geneva');
  2. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >=20000);
  3. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >=20000)
    AND d.loc = 'Geneva'; 
  4. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >20000)
    WHERE d.loc = upper('Geneva');

答案:A、C。

42.當使用 EQUI-JOIN 連線表時,在以下哪些條件下會返回一行?

  1. 不等式匹配操作的結果為真
  2. 不等式匹配操作的結果為 0
  3. 不等式匹配操作的結果為 1
  4. 不等式匹配操作的結果為假

答案:A. 當從兩個不同表中連線記錄的資料完全匹配時(即,相等條件建立了關係),就會建立相等連線。傳統方法在 WHERE 子句中使用等號作為比較運算子。JOIN 方法可以使用 NATURAL JOIN、JOIN ... USING 或 JOIN ... ON 關鍵字。

41.您需要查詢一份報告,該報告列出薪資大於 20000 且位於日內瓦任何部門的員工的姓和名。以下哪個查詢可以給出所需的結果?

  1. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >20000)
    AND d.loc = upper ('Geneva');
  2. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >=20000);
  3. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >=20000)
    AND d.loc = 'Geneva'; 
  4. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >20000)
    WHERE d.loc = upper('Geneva');

答案:A、C。

42.當使用 EQUI-JOIN 連線表時,在以下哪些條件下會返回一行?

  1. 不等式匹配操作的結果為真
  2. 不等式匹配操作的結果為 0
  3. 不等式匹配操作的結果為 1
  4. 不等式匹配操作的結果為假

答案:A. 當從兩個不同表中連線記錄的資料完全匹配時(即,相等條件建立了關係),就會建立相等連線。傳統方法在 WHERE 子句中使用等號作為比較運算子。JOIN 方法可以使用 NATURAL JOIN、JOIN ... USING 或 JOIN ... ON 關鍵字。

41.您需要查詢一份報告,該報告列出薪資大於 20000 且位於日內瓦任何部門的員工的姓和名。以下哪個查詢可以給出所需的結果?

  1. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >20000)
    AND d.loc = upper ('Geneva');
  2. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >=20000);
  3. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >=20000)
    AND d.loc = 'Geneva'; 
  4. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >20000)
    WHERE d.loc = upper('Geneva');

答案:A、C。

42.當使用 EQUI-JOIN 連線表時,在以下哪些條件下會返回一行?

  1. 不等式匹配操作的結果為真
  2. 不等式匹配操作的結果為 0
  3. 不等式匹配操作的結果為 1
  4. 不等式匹配操作的結果為假

答案:A. 當從兩個不同表中連線記錄的資料完全匹配時(即,相等條件建立了關係),就會建立相等連線。傳統方法在 WHERE 子句中使用等號作為比較運算子。JOIN 方法可以使用 NATURAL JOIN、JOIN ... USING 或 JOIN ... ON 關鍵字。

41.您需要查詢一份報告,該報告列出薪資大於 20000 且位於日內瓦任何部門的員工的姓和名。以下哪個查詢可以給出所需的結果?

  1. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >20000)
    AND d.loc = upper ('Geneva');
  2. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >=20000);
  3. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >=20000)
    AND d.loc = 'Geneva'; 
  4. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >20000)
    WHERE d.loc = upper('Geneva');

答案:A、C。

42.當使用 EQUI-JOIN 連線表時,在以下哪些條件下會返回一行?

  1. 不等式匹配操作的結果為真
  2. 不等式匹配操作的結果為 0
  3. 不等式匹配操作的結果為 1
  4. 不等式匹配操作的結果為假

答案:A. 當從兩個不同表中連線記錄的資料完全匹配時(即,相等條件建立了關係),就會建立相等連線。傳統方法在 WHERE 子句中使用等號作為比較運算子。JOIN 方法可以使用 NATURAL JOIN、JOIN ... USING 或 JOIN ... ON 關鍵字。

43.關於 Oracle 資料庫中的自連線,以下說法正確的是?

  1. 連線只需要兩個表。
  2. 結果集中的列來自兩個表,但顯示在一個表中。
  3. 從概念上講,源表會複製自身以建立目標表。(Oracle 不會複製表)
  4. 以上所有

答案:C. 當一個表必須連線到自身以檢索所需資料時,使用自連線。在 FROM 子句中需要表別名才能執行自連線。

44.關於下面給出的查詢和表結構,回答問題。

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 *
FROM employees a join employees b
WHERE a.employee_id  = b.employee_id ;

Oracle 將以下哪個表視為源表和目標表?

  1. a 是源表,b 是目標表
  2. b 是源表,a 是目標表
  3. Oracle 不會將任何表視為源表或目標表
  4. 以上均不正確

答案:A. employees 表的第一次出現被視為源表,隨後的出現被視為 b、c 等。

45.在 Oracle 資料庫中,在哪些情況下理想情況下可以使用自連線?

  1. 當我們需要查詢表中的重複記錄時
  2. 當我們需要從表中獲取 NULL 值時
  3. 當我們需要顯示錶的某一列兩次時
  4. 當我們需要顯示相關實體的層次結構時

答案:D.

46.關於 Oracle 資料庫中的自然連線,以下說法正確的是?

  1. 連線的列具有相同的名稱,但可以具有不同的資料型別
  2. 連線的列可以具有相同的資料型別,但名稱不同
  3. 連線的列應具有相同的名稱和相同的資料型別
  4. 以上均不正確

答案:C. NATURAL JOIN 關鍵字不需要條件來建立兩個表之間的關係。但是,必須存在一個公共列。列限定符不能與 NATURAL JOIN 關鍵字一起使用。

47.需要提取一個報表,該報表僅提供部門 100 和 101 的部門名稱、部門 ID、部門城市和位置 ID。使用自然連線,以下哪個選項將提供所需的結果?

Table DEPARTMENTS Table LOCATIONS
  1. SELECT department_id , department_name  ,location, city
    FROM departments 
    NATURAL JOIN locations 
    WHERE department_id in (100,101); 
    
  2. SELECT department_id , department_name  ,location, city
    FROM locations 
    NATURAL JOIN departments 
    WHERE department_id BETWEEN 100 AND 101; 
    
  3. SELECT department_id , department_name  ,location, city
    FROM departments 
    NATURAL JOIN locations 
    WHERE department_id >100
    AND department_id >101; 
    
  4. SELECT department_id , department_name  ,location, city
    FROM departments 
    NATURAL JOIN locations ; 

答案:A. WHERE 可以用於 NATURAL JOIN 子句後的附加條件。

48.在以下哪些情況下應使用 USING 子句或 NATURAL JOIN 子句?

  1. 當來自表的列的名稱相同時,使用 USING 子句
  2. 當來自表的列的資料型別相同時,使用 NATURAL JOIN
  3. 如果多個列具有相同的名稱但資料型別不匹配,則可以使用 USING
  4. 僅當列名及其資料型別相同時,才應使用 NATURAL JOIN

答案:C,D. NATURAL JOIN 和 USING 是互斥的,當多個列匹配時,應使用 USING 子句僅匹配一列。

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 bonus
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER
 JOB_ID 			  VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
SELECT e.name, b.bonus
FROM employees e 
JOIN bonus b
USING (job_id)
WHERE e.job_id  like 'SA%'); 
  1. 它給出某個公司所有員工的姓名和獲得的獎金。
  2. 它給出某個公司特定職位的所有員工的姓名和獲得的獎金。
  3. 它成功執行,給出所有職位的所有員工的姓名和獲得的獎金。
  4. 它丟擲一個 ORA 錯誤。

答案:D. USING 子句中使用的列在 SQL 語句中的任何位置都不應具有限定符(表名或別名)。

50.關於 Oracle 資料庫中的內部連線和外部連線,以下說法正確的是?

  1. INNER JOIN 僅返回匹配的行。
  2. OUTER JOIN 僅返回不匹配的行。
  3. OUTER JOIN 返回匹配的行以及不匹配的行。
  4. 以上均不正確

答案:A,C. 連線可以是內部連線,其中僅返回在所有表中都有匹配記錄的記錄,也可以是外部連線,其中可以返回記錄,無論連線中是否存在匹配記錄。當需要在結果中包含記錄但連線表中沒有對應的記錄時,會建立外部連線。這些記錄與 NULL 記錄匹配,以便將其包含在輸出中。

51.關於 Oracle 資料庫中的 FULL OUTER JOIN,以下說法正確的是?

  1. 當 LEFT OUTER JOIN 和 RIGHT OUTER JOIN 同時出現在同一個查詢中時,稱為 FULL OUTER JOIN。
  2. FULL OUTER JOIN 與 OUTER JOIN 相同。
  3. A 和 B 均正確
  4. 兩個表之間的連線,返回 INNER JOIN 和 LEFT 和 RIGHT OUTER JOIN 的結果,稱為 FULL OUTER JOIN。

答案:D. 全外部連線包含兩個表中的所有記錄,即使在另一個表中找不到對應的記錄。

檢查給定的表結構並回答後續的第 52 和 53 個問題。

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)
SQL> desc bonus
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER
 JOB_ID 			  VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)

52.考慮以下查詢。

SELECT e.job_id , e.first_name, d.department_id 
FROM departments D JOIN employees e JOIN BONUS b
USING (job_id );

此查詢導致錯誤。錯誤的原因是什麼?

  1. JOIN..USING 只能在兩個表之間發生。
  2. 查詢中的 USING 子句沒有任何來自 department 的列。
  3. 查詢中沒有 WHERE 子句。
  4. 以上均不正確

答案:A. Table1 JOIN table2 JOIN table3 不允許在每個 JOIN 之間沒有 ON 子句的情況下使用。

53.您需要顯示來自 EMPLOYEES 表的所有不匹配行和來自 DEPARTMENT 表的所有不匹配行,而不會在它們之間給出行的笛卡爾積。以下哪個查詢將提供所需的輸出?

  1. SELECT *
    FROM employees e, department d
    WHERE e.department_id  = d.department_id ; 
    
  2. SELECT *
    FROM employees e NATURAL JOIN department d; 
    
  3. SELECT *
    FROM employees e FULL OUTER JOIN department d
    ON  e.department_id  = d.department_id ; 
    
  4. SELECT *
    FROM employees e JOIN  department d
    ON ( e.department_id  > d.department_id ) ; 

答案:C. FULL OUTER JOIN 返回兩個表中的不匹配行。全外部連線包含兩個表中的所有記錄,即使在另一個表中找不到對應的記錄。

54.Oracle 支援以下哪些 ANSI SQL:1999 連線語法連線?

  1. 笛卡爾積
  2. 自然連線
  3. 全外部連線
  4. 等值連線

答案:D.

55.以下哪個不是 Oracle 資料庫中外部連線的格式?

  1. 中心

答案:C. 除“中心”外,其餘 3 種類型是 Oracle 資料庫中外部連線的格式型別。使用外部連線的 JOIN 方法,您可以新增 LEFT、RIGHT 或 FULL 關鍵字。

檢查給定的表結構。透過參考以下查詢,回答後續的第 56、57 和 58 個問題

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 *
FROM employees e NATURAL JOIN department d;

56.您需要查詢上述查詢僅針對部門 100 和 101 獲得的結果。應向上述查詢新增/修改以下哪些子句?

  1. 應新增 ON (e.department_id = d.department_id)
  2. 應新增 USING (e.department_id)
  3. 應新增 WHERE e.department_id in (100,101)
  4. 以上均不正確

答案:C. NATURAL JOIN 子句隱式匹配所有相同名稱的列。要新增其他條件,可以使用 WHERE 子句。

57.您需要查詢上述查詢中所有工資大於 20000 的員工獲得的結果。應向上述查詢新增/修改以下哪些子句?

  1. ON (e.department_id = d.department_id) WHERE salary > 20000;
  2. USING (e.department_id) WHERE salary > 20000;
  3. USING (department_id) WHERE salary>20000;
  4. WHERE salary > 20000;

答案:D.

58.如果上述查詢中的 NATURAL JOIN 被僅 JOIN 替換,則應向上述查詢新增/修改以下哪些內容以提供與部門 100 相關的結果?

  1. ON (department_id = 100);
  2. USING (e.department_id =100);
  3. WHERE d.department_id = 100;
  4. ON (e.department_id = d.department_id and d.department_id = 100);

答案:D. 等值連線可以在 ON 子句之後新增更多條件。

59.需要提取一份報表,以獲取公司“ABC”中部門 10 和 20 中所有員工的經理。以下哪個查詢將提供所需的結果?(考慮給定的表結構)

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 a.first_name || ' '||a.last_name "Manager", b.first_name||' '||b.last_name "Employees"
    FROM employees a join employees b
    On (employee_id );
  2. SELECT a.first_name || ' '||a.last_name "Manager", b.first_name||' '||b.last_name "Employees"
    FROM employees a join employees b
    On (b.employee_id  = a.employee_id );
  3. SELECT a.first_name || ' '||a.last_name "Manager", b.first_name||' '||b.last_name "Employees"
    FROM employees a join employees b
    On (a.manager_id  = b.employee_id )
    WHERE department_id  in (10,20);
    
  4. SELECT a.first_name || ' '||a.last_name "Manager", b.first_name||' '||b.last_name "Employees"
    FROM employees a join employees b
    On (a.manager_id  = b.employee_id )
    WHERE a.department_id  in (10,20);

答案:D. 選項 C 是不正確的,因為 WHERE 子句中未加別名的 department_id 將丟擲錯誤。

60.以下哪個查詢將提供 EMPLOYEES 和 DEPARTMENT 兩個表之間沒有重複值的結果?(考慮給定的表結構)

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)
  1. SELECT *
    FROM employees e NATURAL JOIN department d;
    
  2. SELECT *
    FROM employees e JOIN department d;
    
  3. SELECT *
    FROM employees e NATURAL JOIN department d
    USING (e.department_id );
    
  4. SELECT * 
    FROM employees e FULL OUTER JOIN department d
    USING (department_id );

答案:D. FULL OUTER JOIN 將提供兩個表中的所有匹配行以及不匹配行,排除重複值。

檢查此處給出的表的結構並回答第 61 至 64 個問題。

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 bonus
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER
 JOB_ID 			  VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
SQL> desc locations
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 LOCATION_ID		 NOT NULL NUMBER(4)
 STREET_ADDRESS 		  VARCHAR2(40)
 POSTAL_CODE			  VARCHAR2(12)
 CITY			 NOT NULL VARCHAR2(30)
 STATE_PROVINCE 		  VARCHAR2(25)
 COUNTRY_ID			  CHAR(2)
SQL> desc locations
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 LOCATION_ID		 NOT NULL NUMBER(4)
 STREET_ADDRESS 		  VARCHAR2(40)
 POSTAL_CODE			  VARCHAR2(12)
 CITY			 NOT NULL VARCHAR2(30)
 STATE_PROVINCE 		  VARCHAR2(25)
 COUNTRY_ID			  CHAR(2)

61.關於以下查詢,以下說法正確的是?(選擇最合適的答案)

SELECT *
FROM bonus b, employees e
WHERE b.job_id  (+) = e.job_id ;
  1. 它將顯示所有員工獲得的所有獎金。
  2. 如果特定員工沒有收到任何獎金,它將為獎金列顯示 NULL。
  3. A 和 B 均正確
  4. 以上均不正確

答案:B. 等式左側的 (+) 表示它是 RIGHT OUTER JOIN,反之亦然。

62.您必須列出在名為“XYZ”的公司中還沒有員工的所有部門。以下哪個查詢將提供所需的結果?

  1. SELECT department_id , department_name FROM departments d NATURAL JOIN employees e;
    
  2. SELECT department_id , department_name FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id );
    
  3. SELECT department_id , department_name FROM employees e LEFT OUTER JOIN departments d
    USING (department_id );
    
  4. SELECT department_id , department_name FROM employees e RIGHT OUTER JOIN departments d
    ON (e.department_id  = d.department_id );

答案:D.

63.您需要提取一份報表,該報表顯示“尚未分配部門”給所有尚未分配到部門的員工。以下哪個選項將滿足此目的?

  1. SELECT nvl(department_id ,'No department yet')
    FROM employees e RIGHT OUTER JOIN departments d
    ON (e.department_id  = d.department_id );
    
  2. SELECT nvl(department_id ,'No department yet')
    FROM departments d LEFT OUTER JOIN employees e
    ON (e.department_id  = d.department_id );
    
  3. SELECT nvl(department_id ,'No department yet')
    FROM employees e LEFT OUTER JOIN departments d
    ON (e.department_id  = d.department_id );
    
  4. SELECT nvl(department_id ,'No department yet')
    FROM employees e FULL OUTER JOIN departments d
    ON (e.department_id  = d.department_id );

答案:C。

64.您需要提取一份報表,該報表顯示所有尚未分配到城市的部門。以下哪個查詢將提供所需的輸出?

  1. SELECT department_id , department_name FROM departments d NATURAL JOIN locations l; 
    
  2. SELECT department_id , department_name FROM departments d FULL OUTTER JOIN locations l
    ON (d.location_id = l.location_id); 
    
  3. SELECT  d.department_id , d.department_name FROM departments d JOIN locations l
    USING (location_id); 
    
  4. SELECT department_id , department_name FROM departments d LEFT OUTER JOIN locations l
    ON (d.location_id = l.location_id); 

答案:D.

65.在哪些兩種情況下應使用外部連線?

  1. 如果連線表的列具有 NULL 值
  2. 如果連線表具有 NOT NULL 列
  3. 如果連線表只有不匹配的資料
  4. 如果連線表既有匹配資料也有不匹配資料

答案:A,D. 當需要在結果中包含記錄但連線表中沒有對應的記錄時,會建立外部連線。這些記錄與 NULL 記錄匹配,以便將其包含在輸出中。

66.您需要查詢每個員工獲得的工資等級。您將使用以下哪個查詢?(考慮給定的表結構)

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 grade
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 GRADE 				  NUMBER
 LOSAL 				  NUMBER
 HISAL				  NUMBER
  1. SELECT employee_id , salary, grade
    FROM employees e JOIN grade g
    ON g.grade BETWEEN g.losal AND g.hisal
    
  2. SELECT employee_id , salary, grade
    FROM employees e FULL OUTER JOIN grade g
    WHERE g.grade > g.losal AND < g.hisal;
    
  3. SELECT employee_id , salary, grade 
    FROM employees e JOIN grade g
    ON (MIN(g.grade) = g.losal
    AND MAX(g.grade) = g.hisal);
    
  4. 以上均不正確

答案:A.

67.檢查給定的表結構。

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 bonus
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER
 JOB_ID 			  VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)

評估此 SQL 語句

SELECT e.employee_id , (.25* e.salary) + (.5 * e.commission_pct) + (.75 * b.bonus) as calc_val
FROM employees e, bonus b
WHERE e.employee_id  = b.employee_id ;

如果刪除計算中的所有括號會發生什麼?

  1. calc_val 列中顯示的值將更小。
  2. calc_val 列中顯示的值將更大。
  3. calc_val 列中沒有區別。
  4. 將報告錯誤。

答案:C。

68.考慮示例並檢查 EMPLOYEES、DEPARTMENTS 和 GRADE 表的結構。在什麼情況下您會使用非等值連線查詢?

Table EMPLOYEES Table DEPARTMENTS Table GRADE
  1. 查詢每個員工的等級
  2. 列出所有員工的姓名、job_id 和經理姓名
  3. 查詢員工的部門名稱。
  4. 查詢在行政部門工作且工資低於 30000 的員工人數

答案:A. 非等值連線根據除等值條件之外的任何條件建立關係。與非等值連線一起使用的範圍值必須是互斥的。

69.在哪些三種情況下您會使用 USING 子句?(選擇三個。)

  1. 您要建立非等值連線。
  2. 要連線的表具有多個 NULL 列。
  3. 要連線的表具有相同名稱但資料型別不同的列。
  4. 您要使用自然連線,但要限制連線條件中的列數。

答案:C,D。JOIN … USING 方法類似於 NATURAL JOIN 方法,只是在 USING 子句中指定了公共列。不能在 USING 子句中包含條件來指示表之間的關係。此外,不能對 USING 子句中指定的公共列使用列限定符。

70.如果 EMPLOYEES 和 BONUS 表有兩個名稱相同的列,即:- SALARY 和 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)
SQL> desc bonus
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER
 JOB_ID 			  VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
  1. SELECT * FROM employees E JOIN bonus B on (salary, job_id )
  2. SELECT * FROM employees E NATURAL JOIN bonus B on (salary, job_id )
  3. SELECT * FROM employees E JOIN bonus B USING (salary, job_id )
  4. SELECT * FROM employees E JOIN bonus B on (salary, job_id )

答案:B,C。

71.檢查給定的表結構。

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)

檢查以下兩個 SQL 語句

查詢 1
SELECT first_name,department_id 
FROM employees E JOIN departments D
USING (department_id );
查詢 2
SELECT first_name,department_id 
FROM employees E NATURAL JOIN departments D
USING (department_id );

關於結果,哪個陳述是正確的?

  1. 只有查詢 1 成功執行並給出所需的結果。
  2. 只有查詢 2 成功執行並給出所需的結果。
  3. 查詢 1 和查詢 2 都成功執行並給出不同的結果。
  4. 查詢 1 和查詢 2 都成功執行並給出相同所需的結果。

答案:D.

72.您需要生成一個報告,顯示部門位置以及 2013 年 1 月 20 日之前的所有聘用員工的姓名。

Table DEPARTMENTS Table EMPLOYEES Table LOCATIONS

您發出以下查詢

SELECT department_name  , first_name||' '||last_name
FROM employees E JOIN department d
ON ( hire_date < '20-JAN-2013')
JOIN locations L
ON  (l.location_id = d.location_id) ;

關於上述查詢,哪個陳述是正確的?

  1. 它成功執行並給出所需的結果。
  2. 它成功執行,但沒有給出所需的結果。
  3. 它產生錯誤,因為表的連線順序不正確。
  4. 它產生錯誤,因為等值連線和非等值連線條件不能在同一 SELECT 語句中使用。

答案:B。

73.檢查 EMPLOYEES 表的結構

Table EMPLOYEES

您想知道是否使用不同的 EMPLOYEE_ID 輸入了任何員工的詳細資訊多次,方法是列出所有重複的姓名。您可以使用哪種方法獲得所需的結果?

  1. 自連線
  2. 自身連線的全外部連線
  3. 自身連線的左外部連線
  4. 自身連線的右外部連線

答案:A。當必須將表連線到自身以檢索所需資料時,使用自連線。在 FROM 子句中需要表別名才能執行自連線。

檢查 DEPARTMENTS 和 LOCATIONS 表的結構,並回答以下第 74 和 75 題。

SQL> DESC departments
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 DEPARTMENT_ID		 NOT NULL NUMBER(4)
 DEPARTMENT_NAME	 NOT NULL VARCHAR2(30)
 MANAGER_ID			  NUMBER(6)
 LOCATION_ID			  NUMBER(4)
SQL> desc locations
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 LOCATION_ID		 NOT NULL NUMBER(4)
 STREET_ADDRESS 		  VARCHAR2(40)
 POSTAL_CODE			  VARCHAR2(12)
 CITY			 NOT NULL VARCHAR2(30)
 STATE_PROVINCE 		  VARCHAR2(25)
 COUNTRY_ID			  CHAR(2)

74.您需要找出尚未分配任何位置的部門。哪個查詢會給出所需的結果?

  1. SELECT d.department_id , d.department_name FROM departments d JOIN locations l
    ON (d.location_id = l.location_id);
    
  2. SELECT d.department_id , d.department_name FROM departments d RIGHT OUTER JOIN locations l
    ON (d.location_id = l.location_id);
    
  3. SELECT d.department_id , d.department_name FROM departments d FULL JOIN locations l
    ON (d.location_id = l.location_id);
    
  4. SELECT d.department_id , d.department_name FROM departments d LEFT OUTER JOIN locations l
    ON (d.location_id = l.location_id);

答案:B。

75.您想列出所有未位於任何位置的部門以及部門名稱。評估以下查詢

SELECT d.department_id , d.department_name  ,l.location_id, l.city
FROM departments D __________________   location L 
ON (d.location_id = l.location_id);

在上述查詢中的空白處可以使用哪些兩個 JOIN 選項來給出正確的輸出?

  1. JOIN
  2. NATURAL JOIN
  3. LEFT OUTER JOIN
  4. RIGHT OUTER JOIN

答案:A、C。

76.您需要生成一個報告,顯示所有部門 ID,以及相應的員工(如果有)和獎金詳細資訊(如果有),適用於所有員工。哪個 FROM 子句給出所需的結果?(考慮給定的表結構)

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 bonus
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER
 JOB_ID 			  VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
  1. FROM departments LEFT OUTER JOIN employees USING (department_id ) FULL OUTER JOIN bonus
  2. FULL OUTER JOIN department USING (department_id );
  3. FROM bonus JOIN employees USING (job_id )
  4. FROM employees FULL OUTER JOIN departments FULL OUTER JOIN bonus

答案:A.

77. 檢查以下圖表

Table BONUS Table DEPARTMENTS Table EMPLOYEES

您想生成一個報告,列出員工的 ID、他們相應的佣金和部門(如果有),無論佣金是否存在。評估以下查詢

SELECT e.employee_id , bonus, department_name FROM bonus b_____________ employees
USING (job_id ) ____________ departments 
USING (department_id )
WHERE commission_pct  IS NOT NULL;

在上述查詢中的空白處使用哪種連線組合才能給出正確的輸出?

  1. JOIN; LEFT OUTER JOIN
  2. FULL OUTER JOIN; FULL OUTER JOIN
  3. RIGHT OUTER JOIN; LEFT OUTER JOIN
  4. LEFT OUTER JOIN; RIGHT OUTER JOIN

答案:A.

78.預測以下查詢的結果。

SELECT e.salary, bonus
FROM employees E JOIN bonus b
USING (salary,job_id ); 
  1. 它成功執行。
  2. 它丟擲錯誤,因為 SELECT 中的 bonus 未加別名
  3. 它丟擲錯誤,因為 USING 子句不能超過 1 列。
  4. 它成功執行,但結果不正確。

答案:D.

檢視圖表並檢查 EMPLOYEES、DEPARTMENTS、LOCATIONS 和 BONUS 的結構。回答以下第 79 和 80 題

Table BONUS Table DEPARTMENTS Table EMPLOYEES Table GRADE Table LOCATIONS

79.您需要列出蘇黎世市的所有部門。您執行以下查詢

SELECT D.DEPARTMENT_ID , D.DEPARTMENT_NAME  , L.CITY
FROM departments D JOIN LOCATIONS L
USING (LOC_ID,CITY) 
WHERE L.CITY = UPPER('ZURICH');

預測上述查詢的結果。

  1. 它成功執行。
  2. 它給出錯誤,因為在 SELECT 語句中對 CITY 使用了限定符。
  3. 它給出錯誤,因為 SELECT 中的列名不匹配
  4. 它給出錯誤,因為 USING 子句包含 CITY,它不是匹配的列。

答案:D。USING 子句中只能使用匹配的列名。

80.回答以下給定查詢後的問題

 
SELECT e.first_name, d.department_id , e.salary, b.bonus
FROM bonus b join employees e
USING (job_id )
JOIN department d
USING (department_id )
WHERE d.loc = 'Zurich';

您需要提取一份報告,該報告提供名為“ABC”的公司員工的姓名、部門編號、工資和獎金。以下哪個查詢可以解決此問題?

  1. SELECT e.first_name, d.department_id , e.salary, b.bonus
    FROM bonus b join employees e join departments d
    on (b.job_id  = e.job_id )
    on (e.department_id =d.department_id )
    WHERE d.loc = 'Zurich';
    
  2. SELECT e.first_name, d.department_id , e.salary, b.bonus
    FROM bonus b join employees e
    on (b.job_id  = e.job_id )
    JOIN department d
    on (e.department_id =d.department_id )
    WHERE d.loc = 'Zurich';
    
  3. SELECT e.first_name, d.department_id , e.salary, b.bonus
    FROM employees e join bonus b
    USING (job_id )
    JOIN department d
    USING (department_id )
    WHERE d.loc = 'Zurich';
    
  4. 以上均不正確

答案:C。查詢 A 會丟擲語法錯誤,查詢 B 會在 bonus 和 department 之間丟擲無效識別符號錯誤。

檢查以下給出的圖表,並回答以下第 81 至 85 題。

Table BONUS Table DEPARTMENTS Table EMPLOYEES

81.您需要找到那些工資超過 20000 的員工的經理姓名。以下哪個查詢可以用於獲取所需的結果?

  1. SELECT e.employee_id  "Employee", salary, employee_id , 
    FROM employees E JOIN employees M
    USING (e.manager_id  = m.employee_id )
    WHERE e.salary >20000; 
    
  2. SELECT e.employee_id  "Employee", salary, employee_id , 
    FROM employees E JOIN employees M
    USING (e.manager_id)
    WHERE e.salary >20000; 
    
  3. SELECT e.employee_id  "Employee", salary, employee_id , 
    FROM employees E  NATURAL JOIN employees M
    USING (e.manager_id = m.employee_id )
    WHERE e.salary >20000; 
    
  4. SELECT e.employee_id  "Employee", salary, employee_id , 
    FROM employees E JOIN employees M
    ON (e.manager_id = m.employee_id )
    WHERE e.salary >20000; 

答案:D.

82.您發出以下查詢

SELECT e.employee_id ,d.department_id 
FROM employees e NATURAL JOIN department d NATURAL JOIN bonus b
WHERE department_id  =100;

關於此查詢的結果,哪個陳述是正確的?

  1. 它成功執行。
  2. 它產生錯誤,因為 NATURAL 連線只能與兩個表一起使用。
  3. 它產生錯誤,因為 NATURAL 連線中使用的列不能有限定符。
  4. 它產生錯誤,因為 NATURAL 連線中使用的所有列都應該有限定符。

答案:C。

83.您想顯示所有員工姓名及其相應的經理姓名。評估以下查詢

SELECT e.first_name "EMP NAME", m.employee_name "MGR NAME"
FROM employees e ______________ employees m
ON e.manager_id = m.employee_id ;

在上述查詢中的空白處可以使用哪個 JOIN 選項來獲取所需的輸出?

  1. 簡單內部 JOIN
  2. FULL OUTER JOIN
  3. LEFT OUTER JOIN
  4. RIGHT OUTER JOIN

答案:C。左外部連線包含連線左側列出的表中的所有記錄,即使在連線操作中未找到與其他表的匹配項也是如此。

考慮以下圖表和以下查詢以回答問題 84 和 85。(假設表 department 的列為 manager_id 和 department_name)

Table DEPARTMENTS
 
Select *
FROM employees e JOIN department d
ON (e.employee_id  = d.manager_id);

84.您需要顯示一個句子“(first_name)(last_name) 是 (department_name) 部門的經理”。以下哪個 SELECT 語句將成功替換上述查詢中的“*”以滿足此要求?

  1. SELECT e.first_name||' '||e.last_name||' is manager of the '||d.department_name||' department.' "Managers"
  2. SELECT e.first_name, e.last_name||' is manager of the '||d.department_name||' department.' "Managers"
  3. SELECT e.last_name||' is manager of the '||d.department_name||' department.' "Managers"
  4. 以上均不正確

答案:A.

85.如果我們在上述查詢中省略在 ON 子句後寫入括號“()”,會發生什麼情況?

  1. 它只會給出員工的姓名,並且經理的姓名將從結果集中排除
  2. 它將給出與括號“()”相同的結果
  3. 它會給出 ORA 錯誤,因為在使用 JOIN..ON 子句時必須寫入括號“()”
  4. 以上均不正確

答案:B。括號不是必需的,但使用它們可以清楚地顯示其中的條件。

86.以下哪個查詢建立笛卡爾連線?

  1. SELECT title, authorid FROM books, bookauthor;
  2. SELECT title, name FROM books CROSS JOIN publisher;
  3. SELECT title, gift FROM books NATURAL JOIN promotion;
  4. 以上所有

答案:A,B。兩個表之間的笛卡爾連線返回表中每一行所有可能的組合。可以透過在查詢中不包含連線操作或使用 CROSS JOIN 來生成笛卡爾連線。

87.以下哪個運算子不允許在外連線中使用?

  1. AND
  2. =
  3. OR
  4. >

答案:C。Oracle 丟擲異常“ORA-01719:外連線運算子(+)不允許在 OR 或 IN 的運算元中使用”

88.以下哪個查詢包含等值連線?

  1. SELECT title, authorid FROM books, bookauthor WHERE books.isbn = bookauthor.isbn AND retail > 20;
  2. SELECT title, name FROM books CROSS JOIN publisher; 
  3. SELECT title, gift FROM books, promotion WHERE retail >= minretail AND retail <= maxretail;
  4. 以上均不正確

答案:A。當連線來自兩個不同表的記錄的資料完全匹配時(即,等值條件建立關係),就會建立等值連線。

89.以下哪個查詢包含非等值連線?

  1. SELECT title, authorid FROM books, bookauthor WHERE books.isbn = bookauthor.isbn AND retail > 20;
  2. SELECT title, name FROM books JOIN publisher USING (pubid);
  3. SELECT title, gift FROM books, promotion WHERE retail >= minretail AND retail <= maxretail;
  4. 以上均不正確

答案:D。非等值連線根據不等式表示式匹配來自不同表的列值。源表中每一行中連線列的值與目標表中的相應值進行比較。如果基於不等式運算子的連線中使用的表示式計算結果為真,則會找到匹配項。構建此類連線時,會執行非等值連線。非等值連線使用 JOIN..ON 語法指定,但連線條件包含不等式運算子而不是等號。

90.以下 SQL 語句包含哪種型別的連線?

SELECT title, order#, quantity
FROM books FULL OUTER JOIN orderitems
ON books.isbn = orderitems.isbn;
  1. 等值
  2. 自連線
  3. 非等值
  4. 外連線

答案:D. 全外部連線包含兩個表中的所有記錄,即使在另一個表中找不到對應的記錄。

91.以下哪個查詢有效?

  1. SELECT b.title, b.retail, o.quantity FROM books b NATURAL JOIN orders od NATURAL JOIN orderitems o WHERE od.order# = 1005;
  2. SELECT b.title, b.retail, o.quantity FROM books b, orders od, orderitems o WHERE orders.order# = orderitems.order# AND orderitems.isbn=books.isbn AND od.order#=1005;
  3. SELECT b.title, b.retail, o.quantity FROM books b, orderitems o WHERE o.isbn = b.isbn AND o.order#=1005;
  4. 以上均不正確

答案:C。如果連線中的表具有別名,則所選列必須使用別名引用,而不是使用實際的表名。

92.給定以下查詢。

SELECT zip, order#
FROM customers NATURAL JOIN orders;

以下哪個查詢等價?

  1. SELECT zip, order# FROM customers JOIN orders WHERE customers.customer# = orders.customer#;
  2. SELECT zip, order# FROM customers, orders WHERE customers.customer# = orders.customer#;
  3. SELECT zip, order# FROM customers, orders WHERE customers.customer# = orders.customer# (+);
  4. 以上皆非

答案:B。自然連線指示 Oracle 識別源表和目標表之間名稱相同的列。

93.檢查給定的表結構。以下 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)
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)
1. SELECT e.first_name, d.department_name
2. FROM employees  e, department d
3. WHERE e.department_id=d.department_id
  1. 第 1 行
  2. 第 2 行
  3. 第 3 行
  4. 無錯誤

答案:A。如果查詢在連線條件中使用別名,則它們的列應使用別名進行引用。

94.給定以下查詢

SELECT lastname, firstname, order#
FROM customers LEFT OUTER JOIN orders
USING (customer#)
ORDER BY customer#;

以下哪個查詢返回相同的結果?

  1. SELECT lastname, firstname, order# FROM customers c OUTER JOIN orders o ON c.customer# = o.customer# ORDER BY c.customer#;
  2. SELECT lastname, firstname, order# FROM orders o RIGHT OUTER JOIN customers c ON c.customer# = o.customer# ORDER BY c.customer#;
  3. SELECT lastname, firstname, order# FROM customers c, orders o WHERE c.customer# = o.customer# (+) ORDER BY c.customer#;
  4. 以上均不正確

答案:B,C。

95.以下哪些陳述是正確的?

  1. 組函式不能用於來自多個數據源的資料。
  2. 如果查詢中連線了多個表,並且包含相同的列,則 Oracle 只選擇其中一個。
  3. 自然連線用於根據相同的列連線來自兩個表的行。
  4. A 和 B

答案:C。組函式可以在使用 Oracle 連線的查詢上使用。不明確的列必須使用限定符引用。

96.以下 SQL 語句中的哪一行會引發錯誤?

1. SELECT name, title
2. FROM books JOIN publisher
3. WHERE books.pubid = publisher.pubid
4. AND
5. cost < 45.95
  1. 第 1 行
  2. 第 2 行
  3. 第 3 行
  4. 第 4 行

答案:C。由於表使用 JOIN 關鍵字連線,因此等值條件應使用 USING 子句編寫,而不是 WHERE 子句。

97.給定以下查詢

SELECT title, gift
FROM books CROSS JOIN promotion;

以下哪個查詢等價?

  1. SELECT title, gift
    FROM books NATURAL JOIN promotion;
    
  2. SELECT title
    FROM books INTERSECT
    SELECT gift
    FROM promotion;
    
  3. SELECT title
    FROM books UNION ALL
    SELECT gift
    FROM promotion;
    
  4. SELECT title, gift
    FROM books, promotion;
    

答案:D。笛卡爾連線與交叉連線相同。

98.如果 CUSTOMERS 表包含 7 條記錄,而 ORDERS 表包含 8 條記錄,則以下查詢產生多少條記錄?

SELECT *
FROM customers CROSS JOIN orders;
  1. 0
  2. 56
  3. 7
  4. 15

答案:B。交叉連線是兩個表中包含的行之間的叉積。

99.以下哪個 SQL 語句無效?

  1. SELECT b.isbn, p.name
    FROM books b NATURAL JOIN publisher p;
    
  2. SELECT isbn, name
    FROM books b, publisher p
    WHERE b.pubid = p.pubid;
    
  3. SELECT isbn, name
    FROM books b JOIN publisher p
    ON b.pubid = p.pubid;
    
  4. SELECT isbn, name
    FROM books JOIN publisher
    USING (pubid);
    

答案:A。不明確的列必須使用表限定符引用。

100.以下哪個選項列出了由名為“Printing Is Us”的出版商出版的所有書籍?

  1. SELECT title
    FROM books NATURAL JOIN publisher
    WHERE name = 'PRINTING IS US';
    
  2. SELECT title
    FROM books, publisher
    WHERE pubname = 1;
    
  3. SELECT *
    FROM books b, publisher p
    JOIN tables ON b.pubid = p.pubid
    WHERE name = 'PRINTING IS US';
    
  4. 以上皆非

答案:A。假設列 NAME 不包含在 BOOKS 表中,則查詢 A 有效。

101.以下哪個 SQL 語句無效?

  1. SELECT isbn
    FROM books
    MINUS
    SELECT isbn
    FROM orderitems;
    
  2. SELECT isbn, name
    FROM books, publisher
    WHERE books.pubid (+) = publisher.pubid (+);
    
  3. SELECT title, name
    FROM books NATURAL JOIN publisher
    
  4. 以上所有 SQL 語句均有效。

答案:B。查詢 B 丟擲異常“ORA-01468:謂詞只能引用一個外連線表”。

102.關於兩個表之間的外連線,以下哪個陳述是正確的?

  1. 如果使用 WHERE 子句建立表之間的關係,則兩個表都可以包含外連線運算子。

  2. 為了在結果中包含不匹配的記錄,該記錄將與不足表中的空記錄配對。
  3. RIGHT、LEFT 和 FULL 關鍵字等效。
  4. 以上所有

答案:B。

103. 下面的 SQL 語句中哪一行會引發錯誤?

1. SELECT name, title
2. FROM books b, publisher p
3. WHERE books.pubid = publisher.pubid
4. AND
5. (retail > 25 OR retail-cost > 18.95);
  1. 第 1 行
  2. 第 3 行
  3. 第 4 行
  4. 第 5 行

答案:B. 由於查詢中使用的表有限定符,因此必須使用相同的限定符來引用列。

104. 表別名的最大字元數是多少?

  1. 10
  2. 155
  3. 255
  4. 30

答案:D. 表別名最多可以包含 30 個字元。

105. 以下哪個 SQL 語句有效?

  1. SELECT books.title, orderitems.quantity
    FROM books b, orderitems o
    WHERE b.isbn= o.ibsn;
  2. SELECT title, quantity
    FROM books b JOIN orderitems o;
  3. SELECT books.title, orderitems.quantity
    FROM books JOIN orderitems
    ON books.isbn = orderitems.isbn;
    
  4. 以上皆非

答案:C。

廣告