Oracle HR经典案例及查询实战

需积分: 23 5 下载量 53 浏览量 更新于2024-09-22 收藏 82KB PDF 举报
Oracle数据库经典练习是一系列针对初学者和进阶用户设计的实用案例,旨在帮助用户熟悉和掌握Oracle数据库管理和操作。以下是一些关键知识点的详细解释: 1. 数据库连接问题 - 当尝试通过sqlplus连接数据库时,如果出现`Oraclenotavailable`错误,可能是由于Oracle服务器未启动或ORACLE_SID配置不正确。确保数据库服务已运行且与提供的连接字符串匹配。 2. 员工姓名查询 - 需要编写SQL查询来查找姓氏(last_name)中第三个字母为'a'的员工,可以使用`LIKE`运算符结合通配符`%`,如`select last_name from s_emp where last_name like '__a%'`。 3. 名字包含特定字符 - 要找出名字中同时包含字母'a'和'e'的员工,可以用`AND`逻辑运算符结合两个`LIKE`条件,如`select first_name from s_emp where first_name like '%a%' and first_name like '%e%'`。另一个版本是`select first_name from s_emp where first_name like '%a%e%'`,这将匹配连续的'a'和'e'。 4. 提成查询 - 为了筛选出有提成的员工,查询包括他们的名字(first_name)、工资(salary)和提成(commission_pct),并按工资和提成金额从小到大排序:`select first_name, salary, commission_pct from s_emp where commission_pct is not null order by salary, commission_pct asc`。 5. 部门信息查询 - 分别找出42部门的职位以及不属于Sales部的部门,可以通过`IN`或`NOT IN`子句实现。 6. 工资范围筛选 - 显示工资不在1000到1550之间的员工信息,按工资降序排列:`select first_name, salary from s_emp where salary < 1000 or salary > 1550 order by salary desc`。 7. 特定职位和年薪查询 - 选择Stock Clerk和Sales Representative职位,年薪在14400到17400之间的员工信息:`select first_name, job_title, annual_sal from s_emp where job_title in ('Stock Clerk', 'Sales Representative') and annual_sal between 14400 and 17400`. 8. NULL值的处理 - `select id, commission_pct from s_emp where commission_pct is null` 会返回commission_pct字段为NULL的记录,而`select id, commission_pct from s_emp where commission_pct = null` 会报错,因为NULL值不等于NULL,正确的写法应是检查NULL值。 9. 表的数量和记录数查询 - 使用SQL的系统函数来获取当前用户拥有的表数量和查询结果集的行数,例如:`SELECT COUNT(*) FROM ALL_TABLES` 和 `SELECT COUNT(*) FROM s_emp`。 10. 错误判断 - 评估`select first_name, dept_id from s_emp where salary > '1450'` 是否会导致错误,这取决于SQL字符串格式和数据类型,确保字符串符合数值型格式并且大于指定值。 这些练习涉及到了SQL查询的基础语法、条件筛选、聚合函数、数据类型处理以及数据库系统的管理,对于提升Oracle数据库操作技能非常有帮助。通过解决这些实际问题,学习者可以巩固对Oracle数据库的理解和实践能力。