Oracle 9i笔试题B:部门名转换与工资汇总

需积分: 12 2 下载量 65 浏览量 更新于2024-09-20 收藏 42KB DOC 举报
Oracle 9i 笔试题B涵盖了基础的数据库管理和SQL查询知识。以下是对三个题目逐个解析: 1. 问题:下面哪一个查询将以小写字母显示各个部门的名称? - 解析:在这个问题中,需要选择一个能够将`Dname`列中的文本转换为小写形式的SQL语句。选项A使用了未定义的`LOW`函数,选项B使用了`LOWER`函数,这是标准的Oracle SQL中用于将字符串转换为小写的函数,所以正确答案是**b.SELECTLOWER(dname)FROMdept;** 选项C使用了`LOWERCASE`,也是正确的拼写,所以另一个正确答案是**c.SELECTLOWERCASE(dname)FROMdept;** 选项D中的`NOTUPPER`没有这个函数,所以不正确。 2. 问题:如果`Sal`列包含员工工资,而`Comm`列包含销售代表的佣金,下面哪个查询将显示每个员工的总工资(包括工资和佣金,若无佣金则显示工资)? - 解析:为了计算总工资,我们需要确保在没有佣金的情况下,只显示工资。选项A使用`NVL`函数处理这种情况,如果`comm`为NULL(即无佣金),则返回`sal`;其余选项没有明确地处理这种条件。因此,正确答案是**a.SELECTename,sal+NVL(comm,0)AS”GrossSalary”FROMemp;** 选项B使用`NVL2`,与`NVL`类似,但语法更精确,正确;选项C没有使用`NVL`处理NULL值,不完整;选项D的`NVL(sal+com,sal)`在没有佣金时可能直接相加导致错误。 3. 问题:下面哪个查询将返回在部门10工作的所有人的总工资?给出所有正确的答案。 - 解析:要计算部门10的总工资,需要使用`SUM`函数来求和`Sal`列的值。然而,选项B中的`TOTAL`不是一个有效的SQL函数,所以排除。正确答案是**a.SELECTSUM(sal)FROMempWHEREdeptno=10;** 如果想强调没有错误的写法,还可以选择**c.SELECTSUM(sal)FROMempWHEREdeptno=10**,尽管这与选项A含义相同。 总结:Oracle 9i的笔试题涉及SQL查询的基本语法和函数应用,重点考察了数据处理、字符串操作和聚合函数的使用。在实际工作中,熟悉这些基本操作对于编写高效且准确的SQL查询至关重要。