oracle(3)

一、 單選題

1.查看employees表的表結構
在這裏插入圖片描述
哪個選項能夠統計出有李姓(LAST_NAME )員工的部門數量?

A:

SELECT COUNT(*) FROM employees WHERE last_name='李';

B:

SELECT COUNT(dept_id) FROM employees WHERE last_name='李';

C:

SELECT DISTINCT(COUNT(dept_id)) FROM employees WHERE last_name='李';

D:

SELECT COUNT(DISTINCT dept_id) FROM employees WHERE last_name='李';

E:

SELECT UNIQUE(dept_id) FROM employees WHERE last_name='李';

答案:D

解析:要查詢幾個部門裏有姓李的員工,首先要先查詢出姓李的員工所在的部門ID(dept_id),然後把用DISTINCT 去除重複的dept_id,再把結果計數(count)即可。

2.關於右外連接查詢的說法不正確的是:
A:兩表進行右外連接查詢和左外連接查詢查詢出的結果都是一樣的
B:右外連接查詢是以右側的表爲主表
C:右外連接查詢可以和左外連接查詢相互轉換
D: 右外連接查詢查詢時右表中的記錄會全部顯示

答案:A

解析:
左連接是已左邊表中的數據爲基準,若左表有數據右表沒有數據,則顯示左表中的數據右表中的數據顯示爲空。

左聯接的結果集包括 LEFT 子句中指定的左表的所有行,而不僅僅是聯接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯的結果集行中右表的所有選擇列表列均爲空值。

右聯接是左向外聯接的反向聯接。將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將爲左表返回空值。

3.子查詢會被在哪種情況下使用?()
A:創建數據組
B:按特定順序排序數據
C:將數據轉換爲不同的格式
D:基於未知條件檢索數據

參考答案:D

解析:
當where條件未知,但是知道與篩選條件相關的條件時,會用子查詢

4.在數據庫中,user爲用戶表,id爲用戶編號,name爲用戶名,age爲年齡字段。下面關於update user set name=‘tom’,age=21 where id=1語句說法正確的是:

A: 把用戶名爲tom的年齡改爲21
B: 把用戶編號爲1的記錄用戶名修改爲tom年齡修改爲21
C: 把所有用戶記錄的用戶名修改爲tom年齡修改爲21
D: 語法錯誤

參考答案:B

解析:
update user set name=‘tom’,age=21 where id=1語句語法沒有問題,意思爲: 把用戶編號爲1的記錄用戶名修改爲tom年齡修改爲21

5.emp的表結構如下:
在這裏插入圖片描述
用下面的SQL語句查詢數據庫,結果會以什麼順序排列?

SELECT empname,hire_date HIREDATE, salary
FROM EMP
ORDER BY hire_date;

A:隨機排列
B:以hire_date升序排列
C:以hire_date降序排列
D:以字母升序排列
E:以字母降序排列

參考答案:B

解析:
題目中的SQL語句是以hire_date排序的,默認不寫排序方式時結果以升序排列

6.關係模型的數據結構是()
A:數組結構
B:圖結構
C:二維結構
D:樹結構
E:鏈表結構

參考答案:C

解析:
關係模型的數據結構是二維結構

7.哪個SQL語句生成計算列SALARY * 12的別名—年薪?

A:

SELECT ename, salary*12 'Annual Salary' FROM employees;

B:

SELECT ename, salary*12 "Annual Salary" FROM employees;

C:

SELECT ename, salary*12 AS Annual Salary FROM employees;

D:

SELECT ename, salary*12 AS INITCAP("ANNUAL SALARY") FROM employees;

參考答案:B

解析:
作爲列別名的一些注意事項:
1、列別名最大長度爲30個字節(一個漢字2個字節)
2、列別名可以包含數字、小括號、特殊字符,有空格的多個單詞組成的別名必須用雙引號引起來

8.觀察下列表結構
在這裏插入圖片描述
經理要求你查詢出所有部門的信息,這些信息包括:員工的姓名,部門ID,部門名稱和部門所在城市,有可能部門沒有僱員,或者部門是尚未被分配到地點。下列選項能滿足要求的是:

A:

  SELECT e.last_name, d.department_id,
  d.department_name, l.city
  FROM departments d
  RIGHT OUTER JOIN employees e
  ON d.department_id = e.department_id
  RIGHT OUTER JOIN locations l
  ON d.location_id = l.location_id;

B:

  SELECT e.last_name, d.department_id,
  d.department_name, l.city
  FROM departments d
  FULL OUTER JOIN employees e
  ON d.department_id = e.department_id
  FULL OUTER JOIN locations l
  ON d.location_id = l.location_id;

C:

  SELECT e.last_name, d.department_id,
  d.department_name, l.city
  FROM departments d
  LEFT OUTER JOIN employees e
  ON d.department_id = e.department_id
  LEFT OUTER JOIN locations l
  ON d.location_id = l.location_id;

D:

  SELECT last_name, department_id,
  department_name, city
  FROM departments d
  NATURAL JOIN employees e
  NATURAL JOIN locations l;

參考答案:C

解析:
很明顯需要多表連接查詢,按要求需要將departments作爲基表

9.下面哪個是Oracle的普通管理員?
A:sys
B:system
C:scott
D:sh

參考答案:B

解析:
sys:超級管理員
system:普通管理員
scott:普通用戶
sh:海量數據用戶(大數據用戶)

10.觀察EMPLOYEES表的表結構
在這裏插入圖片描述
哪個SQL語句能夠查詢出最低工資低於5000,最高工資超過15000的部門的部門ID、部門員工的最低工資、最高工資?

A:

  SELECT dept_id, MIN(salary), MAX(salary)
  FROM employees
  WHERE MIN(salary) < 5000 AND MAX(salary) > 15000;

B:

  SELECT dept_id, MIN(salary), MAX(salary)
  FROM employees
  WHERE MIN(salary) < 5000 AND MAX(salary) > 15000
  GROUP BY dept_id;

C:

  SELECT dept_id, MIN(salary), MAX(salary)
  FROM employees
  HAVING MIN(salary) < 5000 AND MAX(salary) > 15000;

D:

SELECT dept_id, MIN(salary), MAX(salary)
  FROM employees
  GROUP BY dept_id
  HAVING MIN(salary) < 5000 AND MAX(salary) > 15000;

E:

  SELECT dept_id, MIN(salary), MAX(salary)
  FROM employees
  GROUP BY dept_id, salary
  HAVING MIN(salary) < 5000 AND MAX(salary) > 15000;

參考答案:D

解析:
根據題意,首先要對部門分組,然後過濾出最低工資低於5000、最高工資高於15000的部門

11.having , where , group by 的正確執行順序是( )
A:having,where,group by
B:group by,having,where
C:where,having,group by
D:where ,group by,having

參考答案:D

解析:
查詢中用到的關鍵詞主要包含六個,並且他們的順序依次爲 select–from–where–group by–having–order by

12.有A表(5條記錄)和B表(7條記錄),執行"select * from A,B"以後,產生的記錄爲( )條
A:5
B:7
C:12
D:35

參考答案:D

13.您應該使用哪個子句排除組結果?
A:WHERE
B:HAVING
C:RESTRICT
D:GROUP BY
E:ORDER BY

參考答案:B

解析:
分組後再篩選用having

14.在下列哪種情況下你會選擇使用全連接查詢()
A:兩個表都具有NULL值。
B:您想要一個表中的所有不匹配的數據。
C:您想要兩個表中的所有匹配數據。
D:您需要兩個表中的所有不匹配的數據。
E:其中一個表具有比另一個更多的數據。
F:您想要一個表中匹配或不匹配的數據。

參考答案:D

解析:
全連接可以查詢出連接的表中匹配和不匹配的數據

15.以下SQL語句,能正確執行的是( )
A:

  select e.department_id,sum(e.salary),round(avg(e.salary),2) "AvgSalary"
  from employees e
  order by e.department_id
  group by e.department_id

B:

  select e.department_id, e.salary
  from employees e
  group by e.department_id
  order by e.department_id

C:

select sum(e.salary),round(avg(e.salary),2) "AvgSalary"
  from employees e
  group by e.department_id
  order by e.department_id

D:

  select e.department_id,sum(e.salary),round(avg(e.salary),2) "AvgSalary"
  from employees e
  group by e.department_id
  order by e.department_id

參考答案:D

16.下面屬於DDL的是:
A:commit
B:create
C:select
D:update

參考答案:B

解析:
SQL語言共分爲四大類:數據查詢語言DQL,數據操縱語言DML,數據定義語言DDL,數據控制語言DCL。

1、數據查詢語言DQL
數據查詢語言DQL基本結構是由SELECT子句,FROM子句,WHERE
子句組成的查詢塊:
SELECT <字段名錶>
FROM <表或視圖名>
WHERE <查詢條件>

2、數據操縱語言DML
數據操縱語言DML主要有三種形式:
1)插入:INSERT
2)更新:UPDATE
3)刪除:DELETE

3、數據定義語言(DDL Data Definition):create創建、alter更改、truncate截斷、drop刪除

4、DCL(Data Control Language,數據控制語言):用來授予或回收訪問數據庫的某種特權,並控制數據庫操縱事務發生的時間及效果。如:
grant:授權;
revoke:取消權限;

TCL(Transaction Control Language,事物控制語言):
用來對事務進行管理。 如:
COMMIT : 保存已完成事務動作結果
SAVEPOINT : 保存事務相關數據和狀態用以可能的回滾操作
ROLLBACK : 恢復事務相關數據至上一次COMMIT操作之後

17.基於下列兩張表
在這裏插入圖片描述
查詢出所有員工的所有信息,無論該員工是否被分配了部門

A:

SELECT last_name, department_nameFROM employees NATURAL JOIN departments;

B:

SELECT last_name, department_name FROM employees JOIN departments ;

C:

  SELECT last_name, department_name
  FROM employees e JOIN departments d
  ON (e.department_id = d.department_id);

D:

  SELECT last_name, department_name
  FROM employees e
  RIGHT OUTER JOIN departments d ON (e.department_id = d.department_id);

E:

  SELECT last_name, department_name
  FROM employees FULL JOIN departments
  ON (e.department_id = d.department_id);

F:

  SELECT last_name, department_name
  FROM employees e LEFT OUTER
  JOIN departments d ON (e.department_id = d.department_id);

參考答案:F

解析:
觀察employees表可以發現,有些員工並沒有被分配部門,所以想要查詢出所有員工的所有信息,只能用外連接,將employees作爲一個基表,departments沒有與之匹配的可以用null代替。

18.關於等值連接說法正確的是()
A:通過等值連接最多隻能關聯兩張表
B:通過等值連接最多隻能關聯兩列
C:在查詢語句中把等值連接的條件寫在select或from子句裏
D:通過等值連接可以關聯2張表,作爲關聯條件的列必須是主鍵和外鍵
E:通過等值連接可以關聯n張表(這些表都具有單列主鍵),但是最少要有n-1個關聯條件

參考答案:E

解析:
等值連接對關聯表的數量沒有限制,只要滿足關聯條件大於等於表的數量-1即可

19.SQL中,允許使用通配符進行字符串的匹配操作,其中%可以表示()
A:零個字符
B:一個字符
C:多個字符
D:以上答案都對

參考答案:D

20.對SQL語句的描述中,下列說法不正確的有
A: 使用關鍵字distinct消除冗餘
B: where用於指定篩選條件
C: sql關鍵字區分大小寫
D: 字符串比較按照字典排序

參考答案:C

解析:
sql不區分大小寫

二、 多選題

1.關於子查詢說法正確的有?(請選出兩項)
A:子查詢只應檢索一行。
B:子查詢可以檢索零個或多個行。
C:子查詢只能在SQL-select語句中使用。
D:子查詢不能被多於兩個級別嵌套。
E:子查詢不能在使用組函數的SQL查詢語句中使用。
F:當子查詢與外部SQL語句中的不等式比較運算符一起使用時,子查詢的SELECT子句中的列只能包含一列。

參考答案:BF

解析:
A.子查詢與普通的查詢一樣,可以查詢多行數據;
C.子查詢可以用在select、update、insert中;
D.子查詢的嵌套不受層數的限制;
E.子查詢的使用條件不受組函數的影響。

2.關於where和having子句說法正確的有?(請選出兩項)
A:WHERE子句可用於限制行和組。
B:WHERE子句只能用於限制行。
C:HAVING子句可用於限制行和組。
D:HAVING子句只能用於限制組。
E:如果查詢使用HAVING子句,則不能在查詢中使用WHERE子句。
F:HAVING子句不能在子查詢中使用。

參考答案:BD

解析:
where只能用於行數據的篩選;having只能用於組數據的篩選。

3.在哪種情況下,會用到外連接查詢?(請選出兩項)
A:要連接的表具有NOT NULL列。
B:要連接的表只有匹配的數據
C:要連接的列具有NULL值。
D:要連接的表只有不匹配的數據。
E:要連接的表具有匹配和不匹配的數據。
F:僅當表具有主鍵 - 外鍵關係時

參考答案:CE

解析:
外連接是在一個表的基礎上,匹配另一個表,當另一張表沒有與之匹配的數據時以空值代替。

4.關於子查詢下列敘述正確的有?(請選出三項)
A:單行子查詢只能檢索一個列和一行
B:單行子查詢只能檢索一行,但能檢索許多列
C:多行子查詢可以檢索多行、多列
D:多行子查詢結果可以被用來作爲>”運算符的比較項
E:單行子查詢可以使用IN運算符
F:多行子查詢結果可以使用“=”來和別的值比較

參考答案:BCE

解析:
E選項看似不正確,但是細想一下,IN的子句即使是一個值也沒問題,在這裏IN的效果無非和“=”是一樣的。

5.下列sql語句正確的有?(選出正確的兩項)
A:update user name=‘張三’,age=22 where id=1
B: update user set age=22,name=‘張三’ where id=1
C: update user set name=‘張三’,age=18 where id=1
D: update from user set name=‘張三’,age=20 where id=1

參考答案:BC

解析:
Update語句用於修改表中的數據。 語法: UPDATE 表名稱 SET 列名稱 = 新值,列名稱2 = 新值2… WHERE 列名稱 = 某值

6.根據下表
在這裏插入圖片描述
子查詢有效的是?(請選出三項)
A:

  SELECT *
  FROM employees
  where salary > (SELECT MIN(salary)
  FROM employees
  GROUP BY department_id);

B:

  SELECT *
  FROM employees
  WHERE salary = (SELECT AVG(salary)
  FROM employees
  GROUP BY department_id);

C:

  SELECT distinct department_id
  FROM employees
  WHERE salary > ANY (SELECT AVG(salary)
  FROM employees
  GROUP BY department_id);

D:

  SELECT department_id
  FROM employees
  WHERE salary > ALL (SELECT AVG(salary)
  FROM employees
  GROUP BY department_id);

E:

  SELECT last_name
  FROM employees
  WHERE salary > ANY (SELECT MAX(salary)
  FROM employees
  GROUP BY department_id);

F:

  SELECT department_id
  FROM employees
  WHERE salary > ALL (SELECT AVG(salary)
  FROM employees
  GROUP BY AVG(SALARY));

參考答案:CDE

解析:
A.選項子查詢的結果有三個,用>運算符會報錯;
B.選項子查詢的結果有三個,用=運算符會報錯;
C.>ANY(子查詢),>子查詢的某一個結果
D.同上
E.>All(子查詢),>子查詢的所有結果,即大於子查詢結果的最大值
F.錯在分組函數GROUP BY的值不能是組函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章