Oracle数据库多表查询与连接操作详解

需积分: 9 0 下载量 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数据库将大有裨益。随着经验的增长,还可以探索更高级的主题,如索引、存储过程、触发器和性能优化等。
2013-06-03 上传