Oracle SQL查询详解:等值连接与运算操作

需积分: 26 6 下载量 192 浏览量 更新于2024-08-15 收藏 3.47MB PPT 举报
"这篇文档详细介绍了Oracle SQL中的等值连接及其不同种类,包括等值连接、非等值连接、外连接和自连接。通过实例展示了如何编写SELECT查询语句,如何处理空值,如何给查询字段起别名,以及如何进行字段连接。文档还深入解释了如何在查询中运用算数表达式,比如计算年薪,并强调了括号在运算优先级中的作用。" 在Oracle SQL中,等值连接是连接两个或多个表时,基于指定列的相等条件进行数据匹配的一种方式。例如,如果我们有两个表`emp`和`dept`,并且想找出所有`emp`表中部门ID与`dept`表中部门ID相等的记录,我们可以使用等值连接: ```sql SELECT emp.*, dept.* FROM emp JOIN dept ON emp.dept_id = dept.dept_id; ``` 非等值连接则允许我们在连接条件中使用不等于(`<>`)或其他比较运算符,例如: ```sql SELECT emp.*, dept.* FROM emp JOIN dept ON emp.salary > dept.avg_salary; ``` 外连接分为左连接、右连接和全连接。左连接(LEFT JOIN)保留左表的所有记录,即使在右表中没有匹配的记录;右连接(RIGHT JOIN)反之;全连接(FULL JOIN)返回两个表中所有匹配的记录,以及左表和右表中没有匹配的记录。 自连接是将一个表与自身进行连接,常用于处理层次结构数据,如员工的上下级关系: ```sql SELECT a.last_name AS manager, b.last_name AS employee FROM emp AS a JOIN emp AS b ON a.emp_id = b.manager_id; ``` 在SELECT查询中,我们可以选择查询特定的列,如`dept_id`和`salary`,并可以使用算术表达式来处理数值,如计算年薪: ```sql SELECT last_name, salary, salary * 12 AS annual_salary FROM s_emp; ``` 此外,我们还可以使用别名简化列名,例如`AS`关键字,以及用括号来设定运算的优先级: ```sql SELECT last_name, (salary + 100) * 12 AS adjusted_annual_salary FROM s_emp; ``` 在处理空值(NULL)时,需要注意它们在比较运算中特殊的行为,例如`WHERE`子句中使用`IS NULL`或`IS NOT NULL`来过滤空值记录。同时,可以使用`NVL`, `COALESCE`或`CASE`语句来处理空值,以避免在计算或比较时出现问题。 总结起来,本篇文档提供了丰富的Oracle SQL查询知识,涵盖了连接操作的基础到进阶技巧,对于理解和使用Oracle数据库进行数据查询非常有帮助。