好文档 - 专业文书写作范文服务资料分享网站

第1章 简查询、限制性查询和

天下 分享 时间: 加入收藏 我要投稿 点赞

第1章 简单查询、限制性查询和 数据的排序 练习题和解答

1.ACCOUNT表包括了如下的列:

ACCOUNT_ID NEW_BALANCE PREV_BALANCE FINANCE_CHARGE

NUMBER(12) NUMBER(7,2) NUMBER(7,2) NUMBER(7,2)

如果要用最简单的方法显示ACCOUNT表中所有的记录,则应该使用以下哪个查询语句?

A.SELECT * FROM account; B.SELECT any FROM account; C.SELECT all FROM account;

D.SELECT account_id, new_balance, prev_balance ,finance_charge FROM account;

练习题解释:这一题主要是测试对*和投影操作的理解。在查询语句中*表示所有的列,只要理解了*的用法,就可以确定答案是选项A。而在Select列表中并未包括any和all,有关这一点可以参阅本章1.9节中Select语句的定义。由这个定义可知SELECT关键字之后可以跟*,也可以跟Select列表。这个列表可以是列名,也可以是表达式,但是并未包括any和all。

其实,选项D也可以获取与选项A完全相同的结果,但这一问题要求使用最简单的方法,显然选项A比选项D简单。如果没有选项A,选项D就是正确的答案了。

练习题的答案是:A。

2.TEACHER表包括了如下的列:

ID LAST_NAME FIRST_NAME SUBJECT_ID

NUMBER(9) Primary Key VARCHAR2(25) VARCHAR2(25) NUMBER(9)

如果要显示每位老师的全名,同时显示每位老师所负责教授的科目(subject)号,则应该使用以下哪个查询语句?

A.SELECT * FROM teacher;

B.SELECT last_name, subject_id FROM account;

Oracle数据库管理与开发习题集(适用于OCP认证) C.SELECT last_name, first_name FROM account;

D.SELECT last_name, first_name, subject_id FROM account;

练习题解释:这一题还是测试对*和投影操作的理解,只要理解了*的用法,就可以确定选项A不可能是正确答案,因为在这个查询结果中将包括ID列,而按照题目的要求,这一列是不应该显示的。所以答案只能是选项D,因为在选项B中缺少first_name列,而在选项C中缺少subject_id列。

练习题的答案是:D。

3.EMPLOYEES表包括了如下的列:

EMPLOYEE_ID LAST_NAME FIRST_NAME DEPARTMENT_ID POSITION MANAGER_ID SALARY

NUMBER VARCHAR2(25) VARCHAR2(25) NUMBER(3) VARCHAR2(30) NUMBER NUMBER(6,2)

Primary Key

如果使用了如下的查询语句,请问哪个选项是正确的?

SELECT DISTINCT department_id, manager_id FROM employees;

A.某一特定的部门号(DEPARTMENT_ID)只能显示一次

B.某一特定的经理号(MANAGER_ID)可能显示不止一次(多次) C.MANAGER_ID和DEPARTMENT_ID可能会显示不止一次

D.查询语句将失败,因为DISTINCT关键字只可以使用在单一列的SELECT列

表中

练习题解释:这一题主要是测试对本章1.8节DISTINCT运算符的理解。在本章的例1-20中,读者已经看到了DISTINCT可以作用于多列,而此时显示的结果为每一种列组合只显示一行。因此这一查询语句是MANAGER_ID和DEPARTMENT_ID的每种组合只显示一行(一次),而不是DEPARTMENT_ID只显示一次,所以选项A肯定是错的。而基于同样的理由,选项C也肯定是错的。由于DISTINCT关键字可以作用于多列,所以选项D的“DISTINCT关键字只可以使用在单一列的SELECT列表中”的这一陈述显然是站不住脚的,因此选项D也是错的。由于查询语句是MANAGER_ID和DEPARTMENT_ID的每种组合只显示一行(一次),所以经理号(MANAGER_ID)是可能会显示多次的,即选项B是正确答案。

练习题的答案是:B。

4.以下是表INVENTORY中的内容:

2

第1章 简单查询、限制性查询和数据的排序

如果使用如下的SQL语句查询这个库存(INVENTORY)表,哪一个值会第一个显示?

SELECT FROM WHERE ORDER BY

id_number inventory

price BETWEEN 5.00 AND 15.00 description, manufacturer_id;

A.25023 B.25026 C.32096 D.45025

练习题解释:这一题首先测试对WHERE子句中使用BETWEEN AND比较运算符(在本章 1.11节中)的理解,其次是测试对ORDER BY子句的理解。Oracle服务器将首先选择出价格(price)在5.00~15.00之间的所有记录,之后按照description和manufacturer_id组合按升序排序——首先按description以升序排序,当description相同时,再按manufacturer _id升序排序。由于在满足WHERE条件的记录中,Cable是description列中的最小值,而这个记录的ID_NUMBER是25023,所以选项A是正确的。要注意的是,在查询的这个表中只有一条记录的description列的值是Cable,所以已经没有必要再考虑manufacturer_id了,否则还要考虑manufacturer_id的排序顺序。

练习题的答案是:A。

5.在一个SELECT语句中,应该使用WHERE子句来完成以下的哪些工作? A.指定INVENTORY表的位置(地址)

B.将MANUFACTURER_ID 的值与897898进行比较 C.仅显示MANUFACTURER_ID的值 D.限制SUM(price)函数的输出

练习题解释:这一题主要测试对WHERE 子句用法的理解。在本章的1.10节中有关WHERE子句的解释是这样的:WHERE是关键字,其后跟限制条件;而条件是由列名、字符串、算术表达式、常量和比较运算符组成的。理解了这段解释就不难看出选项B是正确的。因为WHERE 子句无法指定一个表的位置,所以选项A肯定是错误的。WHERE 子句没法限定显示列表中的列,显示特定的列是投影操作(见本章的1.2节),是SELECT子句的工作,而WHERE 子句完成的是选择操作(见本章的1.10节),因此选项C不可能是正确答案。WHERE 子句不能限制分组函数,如SUM、AVG或MAX等,所以选项D

3

3jlfp6fh774n25q6ny0j2r4yi9c8on003u5
领取福利

微信扫码领取福利

微信扫码分享