- 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. 關於 Oracle 資料庫中的資料型別,哪個說法是正確的?
- 它們用於對列進行排序。
- 它們用於在表中對列進行結構化表示。
- 它們用於限制列可以儲存的資料型別。
- 它們不是必需的。
答案:C. 資料型別定義列在表中可以儲存的資料型別。一個列只能儲存一種型別的資料。Oracle 中主要的資料型別包括 NUMBER、VARCHAR2 和 DATE。
2. 關於巢狀函式,哪個說法是正確的?
- 在 Oracle 資料庫中,巢狀函式的使用次數限制為 5 次。
- 它們從最外層到最內層進行評估。
- 它們從最內層到最外層進行評估。
- 巢狀表示式中的所有函式都返回相同的資料型別。
答案:C. 單行函式和組函式可以在 SELECT 查詢中巢狀,其中最內層的函式首先執行。最內層函式的執行結果作為外層函式的輸入。
3. 以下哪個函式簡化了處理可能包含空值列的操作?
- 巢狀函式
- 通用函式
- 條件函式
- 以上都不是
答案:B. 通用函式如 NVL、NVL2、NULLIF 和 COALESCE 用於在顯示查詢結果時消除 NULL 的影響。它們透過分配替代值來繞過 NULL 值。
4. 以下哪些資料型別適用於通用函式?
- VARCHAR2
- NUMBER
- DATE
- 所有資料型別
答案:D. 通用函式通常與所有主要資料型別(如 NUMBER、VARCHAR2 和 DATE)相容。
5. 關於 COALESCE 函式,哪個說法是正確的?
- 它接受至少 2 個,最多 5 個輸入引數。
- 它始終返回輸入引數中的第一個 NULL 值。
- 它可以接受無限數量的輸入引數。
- 它返回第一個非空引數,否則返回空值。
答案:C, D. COALESCE 函式需要兩個必填引數,以及任意數量的可選引數。語法為 COALESCE(expr1, expr2,Ö,exprn),其中如果 expr1 不為空,則返回 expr1,否則如果 expr2 不為空,則返回 expr2,依此類推。COALESCE 是 NVL 函式的通用形式,如下兩個等式所示:COALESCE(expr1,expr2) = NVL(expr1,expr2),COALESCE(expr1,expr2,expr3) = NVL(expr1,NVL(expr2,expr3))
6. NVL 函式需要多少個必填輸入引數?
- 0
- 1
- 2
- 3
答案:C. NVL 函式需要兩個必填引數。其語法為 NVL(original, ifnull),其中 original 表示要測試的項,ifnull 表示如果 original 項計算結果為空則返回的結果。original 和 ifnull 引數的資料型別必須始終相容。它們必須具有相同的型別,或者必須能夠將 ifnull 隱式轉換為 original 引數的型別。NVL 函式返回與 original 引數具有相同資料型別的返回值。
7. 以下語句中哪個地方錯了?
NVL (ifnull, original)
- 沒有錯誤。
- 引數 original 不是必需的。
- 引數 'ifnull' 不是必需的。
- 正確的語句是 NVL (original,ifnull)。
答案:D. NVL 函式評估任何資料型別的列或表示式是否為空。如果該項為空,則返回一個非空替代值;否則,返回初始項。
8. 以下查詢的輸出是什麼?
SELECT NVL(1234) FROM dual;
- 1234
- 1000
- NULL
- ORA-00909:無效的引數數量錯誤
答案:D. NVL 函式需要兩個必填引數。其語法為 NVL(original, ifnull),其中 original 表示要測試的項,ifnull 表示如果 original 項計算結果為空則返回的結果。
9. 以下查詢的輸出是什麼?
SELECT NVL(1234,' ') FROM dual;
- 一個空格,即 ' '
- 1234
- NULL 值
- ORA-01722: 無效數字
答案:D. original 和 ifnull 引數的資料型別必須始終相容。它們必須具有相同的型別,或者必須能夠將 ifnull 隱式轉換為 original 引數的型別。NVL 函式返回與 original 引數具有相同資料型別的返回值。1234 應該用單引號括起來。在這種情況下不會發生資料型別的隱式轉換。
10. 以下查詢的結果是什麼?
SELECT NVL(SUBSTR('abc',-4),'SUBSTR didn't work') FROM dual;
- abc
- bc
- c
- SUBSTR 不起作用
答案:D。
11. 您需要提取一份報告,該報告顯示部門 100 中所有員工的姓名、姓氏和獲得的佣金百分比。報告中不應包含任何空列。如果列沒有值,則所有列都應至少包含“0”。以下哪個查詢可以滿足此要求?(考慮給定的表結構)
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 first_name, last_name, commission_pct*salary FROM employees WHERE department_id = 100;
SELECT first_name, last_name, NVL(commission_pct*salary,0) monthly_commission FROM employees WHERE department_id = 100;
SELECT first_name, last_name, NVL(commission_pct,0)*salary monthly_commission FROM employees WHERE department_id = 100;
SELECT first_name, last_name, commission_pct*salary FROM employees;
答案:B, C。
12. Oracle 資料庫中的資料轉換型別有哪些?
- 隱式轉換
- 顯式轉換
- 外部轉換
- 物理轉換
答案:A, B. TO_CHAR、TO_NUMBER 和 TO_DATE 是三種最常用的轉換函式,並進行了詳細討論。TO_CHAR 函式將數字和日期資訊轉換為字元,而 TO_NUMBER 和 TO_DATE 分別將字元資料轉換為數字和日期。
13. 在 Oracle 資料庫中,隱式轉換時會發生什麼?
- Oracle 資料庫將一種資料型別隱式轉換為期望的資料型別。
- 使用者必須將資料型別轉換為期望的資料型別。
- Oracle 資料庫不轉換任何資料型別。
- 隱式轉換可以由使用者控制。
答案:A. 如果 Oracle 資料庫將值隱式轉換為相容的資料型別,則稱為隱式轉換。
14. 在 Oracle 資料庫中,顯式轉換時會發生什麼?
- Oracle 資料庫將一種資料型別轉換為另一種資料型別,並顯式地顯示給使用者。
- Oracle 資料庫提示使用者將一種資料型別轉換為另一種資料型別,然後轉換資料型別。
- 使用者使用 Oracle 資料庫提供的轉換函式來轉換資料型別。
- Oracle 資料庫中從不顯式轉換資料型別。
答案:C. 當程式設計師必須使用某個轉換函式以程式設計方式轉換值時,稱為顯式轉換。
15. 以下哪種轉換方法建議用於提高 Oracle 資料庫中 SQL 語句的可靠性?
- 隱式和顯式轉換
- 隱式轉換
- 顯式轉換
- 以上都不是
答案:C. TO_CHAR、TO_NUMBER 和 TO_DATE 是三種最常用的轉換函式,並進行了詳細討論。TO_CHAR 函式將數字和日期資訊轉換為字元,而 TO_NUMBER 和 TO_DATE 分別將字元資料轉換為數字和日期。
16. 以下哪個是 Oracle 執行的有效隱式轉換?
- NUMBER 到 VARCHAR2
- NUMBER 到 DATE
- CHAR 到 DATE
- DATE 到 VARCHAR2
答案:A, D。
17. 檢查給定的 EMPLOYEES 表的結構。
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 first_name, salary FROM employees WHERE hire_date > '01-JAN-13';
- 沒有發生轉換,此查詢導致 ORA 錯誤。
- 顯式轉換
- 隱式轉換
- 隱式和顯式轉換。
答案:C. Oracle 會將字串(VARCHAR2 或 CHAR)隱式轉換為 DATE,從而提供所需的輸出。
18. 關於表示式求值,Oracle 資料庫支援以下哪些內容?
- NUMBER 到 CHAR
- DATE 到 VARCHAR2
- CHAR 到 DATE
- NUMBER 到 DATE
答案:A, B. DATE 和 NUMBER 值可以輕鬆轉換為其字元等效項。當字元字串符合以下日期模式時,可以進行隱式字元到日期的轉換:[D|DD] 分隔符 1 [MON|MONTH] 分隔符 2 [R|RR|YY|YYYY]。
19. 為了使 Oracle 中 CHAR 到 NUMBER 的隱式轉換正常工作,必須滿足什麼條件?
- 此類轉換沒有特別的要求。
- 字元字串必須表示有效的數字。
- Oracle 不支援此類轉換。
- CHAR 到 NUMBER 只能顯式轉換。
答案:B. 字元資料必須表示有效的數字才能被視為隱式轉換。
20. 以下哪個表示式可以顯式用於將 CHAR 轉換為 NUMBER?
- TO_CHAR
- 使用 TO_DATE,然後將日期轉換為 NUMBER。
- TO_NUMBER
- 此類轉換不可行。
答案:C. TO_NUMBER 函式返回型別為 NUMBER 的項。轉換為數字的字元字串必須格式正確,以便任何非數字元件都使用適當的格式掩碼進行轉換或去除。
21. 以下哪個表示式可以顯式用於將 NUMBER 轉換為 CHAR?
- TO_CHAR
- 使用 TO_DATE,然後將日期轉換為 NUMBER。
- TO_NUMBER
- 此類轉換不可行。
答案:A. TO_CHAR 函式返回資料型別為 VARCHAR2 的項。當應用於型別為 NUMBER 的項時,可以使用多種格式選項。
22. 以下哪個表示式可以顯式用於將 CHAR 轉換為 DATE?
- TO_CHAR
- 使用 TO_DATE,然後將日期轉換為 NUMBER。
- TO_NUMBER
- TO_DATE
答案:D. TO_DATE 函式返回型別為 DATE 的項。轉換為日期的字元字串可以包含構成 DATE 的所有或僅部分日期時間元素。當僅使用部分日期時間元素的字串進行轉換時,Oracle 會提供預設值來構建完整的日期。使用格式模型或掩碼將字元字串的元件與不同的日期時間元素關聯。
23. 以下哪個表示式可以顯式用於將 DATE 轉換為 CHAR?
- TO_CHAR
- TO_DATE
- TO_NUMBER
- 此類轉換不可行。
答案:A. TO_CHAR 函式返回資料型別為 VARCHAR2 的項。當應用於型別為 NUMBER 的項時,可以使用多種格式選項。
24. 以下哪些是 Oracle 提供的用於將一種資料型別顯式轉換為另一種資料型別的函式?
- TO_CHAR
- TO_DATE
- TO_NUMBER
- 以上所有
答案:D. TO_CHAR、TO_NUMBER 和 TO_DATE 是三種最常用的轉換函式,並進行了詳細討論。TO_CHAR 函式將數字和日期資訊轉換為字元,而 TO_NUMBER 和 TO_DATE 分別將字元資料轉換為數字和日期。
25. 解釋以下函式的工作原理。
TO_CHAR(number/date, [format], [nlsparameters])
- 它將 VARCHAR2 轉換為 CHAR。
- 它使用格式模型 [format] 將數字/日期轉換為 VARCHAR2 字串。
- 它將 VARCHAR2 轉換為 NUMBER 或 DATE。
- [NLSPARAMETERS] 在語句中是必需的。
答案:B. TO_CHAR 函式返回資料型別為 VARCHAR2 的項。當應用於型別為 NUMBER 的項時,可以使用多種格式選項。
26. 以下語句中的 [NLSPARAMETERS] 子句指定什麼?
TO_CHAR(number/date, [format], [nlsparameters])
- 小數字符
- 組分隔符
- 貨幣符號
- 以上所有
答案:D。
27. 如果省略了 [nlsparameters] 引數,TO_CHAR (number/date, [format], [nlsparameters]) 函式將使用什麼值?
- 它會丟擲一個 ORA 錯誤。
- [nlsparameters] 引數是必須的,不能省略。
- 它將使用會話的預設引數值。
- 它將使用資料庫設計期間設定的預設引數值。
答案:C. 預設情況下,TO_CHAR 函式會考慮當前活動會話的 NLS 設定。
28. 關於以下語句,哪個說法是正確的?
TO_CHAR(number/date, [format], [nlsparameters])
- nlsparameters 引數指定返回月份和日期名稱的語言。
- 在執行上述語句時,省略了 nlsparameters 引數。
- 無論是否指定,nlsparameters 引數都將返回 NULL。
- nlsparameters 引數將在每次執行時返回資料庫的預設語言。
答案:A.
29. 關於 Oracle 資料庫中的以下語句,哪個說法是正確的?
TO_NUMBER(char, [format],[nlsparameters])
- 它將任何字串轉換為 [format] 中指定的格式的數字。
- 它僅將 NUMBER 轉換為 [format] 中提到的所需格式。
- 它將包含數字的字串轉換為 [format] 中指定的格式的數字。
- 此函式的結果始終是字元。
答案:C. TO_NUMBER 函式返回型別為 NUMBER 的項。轉換為數字的字元字串必須格式正確,以便任何非數字元件都使用適當的格式掩碼進行轉換或去除。
30. 關於 Oracle 資料庫中的以下語句,哪個說法是正確的?
TO_DATE(char, [format],[nlsparameters])
- 它將任何字串轉換為 [format] 中指定的格式的日期。
- 它僅將 DATE 轉換為 [format] 中提到的所需格式的另一個 DATE。
- 它將包含日期的字串轉換為 [format] 中指定的格式的數字。
- 它將包含日期的字串轉換為 [format] 中指定的格式的日期。
答案:C. TO_DATE 函式返回 DATE 型別的值。轉換為日期的字串可以包含構成 DATE 的所有或只是一部分日期時間元素。
31. 如果省略以下語句中的 [format] 引數,結果將是什麼?
TO_DATE(char, [format],[nlsparameters])
- 它將返回格式為 DD-MON-YY 的 DATE 值。
- 它將返回格式為 DD-MON-RR 的 DATE 值。
- 它將返回字元值。
- 它將返回 NUMBER 值。
答案:A.
32. 關於 Oracle 資料庫中的以下語句,以下哪個說法是正確的?
TO_CHAR(date, 'frmt')
- fmt 可以用雙引號或單引號括起來。
- 此函式中 fmt 的大小寫無關緊要。
- Fmt 可以包含任何字元或數字。
- fmt 必須用單引號括起來,並且必須是有效的日期格式。
答案:D。
33. 執行以下語句將產生什麼結果?
SELECT TO_CHAR ('01-JAN-13' 'DD-MON-YY') FROM dual;
- 01-JAN-13
- 01-01-2013
- 一個 ORA 錯誤
- 1-JAN-13
答案:C. 引數 '01-JAN-13' 和格式模型之間應該用逗號分隔。
34. 關於以下語句中的 [fmt] 引數,哪個說法是正確的?
TO_DATE ([date as string],[format])
- fmt 可以用雙引號或單引號括起來。
- 此函式中 fmt 的大小寫無關緊要。
- [fmt] 引數有一個 'fm' 元素,它可以刪除空格並抑制前導零。
- Fmt 可以包含任何字元或數字。
答案:C.
35. Oracle 資料庫中 FM 修飾符的縮寫是什麼?
- First Move(首移動)
- Filter Mode(過濾器模式)
- Fill Mode(填充模式)
- First Mode(首模式)
答案:C. 格式模型 'fm' 代表 Fill Mode(填充模式)。
36. Oracle 資料庫中 FX 修飾符的縮寫是什麼?
- First Expression(首表示式)
- Fill Expression(填充表示式)
- First Extra(首額外)
- Format Exact(格式精確)
答案:D. 格式模型 'fm' 代表 Format Exact(格式精確)。
37. 在以下語句中,Oracle 資料庫將為 Month 元素分配多少個最大顯示位置?
SELECT TO_CHAR (sysdate, 'fmMonth') FROM dual;
- 5
- 6
- 7
- 9
答案:D. Month 元素的最長單詞是“September”(九月),因此 Oracle 會根據 9 個位置進行填充,以便顯示 Month 引數。
38. 關於 Oracle 資料庫中的 FM 修飾符,以下哪個說法是正確的?
- 此修飾符會抑制後續字元元素(如 MONTH)中的空格填充。
- 此修飾符會抑制後續數字元素(如 MI)的前導零。
- 此修飾符對日期格式沒有影響。
- 此修飾符對於與 TO_CHAR 函式一起使用的所有日期格式都是必須的。
答案:A,B。
39. 當在 Oracle 資料庫中的 DATE 格式模型中不使用 FM 修飾符時會發生什麼情況?
- 字元元素的結果將在左側用空格填充到可變長度。
- 字元元素的結果將在右側用空格填充到固定長度。
- 字元元素的結果中不會返回前導零。
- 如果使用 FM 修飾符,則返回值的長度是固定的。
答案:B。
40. 當使用 FM 修飾符時,TO_CHAR 函式的數字格式元素中的數字結果如何在輸出緩衝區中對齊?
- 右對齊
- 左對齊
- 居中對齊
- 以上都不是
答案:B. FM 修飾符會抑制新增到數字左側的空格。
41. 以下查詢的結果是什麼?
SELECT TO_CHAR (TO_DATE('01-JAN-13'), 'fmDD Month YYYY') FROM dual;
- 1 January2013
- 1 January 2013
- 1 Jan 2013
- 1 January 13
答案:B. TO_CHAR 函式根據給定的格式模型格式化輸入日期。
42. 將在以下查詢的 'DD' 中新增多少個空格?
SELECT TO_CHAR (TO_DATE('01-JAN-13','DD-MON-YY'), 'fmDD Month YYYY') FROM dual;
- 0
- 1
- 2
- 3
答案:A. FM 修飾符會刪除日期格式中所有填充的空格。
43. 以下查詢的結果是什麼?
SELECT TO_CHAR (TO_DATE('01-JAN-13','DD-MON-YY'), 'fmDdspth "of" Month YYYY fmHH:MI:SS AM') FROM dual;
- 由於在日期格式中使用了雙引號,它將返回一個 ORA 錯誤。
- 1st January 2013
- First of JANUARY 2013 12:00:00 AM
- First of January 2013 12:00:00 AM
答案:D. TO_CHAR 函式根據給定的格式格式化輸入日期 '01-JAN-13'。
44. 以下哪個選項指定了 TO_DATE 函式的字元引數和日期格式模型的完全匹配?
- TO_DATE
- TO_CHAR
- FM
- FX
答案:D。
45. 關於 Oracle 資料庫中的 FX 修飾符,哪個說法是正確的?
- 它是區分大小寫的。
- 在與提到的日期格式模型匹配時,它會忽略字元引數中的空格。
- 字元引數中的標點符號和帶引號的文字不一定與格式模型匹配。
- 以上都不是
答案:D。
46. 以下查詢的結果是什麼?
SELECT TO_DATE ('January 21, 2013' , 'fxMonth DD, YYYY') FROM dual;
- 它將成功執行。
- 它將返回結果 January 21, 2013。
- 它會產生一個 ORA 錯誤。
- 它將返回結果 JANUARY 21, 2013。
答案:C. 如果使用 FX,則字元引數必須與格式模型完全匹配。這裡 January 後面的額外空格不匹配。
47. 關於 Oracle 資料庫中的 FX 修飾符,哪個說法是正確的?
- 它可以與 TO_CHAR 一起使用。
- 它可以與 TO_CHAR 和 TO_DATE 一起使用。
- 它只能與 TO_DATE 一起使用。
- 以上都不是
答案:C. FX 格式修飾符只能與 TO_DATE 函式一起使用。
48. 假設 SYSDATE 為 01-JAN-13,以下查詢的結果是什麼?
SELECT TO_CHAR (SYSDATE, 'DDTH') FROM dual;
- 1st of January
- 1st
- 1 ST
- 01ST
答案:D。
49. 假設 SYSDATE 為 01-JAN-13,以下查詢的結果是什麼?
SELECT TO_CHAR (SYSDATE, 'fmDDTH') FROM dual;
- 1st of January
- 1st
- 1ST
- 01ST
答案:C.
50. 假設 SYSDATE 為 01-JAN-13 且是星期二,以下查詢的結果是什麼?
SELECT TO_CHAR (SYSDATE, 'fmDay')||'''s Meeting' FROM dual;
- Tuesday
- TUESDAY
- TUESDAY's Meeting
- Tuesday's Meeting
答案:D。
51. 以下查詢的結果是什麼?
SELECT TO_DATE('01 / JAN / 13','DD-MON-YY') FROM dual; - ORA 錯誤
- 01-JAN-2013
- 01-JANUARY-13
- 01-JAN-13
答案:D。
52. 以下查詢的結果是什麼?
SELECT TO_DATE('01 ## JAN / 13','DD-MON-YY') FROM dual;
- ORA 錯誤
- 01-JAN-2013
- 01-JANUARY-13
- 01-JAN-13
答案:A. 在日期之間使用單個分隔符。
53. 以下查詢的結果是什麼?
SELECT TO_DATE('01/JAN/13','fxDD-MON-YY') FROM dual;
- 01-JAN-2013
- ORA 錯誤
- 01-JAN-13
- 01-JANUARY-13
答案:B. 使用格式精確修飾符時,輸入文字必須與格式字串匹配。
54. 以下查詢的結果是什麼?
SELECT TO_DATE('01-JAN-13','fxDD-MON-YY') FROM dual; - 01-JAN-2013
- ORA 錯誤
- 01-JAN-13
- 01-JANUARY-13
答案:C.
55. 以下查詢的結果是什麼?
SELECT TO_DATE ('11-JAN-2013','fxDD-MON-YYYY') FROM dual; - 11-JAN-13
- 11-01-13
- 11-JAN-2013
- ORA 錯誤
答案:C.
56. 員工 Allen 於 1-JAN-13 被聘用。以下查詢的結果是什麼?(假設會話的 NLS 引數設定為 DD-MON-YY)
SELECT TO_DATE(hire_date, 'fxfmDD-MON-YY') FROM employees WHERE first_name='ALLEN';
- ORA 錯誤
- 01-JAN-2013
- 1-JAN-13
- 1-JAN-2013
答案:C.
57. 以下查詢的結果是什麼?
SELECT TO_CHAR(TO_DATE ('01-JAN-2013'), 'DD-Month-RR') FROM dual; - 01-JAN-13
- 01-01-2013
- 01-January-13
- 01-January -13
答案:D. Month 修飾符會用空格填充到 9 個位置。
檢查給出的 EMPLOYEES 表的結構,並回答以下第 58 和 59 題。
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)
58. 您需要列出所有在 1990 年之前被聘用的員工的姓名和姓氏。以下哪個 WHERE 語句將為您提供所需的結果?(假設此列表是在“01-JAN-2013”生成)
- WHERE TO_DATE (hire_date, 'DD-MON-YY') < '01-JAN-1990'
- WHERE TO_DATE (hire_date, 'DD-MON-YYYY') < '01-JAN-1990'
- WHERE TO_DATE (hire_date, 'DD-MON-YY') < '01-JAN-90'
- WHERE TO_DATE (hire_date, 'DD-MON-RR') < '01-JAN-1990'
答案:D. 使用 RR 格式將考慮 1950 年至 1999 年之間的日期的年份部分。
59. 以下哪個是巢狀函式的示例?
SELECT lower(last_name) FROM employees;
SELECT upper (last_name) FROM employees;
SELECT concat (first_name, last_name) FROM employees;
SELECT upper (concat(SUBSTR(first_name,1,6),'_UK')) FROM employees;
答案:D. 函式中的多個函式稱為函式巢狀。
60. 關於 Oracle 資料庫中的 COALESCE 函式,哪個說法是正確的?
- 它只能接收 2 個引數。
- COALESCE 函式中的所有引數可以具有不同的資料型別。
- COALESCE 函式中的所有引數都應該具有相同的資料型別。
- 以上都不是
答案:C. COALESCE 函式接收兩個必填引數和任意數量的可選引數。語法為 COALESCE(expr1, expr2,Ö,exprn),其中如果 expr1 不為 null,則返回 expr1,否則如果 expr2 不為 null,則返回 expr2,依此類推。
61. 以下哪個函式用於條件表示式?
- TO_CHAR
- COALESCE
- NVL
- CASE
答案:D. CASE 表示式可以實現 if-then-else 條件邏輯。CASE 表示式有兩種變體。簡單的 CASE 表示式只列出一次條件搜尋項,並且每個比較表示式都會測試與搜尋項的相等性。搜尋的 CASE 表示式為每個比較表示式列出單獨的條件。
62. 以下查詢的結果是什麼?
SELECT TO_CHAR(TO_DATE('01-JAN-13','DD-MON-YY'),'dy-mon-yyyy') FROM dual;
- 01-jan-2013
- 01-jan-13
- tue-jan-13
- tue-jan-2013
答案:D。格式模型“dy”拼寫輸入日期的前三個字母。 “DY”將給出“TUE”,而不是上面查詢中給出的“tue”。
63. 以下查詢的結果是什麼?
SELECT TO_CHAR(TO_DATE('01-JAN-13','DD-MON-YY'),'fmDAY-mon-yyyy') FROM dual;
- 1-jan-2013
- 01-jan-13
- TUESDAY -jan-13
- TUESDAY-jan-2013
答案:D。fmDAY(所有大寫字母)或fmday(所有小寫字母)格式模型將拼寫輸入日期的日期,沒有任何前導或尾隨空格。
64. 以下查詢的結果是什麼?
SELECT TO_CHAR(TO_DATE('19-JUN-13'),'qth') FROM dual;
- 1st
- 2nd
- 3rd
- 4th
答案:B。格式模型“q”給出給定日期所在的季度。在給定的查詢中,APR-JUN 是第 2 季度。
檢查給定的EMPLOYEES表的結構,並回答接下來的第65到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)
65. 一些員工在今年(即2013年)的第二週加入了ABC公司。您需要列出所有這些員工的姓、名和部門ID。以下哪個查詢將為您提供所需的結果?
SELECT first_name, last_name, department_id FROM employees WHERE TO_DATE(hire_date,'w') >2;
SELECT first_name, last_name, department_id FROM employees WHERE TO_DATE(hire_date,'w') between 1 and 2;
SELECT first_name, last_name, department_id FROM employees WHERE TO_CHAR(hire_date,'w') <3;
SELECT first_name, last_name, department_id FROM employees WHERE TO_CHAR(sysdate,'ww') =2;
答案:D。格式模型“ww”給出一年中的第幾周。
66. ABC公司管理層想找出2012年第3季度有多少員工被聘用。以下哪個查詢將為您提供所需的結果?
SELECT count(employee_id ) FROM employees WHERE TO_CHAR(hire_date, 'q') > 1;
SELECT count(employee_id ) FROM employees Where TO_CHAR(hire_date, 'q') = 3;
SELECT employee_id FROM employees Where TO_CHAR(hire_date, 'q') = 3;
SELECT count(employee_id ) FROM employees Where TO_CHAR(hire_date, 'q') between 0 and 3;
答案:B。格式模型“q”給出一年中的第幾季度。
67. 需要列印並頒發榮譽證書給所有在2008年之前加入組織並仍然是組織一部分的員工。姓、名和日期的列印將透過使用從查詢中獲取的佔位符來完成。證書應包含所有拼寫的數字。例如:星期二,1月1日,二〇〇八年。證書的最終文字應採用以下格式:茲證明,姓名加入本組織於星期二,1月1日,二〇〇八年,已成功在公司工作5週年。以下哪個查詢將有助於以所需格式列印日期?
SELECT TO_CHAR (hire_date, 'fmDay,"the "ddth "of " Month, Yysp.') FROM employees;
SELECT TO_CHAR (hire_date, 'Day,"the "ddth "of " Mon, Yyyy.') FROM employees;
SELECT TO_CHAR (hire_date, 'fmDAY,"the "ddth "of " Month, Ysp.') FROM employees;
SELECT TO_CHAR (hire_date, 'fmDay,"the "ddth "of " MONTH, Rsp.') FROM employees;
答案:A。“sp”識別符號用簡單的英語拼寫年份。
68. 需要生成一個報告,該報告為所有員工從可用的紙質來源建立審計歷史表。紙質來源僅包含員工被聘用的2011年的資料。此資料僅包含僱用日期的年份。您需要將日期作為該特定年份的1月1日(無前導零和空格)放入審計歷史表中。以下哪個子句將實現此需求?
- TO_DATE('2011','YYYY')
- TO_CHAR (TO_DATE ('2011','YYYY'),'fmMM/DD/YYYY')
- TO_CHAR('2011','DD-MON-YYYY')
- TO_DATE ('01-01-2011','DD-MM-YYYY')
答案:B。
69. 以下查詢的結果是什麼?
SELECT TO_NUMBER ('$3000') FROM dual;
- 3000
- $3000
- NULL
- ORA 錯誤
答案:D。查詢丟擲“ORA-01722: 無效數字”錯誤,因為給定的字串無法識別為數字。
70. 以下查詢的結果是什麼?
SELECT TO_NUMBER('$3,000.67','$999,999.99') FROM dual;
- $3000.67
- 3000
- 3000.67
- 由於輸入字串的字元少於提到的格式模型,因此出現ORA錯誤。
答案:C。適當的格式模型幫助TO_NUMBER將給定的字串轉換為數字。
71. 以下查詢的結果是什麼?
SELECT TO_NUMBER('$3,000,000.67','$999,999.99') FROM dual;
- $3,000,000.67
- 3000,000.67
- 3000.67
- 由於格式模型的字元少於輸入字串,因此出現ORA錯誤。它應該相同。
答案:D。
72. 以下查詢將產生什麼結果?
SELECT TO_NUMBER('456.23','999.99') FROM dual;
- ORA 錯誤
- 456.23
- 456
- 以上都不是
答案:B。
73. 關於巢狀函式,以下哪一項是正確的?
- 巢狀意味著將一個函式的輸出用作另一個函式的輸入。
- 巢狀最多可以應用到3級巢狀。
- 巢狀應用於多行函式,直至任何深度。
- 以上都不是
答案:A。函式執行的輸出用作其前一個函式的輸入。
74. 以下查詢的結果是什麼?
SELECT NULLIF(1,2-1) FROM dual;
- 0
- 1
- NULL
- 以上都不是
答案:C。NULLIF函式測試兩個項是否相等。如果它們相等,則函式返回null,否則返回測試的兩個項中的第一個。這裡,Oracle認為1和表示式“2-1”相等,因此返回NULL。
75. 以下查詢的結果是什麼?
SELECT NULLIF('01-JAN-2013','01-JAN-13') FROM dual;
- 1-JAN-13
- 01-JAN-2013
- NULL
- ORA 錯誤
答案:B。由於兩個日期的長度不同,因此返回第一個引數。
76. Oracle DB中COALESCE函式的必選引數與可選引數的比例是多少?
- 0:1
- 1:2
- 2:任意數量
- 以上都不是
答案:C。COALESCE函式有兩個必選引數和任意數量的可選引數。OALESCE是NVL函式的通用形式,如下面的兩個等式所示:COALESCE(expr1,expr2) = NVL(expr1,expr2), COALESCE(expr1,expr2,expr3) = NVL(expr1,NVL(expr2,expr3))。
77. 以下哪些等式是正確的?
- COALESCE(expr1,expr2) = NVL(expr1,expr2)
- COALESCE(expr1,expr2) = NVL2(expr1,expr2,expr3)
- COALESCE(expr1,expr2,expr3) = NVL(expr1,NVL(expr2,expr3))
- 以上所有
答案:A,C。
78. 以下哪個是NVL2的正確語法?
- NVL(original,ifnotnull)
- NVL2(original,ifnull,ifnotnull)
- NVL(original,NULL)
- NVL(original,ifnull) 和 NVL2(original,ifnotnull,ifnull)
答案:D。
79. 以下哪個函式是Oracle中繼承的ANSI標準關鍵字?
- CASE
- DECODE
- A和B
- 以上都不是
答案:A。CASE是符合ANSI SQL標準的,而不是Oracle特有的。
80. 關於Oracle DB中的DECODE語句,以下哪一項是正確的?
DECODE(expr1,comp1,iftrue1,comp2,[iftrue2])
- Comp2不是可選的
- 如果expr1等於comp1,則返回comp2
- 如果expr1等於comp1,則返回iftrue1
- 以上都不是
答案:C。DECODE函式透過測試其前兩個項是否相等來實現if-then-else條件邏輯,如果它們相等則返回第三個,如果它們不相等則可選地返回另一個項。DECODE函式至少需要三個必選引數,但可以接受更多引數。
81. 關於DECODE函式中的引數,以下哪一項是正確的?
- 所有引數必須是VARCHAR2
- 沒有表示式可以作為DECODE函式的引數
- 所有引數必須是NUMBER
- 返回的資料型別與第一個匹配的比較項的資料型別相同。
答案:D。DECODE函式透過測試其前兩個項是否相等來實現if-then-else條件邏輯,如果它們相等則返回第三個,如果它們不相等則可選地返回另一個項。
82. 以下查詢的結果是什麼?
SELECT DECODE (null,null,'expr3') FROM dual;
- NULL
- 0
- Expr3
- ORA 錯誤
答案:C。DECODE認為兩個NULL值是等價的。Oracle中NULL的一個異常。
83. 以下查詢的結果是什麼?
SELECT DECODE ('elephant','rat','lion','tiger','cat','squirrel','elephant','koala','rat','And it continues') FROM dual;
- elephant
- rat
- koala
- 並且它繼續
答案:D。DECODE函式至少需要三個必選引數,但可以接受更多引數。
84. Oracle DB中CASE表示式的最小必選引數數量是多少?
- 0
- 1
- 2
- 3
答案:D。CASE表示式有助於if-then-else條件邏輯。CASE表示式有兩種變體。簡單的CASE表示式只列出一次條件搜尋項,並且每個比較表示式都測試與搜尋項的相等性。搜尋的CASE表示式為每個比較表示式列出一個單獨的條件。它至少需要3個必選引數,但也可以接受更多引數。
85. Oracle DB中使用哪種關鍵字組合來包含CASE語句?
- CASEÖEND IF;
- IFÖEND IF;
- CASEÖ;
- CASEÖEND;
答案:D。
86. 如果CASE語句中未定義ELSE塊,則在出現錯誤值時返回哪個值?
- 0
- NULL
- 0或NULL
- 以上都不是
答案:B。
87. 如果CASE語句中存在多個WHEN..THEN級別,以下哪個選項是正確的?
- CASE僅搜尋或比較第一個級別,並在不檢查WHENÖTHEN的其他級別的條件下退出。
- CASE語句將在WHENÖTHEN的所有級別中搜索,直到找到匹配項。
- A和B
- 以上都不是
答案:B。
88. CASE語句中的搜尋、比較和結果引數可以是什麼資料型別?
- VARCHAR2
- DATE
- NUMBER
- 列值、文字和表示式
答案:D。
89. CASE語句不能用於Oracle SQL查詢的哪些部分?
- SELECT
- 沒有這些選項
- WHERE
- ORDER BY
答案:B。
90. 檢查給定的EMPLOYEES表的結構。
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)
以下查詢在Oracle DB中的結果是什麼?
SELECT first_name, salary, CASE department_id WHEN 100 THEN 'Accounts' WHEN 101 THEN 'Human Resources' WHEN 102 THEN 'Sales' ELSE 'Unknown' END FROM employees;
- 它將建立一個ORA錯誤,因為CASE語句中不能編寫多個WHENÖTHEN語句。
- 它將顯示部門ID為100、101、102
- 它將僅顯示每當部門ID為100時出現“Accounts”,並忽略其餘命令。
- 以上都不是
答案:D. CASE 表示式可以實現 if-then-else 條件邏輯。CASE 表示式有兩種變體。簡單的 CASE 表示式只列出一次條件搜尋項,並且每個比較表示式都會測試與搜尋項的相等性。搜尋的 CASE 表示式為每個比較表示式列出單獨的條件。
91. Oracle DB中CASE語句可以有多少個WHENÖTHEN級別?
- 無限
- 1000
- 216
- 255
答案:D。
92. 以下查詢的結果是什麼?
SELECT NVL2(
NULLIF ('BMW','AUDI'),
'HYUNDAI',
'FERRARI'
)
FROM dual;
- BMW
- FERRARI
- NULL
- HYUNDAI
答案:D。NVL2函式對NVL進行了增強,但功能非常相似。它評估任何資料型別的列或表示式是否為空。如果第一個項不為空,則返回第二個引數,否則返回第三個引數。
93. 假設SYSDATE為01-JAN-13,以下查詢將產生什麼結果?
SELECT TO_CHAR (sysdate, 'fmddth" of" Month YYYY') FROM dual;
- 1月1日,2013年
- 1月1日,2013年
- 2013年1月1日
- 1月1日2013年
答案:D。“th”格式模型將日期的日期作為“st”或“th”給出。
94. 以下查詢的結果是什麼?
SELECT TO_CHAR (TO_DATE('01-JAN-13','DD-MON-YY'), 'MmSP Month Yyyysp') FROM dual;
- 一月一日二〇一三年
- 一月JAN二〇一三年
- 一日一月二〇一三年
- 以上都不是
答案:C.
95. 以下查詢的結果是什麼?
SELECT TO_CHAR (TO_DATE('01-JAN-13','DD-MON-YY'), 'DD-MON-YYYY hh24SpTh') FROM dual;
- 一月一日二〇一三年
- 一日一月二〇一三年
- ORA 錯誤
- 01-JAN-2013 zeroeth
答案:D。使用“SpTh”格式修飾符可以拼寫時間戳元件。
96. 這些函式中哪些函式在SQL語句中執行類似於if-then-else邏輯的工作?
- TO_CHAR
- TO_NUMBER
- A和B
- CASE
答案:D. CASE 表示式可以實現 if-then-else 條件邏輯。CASE 表示式有兩種變體。簡單的 CASE 表示式只列出一次條件搜尋項,並且每個比較表示式都會測試與搜尋項的相等性。搜尋的 CASE 表示式為每個比較表示式列出單獨的條件。
97. 檢查給定的EMPLOYEES表的結構。
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查詢的結果是什麼?
SELECT DECODE (salary,10000) FROM employees;
- 10000
- NULL
- 0
- ORA 錯誤
答案:B。DECODE函式透過測試其前兩個項是否相等來實現if-then-else條件邏輯,如果它們相等則返回第三個,如果它們不相等則可選地返回另一個項。DECODE函式至少需要三個必選引數,但可以接受更多引數。如果DECODE函式中的預設值被省略,則返回NULL。
98. 您需要將Oracle DB會話的時間顯示到小數秒後的3位小數。以下哪個查詢將給出所需輸出?
SELECT TO_CHAR(sysdate, 'DD-MON-YY HH24:MI:SS.FF') FROM dual;
SELECT TO_CHAR(sysdate, 'DD-MON-YY HH24:MI:SS') FROM dual;
SELECT TO_CHAR(sysdate, 'DD-MON-YY HH24:MI:SS.FF3') FROM dual;
SELECT TO_CHAR(sysdate, 'DD-MON-YY') FROM dual;
答案:C。HH:MI:SS格式的FF [1..9]副檔名在小數秒中產生最多1..9位的小數秒。
99. Oracle DB中日期和時間可以使用哪些標點符號?
- #
- @
- ,
- :
答案:C,D。
100. 檢查給定的EMPLOYEES表的結構。
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)
您需要查詢員工Jaimie Patrick在ABC公司被聘用的那一年中的第幾天。以下哪個查詢將給出所需的輸出?
SELECT TO_CHAR(hire_date, 'DDD') FROM employees WHERE last_name = 'Patrick' AND first_name = 'John';
SELECT TO_CHAR(hire_date, 'YYYY') FROM employees WHERE last_name = 'Patrick' AND first_name = 'John';
SELECT TO_CHAR(hire_date, 'DD-MON-YYYY') FROM employees WHERE last_name = 'Patrick' AND first_name = 'John';
SELECT TO_CHAR(hire_date, 'DD-MON-RR') FROM employees WHERE last_name = 'Patrick' AND first_name = 'John';
答案:A。格式模型“DDD”返回給定日期所在的一年中的第幾天。
101. 需要生成一個報告,該報告提供2013年6月1日午夜開始的所有批處理執行的計時。這些計時應以午夜後的秒精度表示。以下哪個子句將滿足要求?
- TO_CHAR(sysdate,'HH24:MI:SS')
- TO_CHAR(sysdate,'HH24:MI:SS.FF')
- TO_CHAR(sysdate,'HH24:MI:SSSS')
- TO_CHAR(sysdate,'HH24:MI:SS.FF3')
答案:C。 'SSSS' 格式模型給出的是午夜後的秒數。