"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数据库将大有裨益。随着经验的增长,还可以探索更高级的主题,如索引、存储过程、触发器和性能优化等。