Oracle面试与练习:CASE, DECODE函数及关联查询解析
需积分: 8 7 浏览量
更新于2024-09-13
收藏 48KB DOCX 举报
"Oracle练习与面试题集合,包含对Oracle数据库操作的练习和面试常见问题,包括使用CASE和DECODE函数处理部门信息,查询工资高于部门平均工资的员工,以及不同类型的表连接操作。适用于Oracle数据库初学者和缺乏实践经验的学习者,所有题目均附有答案和解析,使用的是SCOTT用户的表作为示例数据。"
在Oracle数据库中,CASE和DECODE函数是用于条件判断和转换值的工具,常在SQL查询中用于根据特定条件返回不同的结果。在给定的面试题中,这两个函数被用来根据员工的部门编号(deptno)展示对应的部门名称。
1. CASE函数的使用:
CASE函数允许我们编写多条件分支的逻辑,例如:
```sql
SELECT t.ename,
CASE t.deptno
WHEN 10 THEN '部门10'
WHEN 20 THEN '部门20'
WHEN 30 THEN '部门30'
ELSE '其他部门'
END AS 部门
FROM emp t;
```
这个查询会返回每个员工的名字和他们所在部门的名称,根据deptno的值进行匹配。
2. DECODE函数的使用:
DECODE函数则是另一种简洁的条件判断方式,它可以直接在比较运算中使用,如下所示:
```sql
SELECT t.ename,
DECODE(t.deptno, 10, '部门10', 20, '部门20', 30, '部门30', '其他部门') AS 部门
FROM emp t;
```
这个查询与上面的CASE函数例子实现相同的功能,但语法更紧凑。
3. 查询工资高于部门平均工资的员工:
```sql
SELECT t1.ename, t1.job, t1.sal
FROM emp t1,
(SELECT t.deptno, AVG(sal) AS avg_sal FROM emp GROUP BY t.deptno) t2
WHERE t1.deptno = t2.deptno
AND t1.sal > t2.avg_sal;
```
这个查询首先计算每个部门的平均工资,然后找出那些工资高于其所在部门平均工资的员工。
4. 表的关联操作:
在Oracle中,我们经常需要将多个表的数据结合在一起。这里展示了等值连接和左连接的例子:
- 等值连接(INNER JOIN):
```sql
SELECT col1, col2, col3, col4
FROM a1, b1
WHERE a1.col1 = b1.col3;
```
等值连接返回两个表中col1和col3值相等的记录。
- 左连接(LEFT OUTER JOIN):
```sql
SELECT *
FROM a1
LEFT OUTER JOIN b1 ON a1.col1 = b1.col3;
```
左连接返回所有a1表的记录,即使在b1表中没有匹配的记录。如果在b1中有匹配,则显示相应的记录;如果没有,对应b1的字段将填充NULL。
这些练习和面试题涵盖了基础的Oracle SQL操作,包括条件判断、聚合函数以及表的连接,对于理解Oracle数据库的基本操作具有很好的学习价值。通过这些练习,学习者可以提升自己的SQL技能,更好地应对实际工作中的问题。
2016-10-01 上传
2009-06-16 上传
2020-12-14 上传
2011-09-02 上传
2012-06-09 上传
2009-10-17 上传
2013-03-14 上传
2009-05-10 上传
2017-04-27 上传
qq343526776
- 粉丝: 0
- 资源: 10
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫