
- SQL 證書學習資料
- SQL - 簡介
- SQL - SQL 考試大綱
- SQL - SQL SELECT 語句
- SQL - 限制和排序資料
- SQL - 使用單行函式
- SQL - 條件表示式
- SQL - 使用分組函式
- SQL - 從多個表獲取資料
- SQL - 使用子查詢解決查詢
- SQL - 使用集合運算子
- SQL - 操作資料
- SQL - 使用 DDL 語句
- SQL - 建立其他模式物件
- SQL 證書題庫
- SQL - SQL SELECT 語句
- SQL - 限制和排序資料
- SQL - 使用單行函式
- SQL - 轉換函式
- SQL - 條件表示式
- SQL - 使用分組函式
- SQL - 從多個表獲取資料
- SQL - 使用子查詢解決查詢
- SQL - 使用集合運算子
- SQL - 操作資料
- SQL - 使用 DDL 語句
- SQL - 建立其他模式物件
- SQL 證書模擬考試
- SQL 證書 - 模擬考試
- SQL 證書有用資源
- SQL 證書 - 有用資源
- SQL 證書 - 討論
SQL - 從多個表獲取資料問題
1.以下哪個與關係資料庫無關?
- 選擇
- 投影
- 連線
- 以上均不正確
答案:D. 選項 A、B 和 C 是 Oracle 關係資料庫的主要功能。
2.使用哪種方法可以編寫包含來自多個表的列的查詢?
- SELECT
- GROUP BY
- ORDER BY
- JOINS
答案:D. 在 Oracle 中,連線用於連線多個表並投影來自多個表的列資料。
3.以下哪種方法是連線多個表最常見的方法之一?
- 雜湊連線
- 等值連線
- 自連線
- 交叉連線
答案:B. 等值連線是連線型別之一,也是連線多個表最常見和最簡單的技術。等值連線也稱為簡單連線或內部連線。等值連線涉及主鍵和外部索引鍵。
4.如果列值落在不等式運算子定義的範圍內,將使用以下哪一項連線其他表的行?
- 等值連線
- 簡單連線
- 非等值連線
- 以上均不正確
答案:C. 等值連線使用等式運算子連線行,非等值連線使用不等式運算子。
5.關於 Oracle 連線,以下哪個陳述是正確的?
- 結果集中包含 NULL 值
- 僅獲取具有匹配條件的行
- 獲取任何一個表中存在的所有行
- 以上均不正確
答案:B. 使用連線時,會排除 NULL 值和公共連線列中不同的條目。
6.以下哪個可以用於將表的行與同一表的其他行連線?
- 等值連線
- 非等值連線
- 外部連線
- 自連線
答案:D. 關聯基於具有邏輯且通常是層次關係的列。
7.關於 Oracle DB 中兩個表的笛卡爾積連線,哪個是正確的?
- 必須避免,因為它成本高且未最佳化
- 當一個表中的每一行都與第二個表中的所有行連線時形成
- A 和 B 均正確
- 以上均不正確
答案:B. 笛卡爾積連線通常是由於缺少或不充分的連線條件導致的。它只是兩個表的叉積。
8.以下哪項是 Oracle DB 中的基本連線型別之一?
- 外部連線
- 自連線
- 等值連線
- 以上所有
答案:C. 等值連線和非等值連線是 Oracle DB 中的兩種基本連線型別。
9.在 Oracle DB 中,為了獲取非笛卡爾積結果,在源表和目標表之間使用連線的主要條件是什麼?
- 沒有條件
- 兩個表中至少應有一個列是公共的。
- 兩個連線表中列的名稱應相同才能使用連線
- 以上均不正確
答案:B. 表必須透過關聯兩個實體的公共列連線。在公共列上連線的表會產生非笛卡爾積。
10. 以下哪個可以用於在一個 SQL 查詢中從多個表中獲取行?
- SELECT
- WHERE
- FROM
- 等值連線
答案:D. 等值連線也稱為簡單連線或內部連線。等值連線涉及主鍵和外部索引鍵。
11.關於 Oracle 連線中的源表和目標表,哪個是正確的?
- 它們必須至少有一個同名的列
- 所有列都應具有相同的名稱和相同的資料型別才能連線兩個表
- 源表和目標表不能互換,並且是位置特定的
- 以上均不正確
答案:D. 源表和目標表可以互換,並且其位置不是固定的。根據查詢中使用的連線型別,結果可能不同或保持相同。
12.關於 Oracle DB 中的自然連線,哪個是正確的?
- 源表和目標表的列名應相同
- 如果源表和目標表的列名不同,Oracle 會隱式執行必要的操作
- NATURAL JOINS、USING 和 ON 是與自然連線相關的關鍵字
- 以上所有
答案: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';
- 沒有區別
- 這兩種情況下的結果不同
- 兩個查詢在執行時都會給出 ORA 錯誤
- 以上均不正確
答案:B. 使用 NATURAL JOIN 時,源表和目標表可以互換,從而產生關係上不同的結果集。
14.關於 Oracle DB 中的 NATURAL JOIN,以下哪個選項是正確的?
- 使用 NATURAL JOIN 時,必須提及兩個表中所有列的名稱
- 只有當兩個表的所有列的名稱都相同時才能使用 NATURAL JOIN
- 只有當用戶指定源表和目標表的列時,NATURAL JOIN 中才會發生連線。
- 使用 NATURAL JOINS 時,無需提及列。
答案:D. 使用 NATURAL JOIN 時,會隱式連線來自源表和目標表的列。NATURAL JOIN 是一種 JOIN 操作,它根據要連線的兩個表中公共列為您建立隱式連線子句。公共列是指在兩個表中具有相同名稱的列。
15. NATURAL JOIN 和 JOIN..ON 連線有什麼區別?
- 兩者之間沒有區別
- JOIN..ON 將源表和目標表連線到具有相同名稱的特定列上
- NATURAL JOIN 隱式連線來自源表和目標表的所有匹配列
- 以上均不正確
答案:B, C. 自然連線的連線條件基本上是所有具有相同名稱的列的等值連線。使用 ON 子句指定任意條件或指定要連線的列。連線條件與其他搜尋條件分開。ON 子句使程式碼易於理解。
16.關於 Oracle DB 中的 JOIN..ON 子句,哪個是正確的?
- 它不依賴於源表和目標表中的列是否具有相同的名稱
- 只有源表和目標表中具有相同名稱的列才能與此子句一起使用
- 它是 NATURAL JOIN 的一種格式
- 以上所有
答案:A, C. 自然連線的連線條件基本上是所有具有相同名稱的列的等值連線。使用 ON 子句指定任意條件或指定要連線的列。連線條件與其他搜尋條件分開。ON 子句使程式碼易於理解。
17. 資料庫設計人員將兩個表中的鍵(唯一)列命名不同。連線這些表時,以下哪項將是最佳實踐?
- JOIN..ON
- NATURAL JOIN 或 JOIN...ON 子句
- A 和 B 均正確
- 以上均不正確
答案:A. 在這種情況下使用 NATURAL JOINS 會產生意外的結果,因為存在隱式搜尋具有相同名稱的列,而這裡不存在。
18.以下哪個可以用於在 Oracle DB 中獲取源表和目標表之間匹配行以及非匹配行?
- EQUI-JOIN
- SELF-JOIN
- NATURAL JOIN
- OUTER-JOIN
答案:D. 當需要在結果中包含記錄而沒有連線表中的對應記錄時,就會建立外部連線。這些記錄與 NULL 記錄匹配,以便將其包含在輸出中。
19. 在 Oracle DB 中,笛卡爾積連線也被稱為什麼?
- 等值連線
- 反連線
- 交叉連線
- 以上均不正確
答案: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;
- 兩個表中同名的公共列 DEPARTMENT_ID 將在結果集中出現兩次
- 所有具有相同名稱並使用 NATURAL JOIN 連線的列都將在結果集中出現兩次
- 結果集將對來自兩個表的每一對同名列只有一個列
- 以上均不正確
答案:C. NATURAL JOIN 關鍵字不需要條件來建立兩個表之間的關係。但是,必須存在一個公共列。列限定符不能與 NATURAL JOIN 關鍵字一起使用。
21.Oracle 資料庫中 NATURAL JOIN 和 EQUI-JOIN 的區別是什麼?
- 沒有區別
- 從兩者獲取的結果集方面,它們是相同的
- A 和 B 均正確
- 以上均不正確
答案:D. NATURAL JOIN 連線所有名稱相同的列,而 EQUI-JOIN 要求在 SQL 查詢中明確提及列。
22.Oracle 資料庫中的 INNER JOIN 是什麼?
- 給出兩個表之間匹配記錄的連線稱為 INNER JOIN
- 內部聯接可以使用 <、>、<> 等運算子
- A 和 B 均正確
- 以上均不正確
答案:C. 連線可以是內部連線,其中僅返回在所有表中都有匹配記錄的記錄;也可以是外部連線,其中可以返回記錄,無論在連線中是否有匹配記錄。
23.Oracle 資料庫中 INNER JOIN 和 EQUI-JOIN 的區別是什麼?
- 它們在語法和獲得的結果集方面是相同的。
- INNER JOIN 是 EQUI-JOIN 的一個子集
- INNER JOIN 可以使用 <、>、<> 以及 "=" 等運算子,而 EQUI-JOIN 僅使用 "=" 運算子
- 以上所有
答案:C. EQUI-JOIN 是一種 INNER JOIN,在連線條件中包含 "=" 運算子,而 INNER JOIN 可以包含等式和不等式運算子
24.關於 Oracle 資料庫中 ANSI SQL: 1999 語法中的 NATURAL JOIN,哪些說法是正確的?
- 使用等號運算子 (=)
- 與傳統語法相比,它們獲取不同的結果
- ANSI SQL 語法在 SQL 查詢中使用 NATURAL JOIN 等詞
- 以上均不正確。
答案: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 ;
- 兩個表中的 department_id 之間存在外部連線,等效於 ANSI SQL 中的右外部連線
- 兩個表中的 department_id 之間存在外部連線,等效於 ANSI SQL 中的左外部連線
- 它獲取 employees 表中所有 department_id 的記錄,無論它們是否匹配
- 它獲取 department 表中所有 department_id 的記錄,無論它們是否匹配
答案:A、D. 條件 e.department_id (+) = d.department_id 表示它將執行右外部連線,並且將顯示 department 表中的所有 department_id,無論它們是否匹配
26.以下哪種語法模型在全球軟體系統中得到廣泛使用?
- ANSI SQL: 1999
- 傳統的 Oracle 語法和 ANSI SQL: 1999 語法
- 傳統的 Oracle 語法
- 所有選項
答案:C. 儘管 ANSI SQL: 1999 語法不像傳統的 Oracle 語法那樣使用廣泛,但它仍然是 Oracle SQL 中可能使用的語法之一。
27.關於 Oracle 資料庫中的笛卡爾積,以下哪種說法是正確的?
- 如果連線的表數為 'N',則如果連線數為 N-1,則不會執行笛卡爾積
- 如果連線的表數為 'N',則如果連線數為 N,則執行笛卡爾積
- 如果連線的表數為 'N',則如果連線數為 N+1,則執行笛卡爾積
- 如果連線的表數為 '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 ;
- 沒有為表使用別名。
- 此處未使用 RIGHT OUTER JOIN,因此它會引發錯誤
- "+" 應該位於等式條件的右側,而不是左側
- 應在條件中與 department_id 一起使用表別名以消除歧義命名
答案:D. 如果沒有表別名,Oracle 將無法推匯出正在連線的列的來源,因此在執行時會引發歧義錯誤。
29.Oracle 資料庫中使用什麼來避免列歧義問題?
- ;
- ,
- .
- /
答案: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 ;
- 它提供了不在任何部門的員工的詳細資訊
- 它提供了沒有員工的部門的詳細資訊
- 它提供了所有部門的詳細資訊,無論它們是否有員工
- 它提供了在“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 ;
- 它將給出兩個表中所有具有相同 department_id 的匹配值
- 它將給出 employees 表中的所有列以及 departments 表中的前 100 行
- 它將給出 ORA 錯誤:“b.department_id”無效識別符號
- 以上選項均不正確
答案:C. WHERE 子句中應與 FROM 子句中宣告的相同別名
32.關於表連線中的 USING 和 ON 子句,以下哪種說法是正確的?(如果適用,請選擇多個選項)
- ON 子句可用於根據資料型別相同的列連線表,但不一定需要名稱相同
- USING 和 ON 子句僅用於等值連線和非等值連線
- ON 子句不能使用多個條件
- 可以在 USING..ON 子句之後編寫 WHERE 子句以應用其他條件
答案:A、D. JOIN ... USING 方法類似於 NATURAL JOIN 方法,只是公共列在 USING 子句中指定。USING 子句中不能包含條件來指示表是如何關聯的。此外,對於 USING 子句中指定的公共列,不能使用列限定符。JOIN... ON 方法根據指定的條件連線表。FROM 子句中的 JOIN 關鍵字指示要連線的表,而 ON 子句指示兩個表是如何關聯的。如果要連線的表在每個表中沒有名稱相同的公共列,則必須使用此方法。
33.Oracle 資料庫中可以使用 JOIN 連線多少個表?
- 1
- 2
- 255
- 沒有限制
答案:D. 目前對參與連線的表數沒有限制。
34.當在 SQL 語句中使用多個連線時,哪些說法是正確的?
- 連線從左到右進行評估
- 連線從右到左進行評估
- 連線的評估過程中沒有優先順序
- 以上均不正確
答案: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;
- 使用 NATURAL JOIN 連線多個表是一個更好的選擇,並且可以產生準確的結果
- 使用 NATURAL JOIN 連線多個表時,錯誤機率非常低
- 連線多個表時,USING..JOIN..ON 子句比 NATURAL JOIN 提供更準確的結果
- 當使用 NATURAL JOIN 時,Oracle 會隱式連線多個表,因此使用 NATURAL JOIN 是一個好習慣
答案:C. 使用 NATURAL JOIN 會建立行的笛卡爾積,並且結果集不可靠,容易出錯。
36.關於 Oracle 資料庫中的 JOIN..ON 子句,哪些說法是正確的?
- 與連線多個表時的 NATURAL JOIN 相比,它們不太可靠
- JOIN..ON 子句類似於 WHERE 子句,它使用條件限制行
- 使用 JOIN..ON 子句時,必須使用額外的 WHERE 子句
- 以上均不正確
答案: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.關於上述查詢,哪些說法是正確的?
- 它會引發 ORA 錯誤,因為缺少必需的 WHERE 子句
- JOIN..ON 子句不能包含多個條件
- 查詢會忽略最後一個條件並執行,不會引發 ORA 錯誤
- JOIN..ON 子句可以按上述形式編寫以新增更多條件。
答案:D. 可以省略 WHERE 子句,並將相關條件直接新增到 JOIN..ON 子句中,如給定查詢所示
38.關於給定的查詢,如果將使用的 JOIN 替換為 NATURAL JOIN,則會引發錯誤。此錯誤的原因是什麼?
- 當使用 NATURAL JOIN 時,必須使用 WHERE 子句,省略它會引發錯誤
- ON 子句應替換為 USING 子句
- NATURAL、JOIN 和 USING 在同一個連線子句的上下文中是互斥的
- 查詢在連線時不能組合 NATURAL JOIN 和 ON(或 USING)子句。
答案:C、D。
39.關於 Oracle 資料庫中的非等值連線,哪些說法是正確的?
- 它們基於 NON-EQUI JOIN 關鍵字連線
- 它們使用 JOIN..ON 子句和 "=" 符號
- 當提到的不等式的結果計算為真時,將獲得結果。
- 以上均不正確
答案: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);
- 它將引發 ORA 錯誤,因為 ON 子句中的條件不正確。
- 由於語法錯誤,它將引發 ORA 錯誤,因為 ON 子句中沒有等號“=”
- 它將成功執行並給出滿足條件的員工的姓、名和員工 ID。
- 非等值連線只能用於顯示不等式,而不能用於顯示範圍。
答案:C。
41.您需要查詢一份報告,該報告列出薪資大於 20000 且位於日內瓦任何部門的員工的姓和名。以下哪個查詢可以給出所需的結果?
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');
SELECT e.first_name, e.last_name FROM employees e JOIN departments d ON (e.department_id = d.department_id and e.salary >=20000);
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';
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 連線表時,在以下哪些條件下會返回一行?
- 不等式匹配操作的結果為真
- 不等式匹配操作的結果為 0
- 不等式匹配操作的結果為 1
- 不等式匹配操作的結果為假
答案:A. 當從兩個不同表中連線記錄的資料完全匹配時(即,相等條件建立了關係),就會建立相等連線。傳統方法在 WHERE 子句中使用等號作為比較運算子。JOIN 方法可以使用 NATURAL JOIN、JOIN ... USING 或 JOIN ... ON 關鍵字。
41.您需要查詢一份報告,該報告列出薪資大於 20000 且位於日內瓦任何部門的員工的姓和名。以下哪個查詢可以給出所需的結果?
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');
SELECT e.first_name, e.last_name FROM employees e JOIN departments d ON (e.department_id = d.department_id and e.salary >=20000);
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';
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 連線表時,在以下哪些條件下會返回一行?
- 不等式匹配操作的結果為真
- 不等式匹配操作的結果為 0
- 不等式匹配操作的結果為 1
- 不等式匹配操作的結果為假
答案:A. 當從兩個不同表中連線記錄的資料完全匹配時(即,相等條件建立了關係),就會建立相等連線。傳統方法在 WHERE 子句中使用等號作為比較運算子。JOIN 方法可以使用 NATURAL JOIN、JOIN ... USING 或 JOIN ... ON 關鍵字。
41.您需要查詢一份報告,該報告列出薪資大於 20000 且位於日內瓦任何部門的員工的姓和名。以下哪個查詢可以給出所需的結果?
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');
SELECT e.first_name, e.last_name FROM employees e JOIN departments d ON (e.department_id = d.department_id and e.salary >=20000);
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';
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 連線表時,在以下哪些條件下會返回一行?
- 不等式匹配操作的結果為真
- 不等式匹配操作的結果為 0
- 不等式匹配操作的結果為 1
- 不等式匹配操作的結果為假
答案:A. 當從兩個不同表中連線記錄的資料完全匹配時(即,相等條件建立了關係),就會建立相等連線。傳統方法在 WHERE 子句中使用等號作為比較運算子。JOIN 方法可以使用 NATURAL JOIN、JOIN ... USING 或 JOIN ... ON 關鍵字。
41.您需要查詢一份報告,該報告列出薪資大於 20000 且位於日內瓦任何部門的員工的姓和名。以下哪個查詢可以給出所需的結果?
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');
SELECT e.first_name, e.last_name FROM employees e JOIN departments d ON (e.department_id = d.department_id and e.salary >=20000);
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';
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 連線表時,在以下哪些條件下會返回一行?
- 不等式匹配操作的結果為真
- 不等式匹配操作的結果為 0
- 不等式匹配操作的結果為 1
- 不等式匹配操作的結果為假
答案:A. 當從兩個不同表中連線記錄的資料完全匹配時(即,相等條件建立了關係),就會建立相等連線。傳統方法在 WHERE 子句中使用等號作為比較運算子。JOIN 方法可以使用 NATURAL JOIN、JOIN ... USING 或 JOIN ... ON 關鍵字。
43.關於 Oracle 資料庫中的自連線,以下說法正確的是?
- 連線只需要兩個表。
- 結果集中的列來自兩個表,但顯示在一個表中。
- 從概念上講,源表會複製自身以建立目標表。(Oracle 不會複製表)
- 以上所有
答案: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 將以下哪個表視為源表和目標表?
- a 是源表,b 是目標表
- b 是源表,a 是目標表
- Oracle 不會將任何表視為源表或目標表
- 以上均不正確
答案:A. employees 表的第一次出現被視為源表,隨後的出現被視為 b、c 等。
45.在 Oracle 資料庫中,在哪些情況下理想情況下可以使用自連線?
- 當我們需要查詢表中的重複記錄時
- 當我們需要從表中獲取 NULL 值時
- 當我們需要顯示錶的某一列兩次時
- 當我們需要顯示相關實體的層次結構時
答案:D.
46.關於 Oracle 資料庫中的自然連線,以下說法正確的是?
- 連線的列具有相同的名稱,但可以具有不同的資料型別
- 連線的列可以具有相同的資料型別,但名稱不同
- 連線的列應具有相同的名稱和相同的資料型別
- 以上均不正確
答案:C. NATURAL JOIN 關鍵字不需要條件來建立兩個表之間的關係。但是,必須存在一個公共列。列限定符不能與 NATURAL JOIN 關鍵字一起使用。
47.需要提取一個報表,該報表僅提供部門 100 和 101 的部門名稱、部門 ID、部門城市和位置 ID。使用自然連線,以下哪個選項將提供所需的結果?


SELECT department_id , department_name ,location, city FROM departments NATURAL JOIN locations WHERE department_id in (100,101);
SELECT department_id , department_name ,location, city FROM locations NATURAL JOIN departments WHERE department_id BETWEEN 100 AND 101;
-
SELECT department_id , department_name ,location, city FROM departments NATURAL JOIN locations WHERE department_id >100 AND department_id >101;
-
SELECT department_id , department_name ,location, city FROM departments NATURAL JOIN locations ;
答案:A. WHERE 可以用於 NATURAL JOIN 子句後的附加條件。
48.在以下哪些情況下應使用 USING 子句或 NATURAL JOIN 子句?
- 當來自表的列的名稱相同時,使用 USING 子句
- 當來自表的列的資料型別相同時,使用 NATURAL JOIN
- 如果多個列具有相同的名稱但資料型別不匹配,則可以使用 USING
- 僅當列名及其資料型別相同時,才應使用 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%');
- 它給出某個公司所有員工的姓名和獲得的獎金。
- 它給出某個公司特定職位的所有員工的姓名和獲得的獎金。
- 它成功執行,給出所有職位的所有員工的姓名和獲得的獎金。
- 它丟擲一個 ORA 錯誤。
答案:D. USING 子句中使用的列在 SQL 語句中的任何位置都不應具有限定符(表名或別名)。
50.關於 Oracle 資料庫中的內部連線和外部連線,以下說法正確的是?
- INNER JOIN 僅返回匹配的行。
- OUTER JOIN 僅返回不匹配的行。
- OUTER JOIN 返回匹配的行以及不匹配的行。
- 以上均不正確
答案:A,C. 連線可以是內部連線,其中僅返回在所有表中都有匹配記錄的記錄,也可以是外部連線,其中可以返回記錄,無論連線中是否存在匹配記錄。當需要在結果中包含記錄但連線表中沒有對應的記錄時,會建立外部連線。這些記錄與 NULL 記錄匹配,以便將其包含在輸出中。
51.關於 Oracle 資料庫中的 FULL OUTER JOIN,以下說法正確的是?
- 當 LEFT OUTER JOIN 和 RIGHT OUTER JOIN 同時出現在同一個查詢中時,稱為 FULL OUTER JOIN。
- FULL OUTER JOIN 與 OUTER JOIN 相同。
- A 和 B 均正確
- 兩個表之間的連線,返回 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 );
此查詢導致錯誤。錯誤的原因是什麼?
- JOIN..USING 只能在兩個表之間發生。
- 查詢中的 USING 子句沒有任何來自 department 的列。
- 查詢中沒有 WHERE 子句。
- 以上均不正確
答案:A. Table1 JOIN table2 JOIN table3 不允許在每個 JOIN 之間沒有 ON 子句的情況下使用。
53.您需要顯示來自 EMPLOYEES 表的所有不匹配行和來自 DEPARTMENT 表的所有不匹配行,而不會在它們之間給出行的笛卡爾積。以下哪個查詢將提供所需的輸出?
SELECT * FROM employees e, department d WHERE e.department_id = d.department_id ;
SELECT * FROM employees e NATURAL JOIN department d;
SELECT * FROM employees e FULL OUTER JOIN department d ON e.department_id = d.department_id ;
SELECT * FROM employees e JOIN department d ON ( e.department_id > d.department_id ) ;
答案:C. FULL OUTER JOIN 返回兩個表中的不匹配行。全外部連線包含兩個表中的所有記錄,即使在另一個表中找不到對應的記錄。
54.Oracle 支援以下哪些 ANSI SQL:1999 連線語法連線?
- 笛卡爾積
- 自然連線
- 全外部連線
- 等值連線
答案:D.
55.以下哪個不是 Oracle 資料庫中外部連線的格式?
- 右
- 左
- 中心
- 全
答案: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 獲得的結果。應向上述查詢新增/修改以下哪些子句?
- 應新增 ON (e.department_id = d.department_id)
- 應新增 USING (e.department_id)
- 應新增 WHERE e.department_id in (100,101)
- 以上均不正確
答案:C. NATURAL JOIN 子句隱式匹配所有相同名稱的列。要新增其他條件,可以使用 WHERE 子句。
57.您需要查詢上述查詢中所有工資大於 20000 的員工獲得的結果。應向上述查詢新增/修改以下哪些子句?
- ON (e.department_id = d.department_id) WHERE salary > 20000;
- USING (e.department_id) WHERE salary > 20000;
- USING (department_id) WHERE salary>20000;
- WHERE salary > 20000;
答案:D.
58.如果上述查詢中的 NATURAL JOIN 被僅 JOIN 替換,則應向上述查詢新增/修改以下哪些內容以提供與部門 100 相關的結果?
- ON (department_id = 100);
- USING (e.department_id =100);
- WHERE d.department_id = 100;
- 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)
SELECT a.first_name || ' '||a.last_name "Manager", b.first_name||' '||b.last_name "Employees" FROM employees a join employees b On (employee_id );
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 );
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);
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)
SELECT * FROM employees e NATURAL JOIN department d;
SELECT * FROM employees e JOIN department d;
SELECT * FROM employees e NATURAL JOIN department d USING (e.department_id );
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 ;
- 它將顯示所有員工獲得的所有獎金。
- 如果特定員工沒有收到任何獎金,它將為獎金列顯示 NULL。
- A 和 B 均正確
- 以上均不正確
答案:B. 等式左側的 (+) 表示它是 RIGHT OUTER JOIN,反之亦然。
62.您必須列出在名為“XYZ”的公司中還沒有員工的所有部門。以下哪個查詢將提供所需的結果?
SELECT department_id , department_name FROM departments d NATURAL JOIN employees e;
SELECT department_id , department_name FROM employees e JOIN departments d ON (e.department_id = d.department_id );
SELECT department_id , department_name FROM employees e LEFT OUTER JOIN departments d USING (department_id );
SELECT department_id , department_name FROM employees e RIGHT OUTER JOIN departments d ON (e.department_id = d.department_id );
答案:D.
63.您需要提取一份報表,該報表顯示“尚未分配部門”給所有尚未分配到部門的員工。以下哪個選項將滿足此目的?
SELECT nvl(department_id ,'No department yet') FROM employees e RIGHT OUTER JOIN departments d ON (e.department_id = d.department_id );
SELECT nvl(department_id ,'No department yet') FROM departments d LEFT OUTER JOIN employees e ON (e.department_id = d.department_id );
SELECT nvl(department_id ,'No department yet') FROM employees e LEFT OUTER JOIN departments d ON (e.department_id = d.department_id );
SELECT nvl(department_id ,'No department yet') FROM employees e FULL OUTER JOIN departments d ON (e.department_id = d.department_id );
答案:C。
64.您需要提取一份報表,該報表顯示所有尚未分配到城市的部門。以下哪個查詢將提供所需的輸出?
SELECT department_id , department_name FROM departments d NATURAL JOIN locations l;
SELECT department_id , department_name FROM departments d FULL OUTTER JOIN locations l ON (d.location_id = l.location_id);
SELECT d.department_id , d.department_name FROM departments d JOIN locations l USING (location_id);
SELECT department_id , department_name FROM departments d LEFT OUTER JOIN locations l ON (d.location_id = l.location_id);
答案:D.
65.在哪些兩種情況下應使用外部連線?
- 如果連線表的列具有 NULL 值
- 如果連線表具有 NOT NULL 列
- 如果連線表只有不匹配的資料
- 如果連線表既有匹配資料也有不匹配資料
答案: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
SELECT employee_id , salary, grade FROM employees e JOIN grade g ON g.grade BETWEEN g.losal AND g.hisal
SELECT employee_id , salary, grade FROM employees e FULL OUTER JOIN grade g WHERE g.grade > g.losal AND < g.hisal;
SELECT employee_id , salary, grade FROM employees e JOIN grade g ON (MIN(g.grade) = g.losal AND MAX(g.grade) = g.hisal);
- 以上均不正確
答案: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 ;
如果刪除計算中的所有括號會發生什麼?
- calc_val 列中顯示的值將更小。
- calc_val 列中顯示的值將更大。
- calc_val 列中沒有區別。
- 將報告錯誤。
答案:C。
68.考慮示例並檢查 EMPLOYEES、DEPARTMENTS 和 GRADE 表的結構。在什麼情況下您會使用非等值連線查詢?



- 查詢每個員工的等級
- 列出所有員工的姓名、job_id 和經理姓名
- 查詢員工的部門名稱。
- 查詢在行政部門工作且工資低於 30000 的員工人數
答案:A. 非等值連線根據除等值條件之外的任何條件建立關係。與非等值連線一起使用的範圍值必須是互斥的。
69.在哪些三種情況下您會使用 USING 子句?(選擇三個。)
- 您要建立非等值連線。
- 要連線的表具有多個 NULL 列。
- 要連線的表具有相同名稱但資料型別不同的列。
- 您要使用自然連線,但要限制連線條件中的列數。
答案: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)
SELECT * FROM employees E JOIN bonus B on (salary, job_id )
SELECT * FROM employees E NATURAL JOIN bonus B on (salary, job_id )
SELECT * FROM employees E JOIN bonus B USING (salary, job_id )
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 語句
查詢 1SELECT 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 成功執行並給出所需的結果。
- 只有查詢 2 成功執行並給出所需的結果。
- 查詢 1 和查詢 2 都成功執行並給出不同的結果。
- 查詢 1 和查詢 2 都成功執行並給出相同所需的結果。
答案:D.
72.您需要生成一個報告,顯示部門位置以及 2013 年 1 月 20 日之前的所有聘用員工的姓名。



您發出以下查詢
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) ;
關於上述查詢,哪個陳述是正確的?
- 它成功執行並給出所需的結果。
- 它成功執行,但沒有給出所需的結果。
- 它產生錯誤,因為表的連線順序不正確。
- 它產生錯誤,因為等值連線和非等值連線條件不能在同一 SELECT 語句中使用。
答案:B。
73.檢查 EMPLOYEES 表的結構

您想知道是否使用不同的 EMPLOYEE_ID 輸入了任何員工的詳細資訊多次,方法是列出所有重複的姓名。您可以使用哪種方法獲得所需的結果?
- 自連線
- 自身連線的全外部連線
- 自身連線的左外部連線
- 自身連線的右外部連線
答案: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.您需要找出尚未分配任何位置的部門。哪個查詢會給出所需的結果?
SELECT d.department_id , d.department_name FROM departments d JOIN locations l ON (d.location_id = l.location_id);
SELECT d.department_id , d.department_name FROM departments d RIGHT OUTER JOIN locations l ON (d.location_id = l.location_id);
SELECT d.department_id , d.department_name FROM departments d FULL JOIN locations l ON (d.location_id = l.location_id);
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 選項來給出正確的輸出?
- JOIN
- NATURAL JOIN
- LEFT OUTER JOIN
- 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)
- FROM departments LEFT OUTER JOIN employees USING (department_id ) FULL OUTER JOIN bonus
- FULL OUTER JOIN department USING (department_id );
- FROM bonus JOIN employees USING (job_id )
- FROM employees FULL OUTER JOIN departments FULL OUTER JOIN bonus
答案:A.
77. 檢查以下圖表



您想生成一個報告,列出員工的 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;
在上述查詢中的空白處使用哪種連線組合才能給出正確的輸出?
- JOIN; LEFT OUTER JOIN
- FULL OUTER JOIN; FULL OUTER JOIN
- RIGHT OUTER JOIN; LEFT OUTER JOIN
- LEFT OUTER JOIN; RIGHT OUTER JOIN
答案:A.
78.預測以下查詢的結果。
SELECT e.salary, bonus FROM employees E JOIN bonus b USING (salary,job_id );
- 它成功執行。
- 它丟擲錯誤,因為 SELECT 中的 bonus 未加別名
- 它丟擲錯誤,因為 USING 子句不能超過 1 列。
- 它成功執行,但結果不正確。
答案:D.
檢視圖表並檢查 EMPLOYEES、DEPARTMENTS、LOCATIONS 和 BONUS 的結構。回答以下第 79 和 80 題





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');
預測上述查詢的結果。
- 它成功執行。
- 它給出錯誤,因為在 SELECT 語句中對 CITY 使用了限定符。
- 它給出錯誤,因為 SELECT 中的列名不匹配
- 它給出錯誤,因為 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”的公司員工的姓名、部門編號、工資和獎金。以下哪個查詢可以解決此問題?
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';
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';
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';
- 以上均不正確
答案:C。查詢 A 會丟擲語法錯誤,查詢 B 會在 bonus 和 department 之間丟擲無效識別符號錯誤。
檢查以下給出的圖表,並回答以下第 81 至 85 題。



81.您需要找到那些工資超過 20000 的員工的經理姓名。以下哪個查詢可以用於獲取所需的結果?
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;
SELECT e.employee_id "Employee", salary, employee_id , FROM employees E JOIN employees M USING (e.manager_id) WHERE e.salary >20000;
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;
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;
關於此查詢的結果,哪個陳述是正確的?
- 它成功執行。
- 它產生錯誤,因為 NATURAL 連線只能與兩個表一起使用。
- 它產生錯誤,因為 NATURAL 連線中使用的列不能有限定符。
- 它產生錯誤,因為 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 選項來獲取所需的輸出?
- 簡單內部 JOIN
- FULL OUTER JOIN
- LEFT OUTER JOIN
- RIGHT OUTER JOIN
答案:C。左外部連線包含連線左側列出的表中的所有記錄,即使在連線操作中未找到與其他表的匹配項也是如此。
考慮以下圖表和以下查詢以回答問題 84 和 85。(假設表 department 的列為 manager_id 和 department_name)

Select * FROM employees e JOIN department d ON (e.employee_id = d.manager_id);
84.您需要顯示一個句子“(first_name)(last_name) 是 (department_name) 部門的經理”。以下哪個 SELECT 語句將成功替換上述查詢中的“*”以滿足此要求?
SELECT e.first_name||' '||e.last_name||' is manager of the '||d.department_name||' department.' "Managers"
SELECT e.first_name, e.last_name||' is manager of the '||d.department_name||' department.' "Managers"
SELECT e.last_name||' is manager of the '||d.department_name||' department.' "Managers"
- 以上均不正確
答案:A.
85.如果我們在上述查詢中省略在 ON 子句後寫入括號“()”,會發生什麼情況?
- 它只會給出員工的姓名,並且經理的姓名將從結果集中排除
- 它將給出與括號“()”相同的結果
- 它會給出 ORA 錯誤,因為在使用 JOIN..ON 子句時必須寫入括號“()”
- 以上均不正確
答案:B。括號不是必需的,但使用它們可以清楚地顯示其中的條件。
86.以下哪個查詢建立笛卡爾連線?
SELECT title, authorid FROM books, bookauthor;
SELECT title, name FROM books CROSS JOIN publisher;
SELECT title, gift FROM books NATURAL JOIN promotion;
- 以上所有
答案:A,B。兩個表之間的笛卡爾連線返回表中每一行所有可能的組合。可以透過在查詢中不包含連線操作或使用 CROSS JOIN 來生成笛卡爾連線。
87.以下哪個運算子不允許在外連線中使用?
- AND
- =
- OR
- >
答案:C。Oracle 丟擲異常“ORA-01719:外連線運算子(+)不允許在 OR 或 IN 的運算元中使用”
88.以下哪個查詢包含等值連線?
SELECT title, authorid FROM books, bookauthor WHERE books.isbn = bookauthor.isbn AND retail > 20;
SELECT title, name FROM books CROSS JOIN publisher;
SELECT title, gift FROM books, promotion WHERE retail >= minretail AND retail <= maxretail;
- 以上均不正確
答案:A。當連線來自兩個不同表的記錄的資料完全匹配時(即,等值條件建立關係),就會建立等值連線。
89.以下哪個查詢包含非等值連線?
SELECT title, authorid FROM books, bookauthor WHERE books.isbn = bookauthor.isbn AND retail > 20;
SELECT title, name FROM books JOIN publisher USING (pubid);
SELECT title, gift FROM books, promotion WHERE retail >= minretail AND retail <= maxretail;
- 以上均不正確
答案:D。非等值連線根據不等式表示式匹配來自不同表的列值。源表中每一行中連線列的值與目標表中的相應值進行比較。如果基於不等式運算子的連線中使用的表示式計算結果為真,則會找到匹配項。構建此類連線時,會執行非等值連線。非等值連線使用 JOIN..ON 語法指定,但連線條件包含不等式運算子而不是等號。
90.以下 SQL 語句包含哪種型別的連線?
SELECT title, order#, quantity FROM books FULL OUTER JOIN orderitems ON books.isbn = orderitems.isbn;
- 等值
- 自連線
- 非等值
- 外連線
答案:D. 全外部連線包含兩個表中的所有記錄,即使在另一個表中找不到對應的記錄。
91.以下哪個查詢有效?
SELECT b.title, b.retail, o.quantity FROM books b NATURAL JOIN orders od NATURAL JOIN orderitems o WHERE od.order# = 1005;
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;
SELECT b.title, b.retail, o.quantity FROM books b, orderitems o WHERE o.isbn = b.isbn AND o.order#=1005;
- 以上均不正確
答案:C。如果連線中的表具有別名,則所選列必須使用別名引用,而不是使用實際的表名。
92.給定以下查詢。
SELECT zip, order# FROM customers NATURAL JOIN orders;
以下哪個查詢等價?
SELECT zip, order# FROM customers JOIN orders WHERE customers.customer# = orders.customer#;
SELECT zip, order# FROM customers, orders WHERE customers.customer# = orders.customer#;
SELECT zip, order# FROM customers, orders WHERE customers.customer# = orders.customer# (+);
- 以上皆非
答案: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 行
- 第 2 行
- 第 3 行
- 無錯誤
答案:A。如果查詢在連線條件中使用別名,則它們的列應使用別名進行引用。
94.給定以下查詢
SELECT lastname, firstname, order# FROM customers LEFT OUTER JOIN orders USING (customer#) ORDER BY customer#;
以下哪個查詢返回相同的結果?
SELECT lastname, firstname, order# FROM customers c OUTER JOIN orders o ON c.customer# = o.customer# ORDER BY c.customer#;
SELECT lastname, firstname, order# FROM orders o RIGHT OUTER JOIN customers c ON c.customer# = o.customer# ORDER BY c.customer#;
SELECT lastname, firstname, order# FROM customers c, orders o WHERE c.customer# = o.customer# (+) ORDER BY c.customer#;
- 以上均不正確
答案:B,C。
95.以下哪些陳述是正確的?
- 組函式不能用於來自多個數據源的資料。
- 如果查詢中連線了多個表,並且包含相同的列,則 Oracle 只選擇其中一個。
- 自然連線用於根據相同的列連線來自兩個表的行。
- 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 行
- 第 2 行
- 第 3 行
- 第 4 行
答案:C。由於表使用 JOIN 關鍵字連線,因此等值條件應使用 USING 子句編寫,而不是 WHERE 子句。
97.給定以下查詢
SELECT title, gift FROM books CROSS JOIN promotion;
以下哪個查詢等價?
SELECT title, gift FROM books NATURAL JOIN promotion;
SELECT title FROM books INTERSECT SELECT gift FROM promotion;
SELECT title FROM books UNION ALL SELECT gift FROM promotion;
SELECT title, gift FROM books, promotion;
答案:D。笛卡爾連線與交叉連線相同。
98.如果 CUSTOMERS 表包含 7 條記錄,而 ORDERS 表包含 8 條記錄,則以下查詢產生多少條記錄?
SELECT * FROM customers CROSS JOIN orders;
- 0
- 56
- 7
- 15
答案:B。交叉連線是兩個表中包含的行之間的叉積。
99.以下哪個 SQL 語句無效?
SELECT b.isbn, p.name FROM books b NATURAL JOIN publisher p;
SELECT isbn, name FROM books b, publisher p WHERE b.pubid = p.pubid;
SELECT isbn, name FROM books b JOIN publisher p ON b.pubid = p.pubid;
SELECT isbn, name FROM books JOIN publisher USING (pubid);
答案:A。不明確的列必須使用表限定符引用。
100.以下哪個選項列出了由名為“Printing Is Us”的出版商出版的所有書籍?
SELECT title FROM books NATURAL JOIN publisher WHERE name = 'PRINTING IS US';
SELECT title FROM books, publisher WHERE pubname = 1;
SELECT * FROM books b, publisher p JOIN tables ON b.pubid = p.pubid WHERE name = 'PRINTING IS US';
- 以上皆非
答案:A。假設列 NAME 不包含在 BOOKS 表中,則查詢 A 有效。
101.以下哪個 SQL 語句無效?
SELECT isbn FROM books MINUS SELECT isbn FROM orderitems;
SELECT isbn, name FROM books, publisher WHERE books.pubid (+) = publisher.pubid (+);
SELECT title, name FROM books NATURAL JOIN publisher
- 以上所有 SQL 語句均有效。
答案:B。查詢 B 丟擲異常“ORA-01468:謂詞只能引用一個外連線表”。
102.關於兩個表之間的外連線,以下哪個陳述是正確的?
- 如果使用 WHERE 子句建立表之間的關係,則兩個表都可以包含外連線運算子。
- 為了在結果中包含不匹配的記錄,該記錄將與不足表中的空記錄配對。
- RIGHT、LEFT 和 FULL 關鍵字等效。
- 以上所有
答案: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 行
- 第 3 行
- 第 4 行
- 第 5 行
答案:B. 由於查詢中使用的表有限定符,因此必須使用相同的限定符來引用列。
104. 表別名的最大字元數是多少?
- 10
- 155
- 255
- 30
答案:D. 表別名最多可以包含 30 個字元。
105. 以下哪個 SQL 語句有效?
SELECT books.title, orderitems.quantity FROM books b, orderitems o WHERE b.isbn= o.ibsn;
SELECT title, quantity FROM books b JOIN orderitems o;
SELECT books.title, orderitems.quantity FROM books JOIN orderitems ON books.isbn = orderitems.isbn;
- 以上皆非
答案:C。