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的值不能是组函数

发布了35 篇原创文章 · 获赞 24 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/thumbs_up_sign_ygj/article/details/105009604