SQL - 資料限制和排序問題



1. 以下哪個子句用於限制從 SELECT 查詢中檢索的行數?

  1. LIMIT
  2. WHERE
  3. AND
  4. FROM

答案:B. WHERE 子句用於限制 SELECT 查詢返回的行數。

2. 選擇可以在 SELECT 查詢的 WHERE 子句中比較其值的資料庫元素。

  1. 序列
  2. 過程
  3. 字面量

答案:A、D. WHERE 子句可用於比較列、字面量、算術函式和函式的值。

3. SELECT 查詢的 WHERE 子句謂詞中不包含哪些元素?

  1. 比較運算子
  2. 比較條件
  3. 列名
  4. 表名

答案:D. WHERE 子句謂詞不需要表名。

4. WHERE 子句條件評估後,以下哪個值不能返回?

  1. UNKNOWN
  2. TRUE
  3. FALSE
  4. NULL

答案:A. 如果 WHERE 子句中條件的結果未知,則返回 NULL。在所有其他情況下,返回 TRUE 或 FALSE。

5. SELECT 查詢中必須存在的 WHERE 子句的最小數量是多少?

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

答案:C. WHERE 子句是 SELECT 查詢中的可選子句,僅用於限制行數。

6. SELECT 查詢中可以包含的 WHERE 子句的最大數量是多少?

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

答案:A. WHERE 子句是 SELECT 查詢中的可選子句,只能使用一次來限制行數。

7. 關於 WHERE 子句,以下哪些陳述是正確的?

  1. 可以在 WHERE 子句中使用列別名來引用列
  2. 比較運算子是 WHERE 子句條件中的可選元素
  3. 函式可以用作 WHERE 子句中的運算元
  4. SELECT 查詢中可以有多個 WHERE 子句

答案:C. WHERE 子句必須有比較運算子來評估條件。它可以使用函式作為運算元之一。SELECT 查詢中只允許一個 WHERE 子句。

8. 編寫一個 SELECT 查詢,列出 EMP 表中唯一的部門。

  1. SELECT deptno FROM emp;
  2. SELECT DISTINCT deptno FROM emp;
  3. SELECT DISTINCT (deptno) FROM emp;
  4. SELECT empno, DISTINCT deptno FROM emp;

答案:B & C. DISTINCT 關鍵字用於從 SELECT 查詢中過濾掉重複的行。

9. 以下哪些操作允許用於日期和時間戳列?

  1. 除法
  2. 加法
  3. 減法
  4. 連線

答案:B、C 和 D. 加法、減法和連線是允許用於日期和時間戳列的操作。

10. 從以下運算子中,哪個運算子具有最高的優先順序?

  1. 除法 (/)
  2. 乘法 (*)
  3. 括號 ( ( ) )
  4. 減法

答案:C. 括號內的表示式具有最高的優先順序。

11. 解釋以下 SELECT 查詢返回的輸出

SELECT ename, (sysdate - hiredate)
FROM emp;
  1. 今年的天數
  2. 員工入職年份的天數
  3. 員工在公司工作的天數
  4. 查詢引發異常“ORA-00932: inconsistent datatypes: expected NUMBER got DATE”

答案:C. 表示式 (sysdate-hiredate) 返回員工在公司工作的天數。

12. 以下哪些陳述正確地描述了 Oracle 中的 DUAL 表?

  1. DUAL 表是 Oracle 資料庫中的臨時表
  2. DUAL 表僅包含一個名為 DUMMY 的字元型別列
  3. SYS 擁有的 DUAL 表不能被刪除
  4. 使用者可以在其自己的模式中建立名為 DUAL 的表

答案:B、C、D. Oracle 中的 DUAL 表由 SYS 擁有,幷包含一個型別為 VARCHAR2(1) 的 DUMMY 列。

13. 確定以下查詢返回的輸出型別

SELECT sysdate - hiredate
FROM emp
WHERE empno=7369;
  1. DATE 資料型別
  2. NUMBER 資料型別
  3. VARCHAR2 資料型別
  4. 查詢引發錯誤,因為無法對日期列執行算術運算

答案:B. 兩個日期之間的減法會得到兩個日期之間相差的天數的數值。

14. 哪些表示式不會返回 NULL 值?

  1. SELECT ((10 + 20) * 50) + null from dual;
  2. SELECT 'this is a '||null||'test with nulls' from dual;
  3. SELECT null/0 from dual;
  4. SELECT null||'test'||null as “Test” from dual;

答案:B、D. 任何帶有 NULL 的算術運算都會導致 NULL。

15. 確定以下查詢的輸出

SELECT 'Tutorial''s Point compiles technical tutorials' FROM DUAL;
  1. Tutorial''s Point 編譯技術教程
  2. Tutorial's Point 編譯技術教程
  3. 'Tutorial''s Point 編譯技術教程'
  4. 引發異常“ORA-01756: quoted string not properly terminated”

答案:B。

16. 檢查如下所示的 TRAINING 表

 Name                                      Null?    Type
 ----------------------------------------- -------- -------------

 TRAINING_ID                               NOT NULL NUMBER(5)
 TRAINING_LOCATION                                  NUMBER(7,2)
 START_DATE                                         DATE
 END_DATE                                           DATE
哪些兩個 SQL 語句可以成功執行?(選擇兩個)
  1. SELECT NVL (ADD_MONTHS (END_DATE,1),SYSDATE) FROM training;
  2. SELECT TO_DATE (NVL(SYSDATE-END_DATE,SYSDATE)) FROM training;
  3. SELECT NVL(MONTHS_BETWEEN(START_DATE,END_DATE),’In Progress’) FROM training;
  4. SELECT NVL(TO_CHAR(MONTHS_BETWEEN(START_DATE,END_DATE)),’In Progress’) FROM training;

答案:A、D. 使用 NVL 函式為列在為 NULL 時提供替代值。

17. SELECT 語句中列的選擇被稱為什麼?

  1. 檢索
  2. 選擇
  3. 投影
  4. 限制

答案:C. 投影是在 SELECT 語句中選擇所需列的能力。

18. SELECT 語句返回行的限制被稱為什麼?

  1. 檢索
  2. 投影
  3. 限制
  4. 選擇

答案:C. 限制是透過設定某些條件來限制行數的能力。

19. 關於以下查詢,以下哪一項是正確的?

SELECT col1, col2 
FROM tab1
ORDER BY col1;
  1. 列 COL1 的所有行將按降序排序。
  2. 列 COL1 的所有行將按升序排序。
  3. 查詢會報錯,因為查詢中沒有 WHERE 子句。
  4. 查詢會報錯,因為 ORDER BY 子句應包含 SELECT 子句中的所有列。

答案:B. 預設情況下,ORDER BY 子句按升序排序值。

20. 關於以下 SQL 查詢,以下哪一項是正確的?

SELECT col1,col2
FROM tab1
WHERE col1 = 'A'
ORDER BY col2 DESC, col1;
  1. 它將顯示 col1 值為“A”的行,並按 col1 降序排序,然後按 col2 降序排序。
  2. ORDER BY 子句將不起作用,因為關鍵字 DESC 應始終寫在 ORDER BY 子句的末尾,而不是像查詢中那樣寫在中間。
  3. 以上查詢將根據 col2 降序排序,而 ORDER BY 子句中 col1 的使用將被丟棄。
  4. 它將顯示 col1 值為“A”的行,並按 col1 排序,然後按 col2 排序,因為 ORDER BY 子句的執行是從 SELECT 語句中列的順序開始的。

答案:C. 由於 COL1 在查詢中已作為標量值被過濾和固定,因此不會根據 COL1 進行排序。

21. 關於以下查詢,哪一項是正確的?

SELECT col1, col2
FROM  tab1
ORDER BY col1,col2
WHERE col2 = 'B';
  1. 它成功執行
  2. 它會得到 COL2 值為“B”的所需結果,但不會按列 COL1 和 COL2 排序,因為 ORDER BY 子句出現在 WHERE 子句之前。
  3. 它將顯示 COL2 值為“B”的行,並按 COL1、COL2 排序。
  4. 它會報錯,因為在 Oracle 中,ORDER BY 子句不能寫在 WHERE 子句之前。

答案:D. ORDER BY 子句必須出現在 SELECT 語句的 WHERE 子句之後

22. SELECT 語句的哪些兩個子句對於選擇和投影是必要的?

  1. SELECT、FROM
  2. ORDER BY、WHERE
  3. SELECT、WHERE
  4. SELECT、ORDER BY

答案:C。

23. 以下哪個 WHERE 子句不適合下面的 SELECT 查詢?

SELECT ename, deptno, sal 
FROM emp;
  1. WHERE HIREDATE IN ('02-JUN-2004');
  2. WHERE SAL IN ('1000','4000','2000');
  3. WHERE JOB IN (SALES,CLERK);
  4. WHERE COMM BETWEEN 0.1 AND 0.5;

答案:C. 字串字面量必須用單引號括起來

24. 選擇從 DEPT 表中提取包含字元字面量“er”的 DNAME 值的 WHERE 子句。

  1. WHERE DNAME IN ('%e%r');
  2. WHERE DNAME LIKE '%er%';
  3. WHERE DNAME BETWEEN 'e' AND 'r';
  4. WHERE DNAME CONTAINS 'e%r';

答案:B. LIKE 運算子用於在 SQL 查詢中執行萬用字元搜尋。

25. 以下哪些條件彼此等效?(選擇兩個)

  1. WHERE comm IS NULL
  2. WHERE comm = NULL
  3. WHERE comm IN (NULL)
  4. WHERE NOT(comm IS NOT NULL)

答案:A、D. NOT 運算子可用於否定其運算元的效果。因此 (COMM IS NULL) 等效於 (NOT (COMM IS NOT NULL))。

26. SQL 查詢中哪些子句是必須的?

  1. SELECT、FROM
  2. SELECT、FROM、WHERE
  3. SELECT、WHERE
  4. SELECT、WHERE、ORDER BY

答案:A. SELECT 和 FROM 是 SELECT 查詢中的必須子句。

27. 以下哪些 WHERE 子句條件彼此等效?(選擇三個)

  1. WHERE SAL <=5000 AND SAL >=2000
  2. WHERE SAL IN (2000,3000,4000,5000)
  3. WHERE SAL BETWEEN 2000 AND 5000
  4. WHERE SAL > 1999 AND SAL < 5001

答案:A、C、D. 使用 IN、BETWEEN 和關係運算符可以使這些條件等效。

28. 關於以下查詢,以下哪一項是正確的?

SELECT empno, ename, job
FROM emp
WHERE ename like '_ith%';
  1. 它獲取姓名中任何位置都包含“ith”的員工的員工 ID、姓名和職位。
  2. 它獲取姓名以“ith”開頭的員工的員工 ID、姓名和職位。
  3. 查詢會報錯,因為不能同時編寫兩個字串匹配表示式。
  4. 它獲取姓名以任何字母數字字元開頭,後跟“ith”,然後是“ith”之後任何字母數字字元的員工的員工 ID、姓名和職位。

答案:D。

29. 以下哪個用於結束 SQL 查詢?

  1. :
  2. ;
  3. .
  4. /

答案:B、D。 在SQL*Plus和SQL Developer中,分號 (;) 或反斜槓 (/) 用於終止查詢。

30. 員工JAMES和MILLER想透過查詢資料庫來了解他們的部門ID。以下哪個查詢可以得到所需的結果?

  1. SELECT ename, deptno FROM emp WHERE ename = 'JAMES';
  2. SELECT ename, deptno FROM emp WHERE ename = 'MILLER';
  3. SELECT ename, deptno FROM dept
  4. SELECT ename, deptno FROM emp WHERE ename = 'JAMES' OR ename = 'MILLER' 

答案:D。可以使用OR子句連線多個條件。如果兩個條件中的任何一個為真,則查詢執行成功。

31. 關於WHERE子句,以下哪一項是錯誤的?

  1. WHERE子句可以比較列中的值、字面量、算術表示式或函式。
  2. WHERE子句包含列名。
  3. WHERE子句可以使用列別名。
  4. WHERE子句不能包含值列表或常量。

答案:C、D。

32. Oracle中的預設日期格式是什麼?

  1. DD-MON-YY
  2. DD-MON-YYYY
  3. DD-MM-RR
  4. DD-MON-RR

答案:D。DD-MON-RR是Oracle中的預設日期格式。

33. 預測以下SQL查詢的輸出。

SELECT ename, deptno, sal, comm
FROM emp
WHERE job = 'SALES'
AND hiredate = ”01-JAN-97”;
  1. 它獲取所有SALES員工的員工資料。
  2. 它丟擲錯誤“ORA-00904: "01-JAN-13": 無效識別符號”
  3. 查詢成功執行,但沒有返回結果。
  4. 它獲取所有於1997年1月1日入職的SALES員工的資料。

答案:B。日期字面量必須用單引號括起來。

34. 您需要顯示EMPLOYEES表中所有名為“GARRY”的員工的姓名。以下哪個查詢可以滿足要求?

  1. SELECT first_name FROM employees WHERE first_name LIKE 'GARRY%';
  2. SELECT first_name FROM employees WHERE first_name LIKE '%GARRY%';
  3. SELECT first_name FROM employees WHERE first_name LIKE 'GARRY';
  4. SELECT first_name FROM employees WHERE first_name LIKE '_ARRY%';

答案:C。如果搜尋字串的某些字元未知,可以使用萬用字元。

35. 您需要顯示所有姓氏的第二個字母為's'且部門ID為100的員工的員工ID。以下哪個查詢可以獲取所需的結果?

  1. SELECT emp_id FROM employees WHERE dept_id = 100 AND last_name LIKE '%s%';
  2. SELECT emp_id FROM employees WHERE dept_id = 100 AND last_name LIKE '%s_';
  3. SELECT emp_id FROM employees WHERE dept_id = 100 AND last_name LIKE '_s_%';
  4. SELECT emp_id FROM employees WHERE dept_id = 100 AND last_name LIKE '_s%';

答案:D。萬用字元下劃線 (_) 用於替換單個字元。

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

SELECT first_name, last_name, dept_id 
FROM employees
WHERE hire_date LIKE '%98';
  1. 將顯示所有1998年入職員工的姓名和部門ID。
  2. 將顯示所有2098年入職員工的姓名和部門ID。
  3. 不會返回任何結果。
  4. 將顯示所有在1998年1月1日至1998年12月31日期間入職的員工的姓名和部門ID。

答案:D。LIKE運算子用於對字元和日期字面量執行萬用字元搜尋。

37. 使用以下哪個選項可以根據值的範圍獲取行?

  1. UNION ALL
  2. IN
  3. BETWEEN
  4. LIKE

答案:C。BETWEEN運算子用於根據值的範圍檢索行。

38. 您需要顯示薪水在20000(含)到50000(含)之間的員工的員工ID。以下哪個查詢可以獲取所需的結果?

  1. SELECT emp_id FROM employees WHERE salary >=20000 AND salary <=50000;
  2. SELECT emp_id FROM employees WHERE salary IN (20000, 50000);
  3. SELECT emp_id FROM employees WHERE salary >20000 AND salary <50000;
  4. SELECT emp_id FROM employees WHERE salary between 20000 AND 50000;

答案:A、D。對於較大的值範圍,BETWEEN和關係運算符最適合在查詢中使用。對於大範圍的值,不推薦使用IN運算子。

39. 關於以下查詢,哪一項是正確的?

SELECT first_name, last_name 
FROM employees 
WHERE last_name BETWEEN 'B%' AND 'E%';
  1. 它將顯示所有姓氏以字母“B”開頭到“E”(包含“B”,不包含“E”)的員工。
  2. 它將丟擲錯誤,因為BETWEEN只能用於數字,不能用於字串。
  3. 它將顯示所有姓氏從“B”到“E”的員工。
  4. 它將顯示所有姓氏的首字母在“B”和“E”範圍內的員工,但不包括以“B”和“E”開頭的姓名。

答案:A。BETWEEN運算子也適用於字元值的範圍。

40. 下面提到的查詢的結果是什麼?

SELECT employee_id, last_name, first_name, salary, manager_id 
FROM employees 
WHERE manager_id IN (200,100,300);
ORDER BY manager_id ASC;
  1. 它將顯示所有在ID範圍從100到300的經理手下工作的員工。
  2. 它將顯示所有在ID為100、200或300的經理手下工作的員工。
  3. 它將丟擲錯誤,因為經理ID應該用引號括起來。
  4. 它將丟擲錯誤,因為WHERE子句中manager_id的排序與ORDER BY子句衝突。

答案:B。IN運算子可用於提供少量有限的範圍。

41. 以下哪個子句定義了成員資格條件?

  1. BETWEEN
  2. LIKE
  3. IS NULL
  4. IN (NOT IN)

答案:D。IN運算子定義了一個成員資格條件,該條件可以使用一系列值或子查詢。

42. IN運算子可以使用哪些資料型別?

  1. VARCHAR2
  2. NUMBER
  3. DATE
  4. ALL

答案:D。IN運算子適用於所有型別的值。

43. 您需要顯示所有名為“Bryan”或“Jason”的員工列表。以下哪個查詢可以滿足要求?

  1. SELECT emp_id, last_name, first_name FROM employees WHERE first_name LIKE 'Bryan%' OR first_name LIKE 'Jason%';
  2. SELECT emp_id, last_name, first_name FROM employees WHERE first_name BETWEEN 'Bryan' and 'Jason' ;
  3. SELECT emp_id, last_name, first_name FROM employees WHERE first_name IN ('Bryan', 'Jason');
  4. SELECT emp_id, last_name, first_name FROM employees WHERE first_name = 'Bryan' OR first_name = 'Jason'

答案:C、D。IN運算子檢查作為成員資格條件定義的任何值。

44. 您需要提取名稱包含字串'_DXX'的部門的詳細資訊。以下哪個WHERE子句可以用於SELECT語句以獲取所需輸出?

  1. WHERE dept_id LIKE '%_DXX%' ESCAPE '_'
  2. WHERE dept_id LIKE '%\_DXX%' ESCAPE '\'
  3. WHERE dept_id LIKE '%_D123%' ESCAPE '%_'
  4. WHERE dept_id LIKE '%\_D123%' ESCAPE '\_'

答案:B。

45. 關於ORDER BY子句的預設行為,哪條語句是正確的?

  1. 在字元排序中,值區分大小寫。
  2. 排序操作根本不考慮NULL值。
  3. 只有SELECT列表中指定的列才能在ORDER BY子句中使用。
  4. 如果數值具有小數位,則將從最大值顯示到最小值。

答案:A。ORDER BY子句對字元值進行區分大小寫的排序。

46. 您需要根據以下條件生成EMPLOYEES表中所有員工的報表:1. 員工名不以'T'或'N'開頭。2. 員工薪水超過20000。3. 員工入職時間在2010年1月1日之後。哪個WHERE子句可以得到所需的結果?

  1. WHERE first_name NOT LIKE 'T%' OR first_name NOT LIKE 'N%' AND salary > 20000 AND hire_date > '1-JAN-10'
  2. WHERE (first_name NOT LIKE 'T%' AND first_name NOT LIKE 'N%')OR salary > 20000 OR hire_date > '1-JAN-10'
  3. WHERE first_name NOT LIKE 'T%' AND first_name NOT LIKE 'N%' AND salary > 20000 AND hire_date > '1-JAN-10'
  4. WHERE (first_name NOT LIKE '%T%' OR first_name NOT LIKE '%N%') AND(salary > 20000 AND hire_date > '1-JAN-10')

答案:C。

47. 使用EMPLOYEES表,您需要顯示2013年1月1日之後入職的所有員工的姓名,從應屆畢業生開始。哪個查詢可以得到所需的結果?(選擇所有適用的選項。)

  1. SELECT first_name, hire_date FROM employees WHERE hire_date > '01-JAN-13' ORDER BY 2 DESC;
  2. SELECT first_name, hire_date FROM employees WHERE hire_date > '01-JAN-13' ORDER BY first_name DESC;
  3. SELECT first_name, hire_date FROM employees WHERE hire_date > '01-JAN-13' ORDER BY 1 DESC;
  4. SELECT first_name, hire_date "START DATE" FROM employees WHERE hire_date > '01-JAN-13' ORDER BY "START DATE" DESC;

答案:A、D。

48. 使用EMPLOYEES表,您需要找出在12年3月15日至13年10月15日期間在100和101部門入職的所有員工的姓名和薪水。哪些兩個查詢可以得到所需的結果?(選擇兩個。)

  1. SELECT first_name, salary FROM employees WHERE dept_id IN (100,101) AND hire_date BETWEEN '15-MAR-12' AND '15-OCT-12';
  2. SELECT first_name, salary FROM employees WHERE dept_id = 100 OR dept_id =101 AND hire_date >='15-MAR-12' OR hire_date <='15-OCT-12';
  3. SELECT first_name, salary FROM employees WHERE (dept_id BETWEEN 100 AND 101) AND (hire_date IN ('15-MAR-12','15-OCT-12'));
  4. SELECT first_name, salary FROM employees WHERE (dept_id = 100 OR dept_id =101) AND (hire_date >='15-MAR-12' AND hire_date <='15-OCT-12');

答案:A、D。

49. 使用EMPLOYEES表,您發出以下查詢以生成姓名、當前薪水和加薪後(加薪25%)的薪水。所有員工的加薪後薪水都應超過30000。

SELECT first_name, salary,
salary + (salary *0.25) "INCREASED_SALARY"
FROM employees
WHERE increased_salary >30000;

查詢丟擲ORA-00904錯誤。錯誤的原因是什麼?

  1. SELECT語句中使用的表示式缺少括號。
  2. 必須使用單引號定義列別名。
  3. WHERE子句中不能使用列別名。
  4. WHERE子句中的列別名必須用雙引號括起來。

答案:C。列別名不能在WHERE子句條件中使用,但可以在SELECT語句和ORDER BY子句中使用。

50. 您需要從EMPLOYEES表中顯示屬於部門ID 100且最低薪水為2000或4000且沒有job_id的員工姓名。您發出以下查詢。

SELECT first_name, dept_id, salary
FROM employees
WHERE dept_id = 100 AND (salary = 2000 OR salary = 4000) 
AND job_id <> '';

關於以上查詢,哪條語句是正確的?

  1. 它成功執行,但沒有返回結果。
  2. 它成功執行並返回所需的結果。
  3. 它生成錯誤,因為為job_id指定的條件無效。
  4. 它生成錯誤,因為為salary列指定的條件無效。

答案:A。條件(salary = 2000 OR salary = 4000)結果為FALSE,因為員工一次不能擁有多份薪水。

51. 使用Oracle資料庫中內建的SQL函式可以執行哪些三項任務?(選擇三個。)

  1. 以非預設格式顯示日期
  2. 查詢表示式中的字元數
  3. 用指定的字串替換文字表示式中的字元字串
  4. 將兩個以上的列或表示式組合到輸出中的單個列中

答案:A、B、C。使用格式化函式(TO_CHAR、TO_DATE)和字元函式(LENGTH、REPLACE)來實現目標。

52. 您需要生成一個報表,顯示EMPLOYEES表中所有薪水至少比20000多25%的員工的ID。詳細資訊應按薪水的降序顯示。您發出以下查詢。

SELECT emp_id
FROM employees
WHERE salary>=20000*0.25 
ORDER BY salary*0.25 DESC;

關於以上查詢,哪條語句是正確的?

  1. 它執行併產生所需的結果。
  2. 它產生錯誤,因為ORDER BY子句中不能使用表示式。
  3. 它產生錯誤,因為DESC選項不能與ORDER BY子句中的表示式一起使用。
  4. 它產生錯誤,因為ORDER BY子句中的表示式也應在SELECT子句中指定。

答案:A。ORDER BY子句可以包含列表達式。

53. 檢查TRAININGS表的結構和資料

 Name                                      Null?    Type
 ----------------------------------------- -------- -------------

 TRAINING_ID                               NOT NULL NUMBER(5)
 TRAINING_LOCATION                                  NUMBER(7,2)
 START_DATE                                         DATE
 END_DATE                                           DATE
TRAINING_ID      START_DATE                      TRAINING_COST
------ ---------------- -------------------------------------------------
11 	                 01-JAN-10 			1000
22 		  01-FEB-10 			2000
33 		  01-MAR-10 			3000

日期以預設日期格式dd-mon-rr儲存在TRAININGS表中。以下三個SQL語句將成功執行?(選擇三個。)

  1. SELECT start_date + '10' FROM trainings;
  2. SELECT * FROM trainings WHERE start_date = '01-01-10';
  3. SELECT training_cost FROM trainings WHERE training_id > '11';
  4. SELECT * FROM trainings WHERE start_date ='01-JANUARY-10';

答案:A、C、D。

54. 關於以下查詢,以下哪項陳述是正確的?

SELECT emp_id, first_name 
FROM employees
ORDER BY dept_id;
  1. ORDER BY子句只能包含SELECT語句中的列。
  2. 以上查詢將按降序對結果集進行排序。
  3. ORDER BY子句可以包含相關表中的任何列,而不一定是SELECT語句中的列。
  4. 它在執行時會丟擲錯誤。

答案:C。ORDER BY子句可以使用一個列來排序資料,該列未在列列表中選擇,但包含在FROM子句中使用的表中。

55. 以下查詢演示了ORDER BY子句的哪個特性?

SELECT emp_id, first_name “EmpName”
FROM employees
ORDER BY "EmpName";
  1. ORDER BY子句只能包含SELECT語句中的列。
  2. 以上查詢將按員工姓名的降序對結果集進行排序。
  3. ORDER BY子句與列別名一起使用。
  4. SELECT查詢在執行時會丟擲錯誤,因為ORDER BY子句中不能使用列別名。

答案:C。ORDER BY子句可以與SELECT語句中使用的列別名一起正常工作。

56. 關於下面給出的查詢,哪一項是正確的?

SELECT last_name, job_id, department_id, hire_date 
FROM employees
ORDER BY 2;
  1. 它成功執行,根據JOB_ID對查詢結果進行排序。
  2. ORDER BY子句不能包含數字。
  3. ORDER BY子句將不起作用,因為SELECT語句中沒有任何列在ORDER BY子句中使用。
  4. 查詢執行時報錯。

答案:A。可以在ORDER BY子句中使用列的數字位置。

57. 你需要列出不同工作的員工詳細資訊,但一次只列出一個工作。

SELECT emp_id, first_name, last_name FROM employees WHERE job_id....;

在SQL*Plus中,以下哪種方法更容易實現相同的結果?

  1. 每次替換一個工作 ID
  2. 使用*列出所有員工的詳細資訊
  3. 使用&JOB在每次執行查詢時提示使用者輸入
  4. 宣告會話變數以替換查詢中的工作 ID 值

答案:C。&X表示法會暫停查詢執行,並在每次執行查詢時提示使用者輸入。

58. 關於SQL中的替換變數,以下哪個說法是正確的?

  1. 可以使用替換變數對不同的值執行相同的查詢。
  2. 使用替換變數,需要每次都更改WHERE子句。
  3. Oracle不支援替換變數。
  4. 每次執行查詢時,都必須在替換變數中輸入一個值,這是有限制的。

答案:A。

59. 為替換變數分配哪種資料型別?

  1. VARCHAR2
  2. DATE
  3. 無資料型別
  4. NUMBER

答案:C。替換變數本身沒有資料型別,但會符合與其一起使用的列的資料型別。

60. 關於替換變數,以下哪項是正確的?

  1. 變數中輸入的值保持不變,使用者在第一次執行查詢後無法更改值。
  2. 查詢執行一次後,值將儲存在變數中。
  3. 替換變數只支援數字。
  4. 使用單個與號(&)儲存在替換變數中的值用於第一次執行,然後被丟棄。

答案:D。

61. 以下哪個是SQL*Plus中替換變數的正確語法?

  1. :var
  2. $var
  3. &var
  4. &&var

答案:C、D。

62. 以下哪個替換變數將只接受一次輸入值,然後將其保留在會話的其餘部分?

  1. &&var
  2. &var
  3. :var
  4. ::var

答案:A。帶有雙與號的替換變數會重複使用使用者提供的一次值。

63. 關於替換變數,以下哪個說法是正確的?

  1. 只能輸入數字作為值。
  2. 只能輸入字元字串作為值。
  3. 可以輸入數字和字元作為值。
  4. 以上都不是。

答案:C。

64. 下面給出的查詢有什麼特點?

SELECT first_name, last_name, employee_id, salary 
FROM employees 
WHERE employee_id = &eid;
  1. 它丟擲錯誤“ORA-00904: “&eid”: 無效識別符號”
  2. 它成功執行。
  3. WHERE子句不能包含替換變數。
  4. 查詢提示輸入變數&eid的值,並在採用有效的employee_id值後成功執行。

答案:B, D。

65. 選擇以下關於下面給出的查詢的正確陳述。

SELECT first_name, last_name, &&prompt_col 
FROM employees
ORDER BY &&promp_col;
  1. 它丟擲錯誤,因為不允許使用替換變數prompt_col。
  2. 它成功執行,但結果集未排序。
  3. 它成功執行,但在SELECT語句中輸入的變數值被忽略。
  4. 它成功執行,並且替換變數的值在整個會話中保持不變。

答案:D。替換變數可以在SQL查詢的所有子句中使用。

66. 在SQL*Plus中,哪個命令用於建立和為替換變數賦值?

  1. &var
  2. &&var
  3. SET
  4. DEFINE

答案:D。在SQL*Plus會話中使用DEFINE命令宣告替換變數。

67. 在SQL*Plus中,以下操作的結果是什麼?

DEFINE eid = 117 

SELECT first_name, last_name, employee_id, salary 
FROM employees 
WHERE employee_id = &eid;
  1. SELECT查詢丟擲錯誤,因為無法在會話中定義替換變數。
  2. 它提示使用者輸入變數&eid的值。
  3. 它成功執行,並將員工ID替換為117。
  4. 它忽略DEFINE命令,因為替換變數宣告時沒有使用與號(&)符號。

答案:C。

68. 刪除由DEFINE命令設定的替換變數值的命令是什麼?

  1. UNDEFINE
  2. SET OFF
  3. DELETE
  4. CLEAR

答案:A。使用UNDEFINE命令從會話中刪除替換變數。

69. 以下哪個命令用於在SQL查詢執行前後檢查替換變數的值?

  1. DEFINE
  2. UNDEFINE
  3. SHOW VARIABLE
  4. VERIFY

答案:D。在SQL*Plus和SQL Developer中使用VERIFY命令檢查使用替換變數的值替換。

70. 以下哪些是WHERE子句的有效運算子?

  1. >=
  2. IS NULL
  3. !=
  4. IS LIKE

答案:A, B, C。

71. 評估以下查詢

SELECT ename || q'{'s salary is }' || sal
AS "Salary"
FROM emp;
執行上述查詢時會發生什麼?
  1. 由於無法與[q]運算子一起使用括號而導致錯誤
  2. 由於資料型別不匹配而導致錯誤
  3. 成功執行,並在每個員工姓名的末尾新增一個撇號('s)
  4. 成功執行,並將員工姓名附加到文字“{'s start date was }”

答案:C。

72. 以下哪個WHERE子句謂詞可以正確列出來自20部門的員工?

  1. WHERE deptno IS 20
  2. WHERE deptno 20
  3. WHERE deptno=20
  4. WHERE 20=deptno

答案:C, D。等號運算子(=)用於比較條件中運算元的相等性。

73. 編寫一個SELECT查詢,列出薪水大於1000的員工。

  1. SELECT ename, sal FROM emp WHERE sal GREATER THAN 1000 
  2. SELECT ename, sal FROm emp WHERE sal > 1000
  3. SELECT ename, sal FROM emp WHERE sal >= 1000
  4. SELECT ename, sal FROM emp WHERE sal MORE THAN 1000

答案:B。大於運算子(>)用於比較條件中的運算元。

74. 在SQL*Plus中執行以下查詢時會發生什麼?

SELECT ename, sal, deptno
FROM emp
WHERE sal/10 > deptno*10;
  1. 成功執行,並列出薪水的十分之一大於其部門編號十倍的員工
  2. 由於表示式必須用括號括起來而導致錯誤
  3. 由於WHERE子句無法評估表示式而導致錯誤
  4. 由於WHERE子句無法使用文字而導致錯誤

答案:A。WHERE子句可以包含表示式。

75. 確定下面SELECT語句中的錯誤

SELECT ename, deptno, sal
FROM emp
WHERE job=CLERK;
  1. WHERE子句無法引用JOB列,因為它沒有出現在SELECT列列表中
  2. 字元文字CLERK必須用單引號括起來
  3. 字元文字CLERK必須用括號括起來
  4. 查詢中沒有錯誤

答案:B。字元文字必須用單引號括起來

76. 解讀下面SQL查詢的輸出

SELECT ename, deptno, sal
FROM emp
WHERE sysdate-hiredate > 100;
  1. 查詢列出其入職日期至少比當前日期早100天的員工
  2. 查詢列出在公司工作超過100天的員工
  3. 查詢列出入職日期在當年100天之後的員工
  4. 查詢列出在公司工作少於100天的員工

答案:A, B。日期表示式可以在WHERE子句中使用

77. 以下哪個查詢將顯示1982年12月31日之後入職的員工?

  1. SELECT ename, deptno FROM emp WHERE hiredate > '31-DEC-1982';
  2. SELECT ename, deptno FROM emp WHERE hiredate > to_date('31-DEC-1982','DD-MM-YYYY');
  3. SELECT ename, deptno FROM emp WHERE hiredate > to_char('31-DEC-1982','DD-MM-YYYY');
  4. SELECT ename, deptno FROM emp WHERE hiredate > 31-DEC-1982;

答案:A, B。日期文字必須用單引號括起來。

78. 以下哪個WHERE條件將列出在當前日期入職的員工?

  1. WHERE sysdate-hiredate=0
  2. WHERE sysdate=hiredate
  3. WHERE sysdate-hiredate<1
  4. WHERE to_date (sysdate,'DD-MON-YYYY') = to_date (hiredate='DD-MON-YYYY')

答案:C, D。條件SYSDATE=HIREDATE不起作用,因為SYSDATE包含動態時間戳元件,而hiredate是資料庫中的靜態值。

79. 以下哪些是可以在WHERE子句中使用的日期文字的有效格式?

  1. 24/Mar/95
  2. 02-12-1983
  3. 19-JUN-2001
  4. 31.04.2010

答案:A, C。日期文字的預設格式為DD-MON-RR。

廣告
© . All rights reserved.