Oracle练习与解答:查询部门30员工、办事员信息及佣金高于薪金的员工

4星 · 超过85%的资源 需积分: 10 26 下载量 59 浏览量 更新于2024-08-02 1 收藏 72KB DOC 举报
"Oracle练习题和答案" 在Oracle数据库管理中,熟悉SQL查询是至关重要的,以下的练习题和答案旨在帮助你巩固对SQL语言的理解,特别是针对Oracle数据库系统的使用。 1. **选择特定部门的员工** 练习题:选择部门30中的所有员工。 解答:通过使用`SELECT`语句,可以查询`emp`表中`deptno`字段等于30的所有记录。例如: ``` SELECT * FROM emp WHERE deptno = 30; ``` 结果显示了部门30的所有员工,包括他们的员工号、姓名、工作、上级编号、受雇日期、薪金、佣金和部门编号。 2. **按职位筛选员工信息** 练习题:列出所有办事员(CLERK)的姓名、编号和部门编号。 解答:使用`WHERE`子句过滤出`job`字段等于'CLERK'的记录: ``` SELECT empno, ename, deptno FROM emp WHERE job = 'CLERK'; ``` 这将返回所有职位为办事员的员工的编号、姓名和所在部门。 3. **查找佣金高于薪金的员工** 练习题:找出佣金高于薪金的员工,同时考虑佣金可能为空的情况。 解答:Oracle提供了`NVL`函数,用于处理NULL值。当`comm`字段为空时,将其替换为0再与`sal`进行比较: ``` SELECT * FROM emp WHERE NVL(comm, 0) > sal; ``` `NVL(comm, 0)`确保即使佣金为NULL,也会将其视为0进行比较,这样就能找到所有佣金高于薪金(包括佣金为空但薪金小于0的特殊情况)的员工。 这些练习涵盖了基础的SQL查询操作,包括选择特定列、筛选条件以及处理NULL值。通过这样的练习,你可以提高在Oracle环境中执行数据查询和分析的能力。在实际工作中,熟练掌握这些技巧对于数据查询和报表制作至关重要。记住,不断实践是提升技能的关键,可以尝试设计更多复杂的查询,如联接多表、分组统计、排序和限制结果集等。