Oracle SQL函数详解:集合操作符、常用函数和笛卡尔集

需积分: 10 0 下载量 24 浏览量 更新于2024-09-08 收藏 21KB DOCX 举报
Oracle SQL 函数小结 Oracle 中的 SQL 函数是数据库管理系统中的一种重要组件,它提供了多种函数来帮助开发者快速高效地完成数据库操作。以下是 Oracle 中一些常用的 SQL 函数小结。 **笛卡尔集** 笛卡尔集是两个表的记录相乘,用于将两个表中的每一行都与另一个表中的每一行相匹配。例如,查看树有几层可以使用以下语句: ```sql select count(distinct level) from emp start with empno = 7839 connect by prior empno = mgr; select level, lpad('', 2*level-1) || ename from emp start with empno = 7839 connect by prior empno = mgr; ``` **集合操作符** 集合操作符可以将两个或者多个查询返回的行组合起来。常用的集合操作符有四种: 1. **UNION ALL**:返回各个查询检索出的所有行,包括重复的行。 2. **UNION**:返回各个查询检索出的所有行,不包括重复行。 3. **INTERSECT**:返回两个查询检索出的共有行。 4. **MINUS**:返回将第二个查询检索出的行从第一个查询检索出的行中减去之后剩余的记录。 **UNION 和 UNION ALL 的区别** UNION 和 UNION ALL 都可以将两个或者多个查询返回的行组合起来,但是它们有一个重要的区别。 UNION 会自动去除重复的行,而 UNION ALL 则不会。因此,从效率上来说, UNION ALL 会高一点。 UNION 还会对结果进行重新排序,而 UNION ALL 则会保持原来的顺序。 **MINUS** MINUS 是一个集合操作符,用于从第一个查询结果中减去第二个查询结果。它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL 语句的结果中。如果有的话,那这一笔资料就被去除,而不会在最后的结果中出现。如果第二个 SQL 语句所产生的结果并没有存在于第一个 SQL 语句所产生的结果内,那这笔资料就被抛弃。 **常用函数** Oracle 中提供了许多常用的函数,以下是其中的一些: 1. **NVL**:将空值转换成一个具有实际意义的值。例如: ```sql select ename, sal*12*(1+nvl(comm/10000,0)) from emp; ``` 这条语句将 emp 表中所有员工的一年的总收入计算出来,并将空值转换成 0。 2. **NVl2**:将空值转换成一个具有实际意义的值,例如: ```sql nvl2(c1, c2, c3) --- c1为空,取c3值,如果c1,c3都为空则取c2 ``` 3. **DISTINCT**:防止数据重复性。例如: ```sql select distinct dname from dept; ``` 这条语句将 dept 表中的所有部门名称列出,且不包括重复的记录。 ```sql select distinct d.dname, e.job from ... ``` 这条语句将不同的部门名称和职务列出。