Oracle数据库多表查询与连接操作详解
需积分: 9 61 浏览量
更新于2024-07-24
收藏 8.37MB PDF 举报
"Oracle数据库入门教程,包含MLDN李兴华的Oracle学习笔记和带书签版本,专注于介绍Oracle数据库的基础知识,特别是多表查询和统计分析功能。"
Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,对于初学者来说,掌握其基本操作和概念至关重要。本文将探讨Oracle入门中的关键知识点,包括多表查询和统计记录数。
**多表查询**
多表查询是Oracle数据库中常见的操作,用于从两个或更多个表中获取相关数据。查询通常涉及表之间的关联,这可以通过不同的连接类型来实现,如内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)以及全连接(FULL JOIN)。
1. **内连接(INNER JOIN)**:返回两个表中匹配条件的记录。例如,查询雇员名称、部门名称和部门所在地,可以使用如下语句:
```sql
SELECT e.empno, e.ename, d.deptno, d.dname, d.loc
FROM emp e, dept d
WHERE e.deptno = d.deptno;
```
2. **左连接(LEFT JOIN)**:返回左表(在连接操作符左侧的表)的所有记录,即使在右表中没有匹配的记录。若右表没有匹配,结果将填充NULL。例如,确保所有部门都显示,即使没有对应的雇员:
```sql
SELECT e.empno, e.ename, d.deptno, d.dname, d.loc
FROM emp e, dept d
WHERE e.deptno (+) = d.deptno;
```
3. **右连接(RIGHT JOIN)**:与左连接相反,返回右表的所有记录,即使在左表中没有匹配的记录。在Oracle中,右连接可以通过在连接条件中改变 (+) 的位置来实现。
4. **全连接(FULL JOIN)**:返回两个表中所有匹配和不匹配的记录。Oracle不直接支持全连接,但可以通过UNION ALL操作结合LEFT JOIN和RIGHT JOIN实现。
**统计记录数**
在Oracle中,可以使用`COUNT()`函数来统计记录数。例如,查询`emp`表中的记录数量:
```sql
SELECT COUNT(*) FROM emp;
```
**分组和聚合函数**
在查询中,可以使用分组和聚合函数来对数据进行汇总统计。常见的聚合函数有:
- `COUNT()`:计算非NULL值的数量。
- `MAX()`:返回某个列的最大值。
- `MIN()`:返回某个列的最小值。
- `AVG()`:计算某个列的平均值。
- `SUM()`:计算某个列的总和。
配合`GROUP BY`语句,可以按一个或多个列对数据进行分组。例如,统计每个部门的员工人数:
```sql
SELECT deptno, COUNT(empno)
FROM emp
GROUP BY deptno;
```
此外,还可以使用`HAVING`子句在分组后过滤结果,条件必须基于聚合函数的结果。例如,找出员工人数超过5的部门:
```sql
SELECT deptno, COUNT(empno)
FROM emp
GROUP BY deptno
HAVING COUNT(empno) > 5;
```
了解并熟练掌握这些基础概念和操作,对于进一步学习和应用Oracle数据库将大有裨益。随着经验的增长,还可以探索更高级的主题,如索引、存储过程、触发器和性能优化等。
2010-11-14 上传
2019-11-16 上传
2013-07-01 上传
2008-05-26 上传
2011-09-22 上传
2019-03-30 上传
2024-11-07 上传
lljj
- 粉丝: 0
- 资源: 1
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析