Oracle练习题解析与案例实战

需积分: 3 2 下载量 124 浏览量 更新于2024-08-01 收藏 145KB DOC 举报
Oracle练习题集涵盖了Oracle数据库的基础操作和查询技巧,适合学习者进行实战练习。以下是几道题目及其解答和知识点的详细解析: 1. 连接数据库错误: 当出现`Oraclenotavailable`错误时,可能是因为Oracle服务器未启动或ORACLE_SID设置不正确。确保检查服务器状态(通过`lsnrctl`命令行工具或者服务管理器)和正确的数据库实例标识符(SID)是否已配置在客户端环境变量中。 2. 查找特定姓氏特征的员工: 通过`LIKE`运算符的通配符`%`,可以筛选出姓氏中第三个字母为'a'的员工,如: ```sql SELECT last_name FROM s_emp WHERE last_name LIKE '__a%' ``` `%`表示任意字符序列,两个`__`用于指定第三个字母的位置。 3. 姓名中包含'a'和'e'的员工: 使用`AND`逻辑运算符组合两个`LIKE`条件: ```sql SELECT first_name FROM s_emp WHERE first_name LIKE '%a%' AND first_name LIKE '%e%' ``` 这将返回同时包含'a'和'e'的员工名字。 4. 提取有提成的员工信息: 查询包括名字、工资和提成,按工资降序,提成升序排列: ```sql SELECT first_name, salary, commission_pct FROM s_emp WHERE commission_pct IS NOT NULL ORDER BY salary DESC, commission_pct ASC ``` 这展示了有提成且提成不为NULL的员工,工资由高到低,提成由小到大。 5. 查询特定部门的职位: 例如查询部门ID为42的所有职位: ```sql SELECT DISTINCT title FROM s_emp WHERE dept_id = 42 ``` 这将返回42部门的所有不同职位。 6. 除Sales部门外的其他部门: 通过排除操作查询非Sales部门的部门信息: ```sql SELECT id, name, region_id FROM s_dept WHERE name <> 'Sales' ``` 显示所有不叫'Sales'的部门的ID、名称和区域ID。 7. 筛选工资范围之外的员工: 按工资降序显示工资不在1000到1550之间的员工信息: ```sql SELECT first_name, salary FROM s_emp WHERE salary NOT BETWEEN 1000 AND 1550 ORDER BY salary DESC ``` 8. 特定职位和年薪范围内的员工: 查询StockClerk和Sales Representative职位,且年薪在14400至17400之间的员工数据: ```sql SELECT first_name, title, salary * 12 AS ann_sal FROM s_emp WHERE title IN ('StockClerk', 'SalesRepresentative') AND salary BETWEEN 1200 AND 1450 ``` 结果包括姓名、职位和年薪。 9. 空值查询与选择: `SELECT id, commission_pct FROM s_emp WHERE commission_pct IS NULL`:此查询返回commission_pct字段值为NULL的员工的ID。相反,`SELECT * FROM s_emp WHERE commission_pct IS NOT NULL`则会筛选出有提成的员工。 这些题目涵盖了Oracle SQL的基础操作,包括连接数据库、数据过滤、排序以及对NULL值的处理,有助于巩固SQL查询理解和实践。通过解决这些问题,学习者能够更好地掌握Oracle数据库的基本操作。