ORACLE语句学习档

导读:-comparison_expn的时候,就返回return_expn-else就返回esle_exp]-end[别名]*用法举例:-selectempno,ename,sal,-casedeptnowhen10then'财务部'-when20then'研发部'-when30then'销售部'-else'未知部门'-end部门-fromemp;########

ORACLE语句学习档

- comparison_expn 的时候,就返回 return_expn - else 就返回 esle_exp ] - end [别名]

* 用法举例:

- select empno, ename, sal,

- case deptno when 10 then '财务部' - when 20 then '研发部' - when 30 then '销售部' - else '未知部门' - end 部门 - from emp;

##########[ DECODE()函数 ]##########

* 和CASE()表达式类似,DECODE()函数也用于实现多路分支结构

* 语法格式:

- decode(col|expression, search1, result1 - [, search2, result2, ...,]

- [, default])

* 说明:

- 如果 col|expression 是 search1 的时候,就返回 result1 - [ search2 的时候,就返回 result2, ...] - [, default]) - [别名]

* 用法举例:

- select empno, ename, sal,

- decode(deptno, 10, '财务部', - 20, '研发部', - 30, '销售部', - '未知部门') - 部门 - from emp;

##########[ 函数嵌套 ]##########

* 单行孙数可以嵌套使用, 嵌套层次无限制

* 嵌套函数的执行顺序是由内到外

- select empno, lpad(initcap(trim(ename)), 10, '*') name, job, sal from emp;

##########[ 单行函数小结 ]##########

* 使用系统提供的单行函数可实现如下功能: - 对数据进行计算

- 控制数据的输出格式

- 设置/改变日期的显示格式 - 进行数据类型转换 - 使用NVL函数处理空值

- 实现IF-THEN-ELSE多路分支逻辑

##########[ 分组函数 ]##########

* 分组函数对一组数据进行运算,针对一组数据(多行记录)只返回一个结果,也称多行函数

* 常用分组函数

- 函数 功能说明 适用类型 - avg() 计算平均值 数值型

- count() 返回查询所行到的记录行数 任何类型数据 - max() 计算最大值 任何类型数据 - min() 计算最小值 任何类型数据 - sun() 求和 数值型

* 举例:

- select avg(sal), max(sal), min(sal), sum(sal) from emp; - select max(hiredate), min(hiredate) from emp;

##########[ COUNT()函数 ]##########

* count(*) 返回组中总记录数目

* count(exp) 返回表达式exp值非空的记录数目

* count(distinct(exp)) 返回表达式exp值不重复的, 非空的记录数目

* 举例:

- select count(*) from emp;

- select count(comm) from emp;

- select count(distinct(deptno)) from emp;

##########[ 分组函数与空值 ]##########

* 分组函数省略列中的空值 - select avg(comm) from emp; - select sum(comm) from emp;

* 可使用NVL()函数强制分组函数处理空值 - select avg(nvl(comm, 0)) from emp;

##########[ GROUP BY子句 ]##########

* GROUP BY 子句将表中数据分成若干小组

* 语法格式

- select column, group_function(column) - from table - [where condition]

- [group by group_by_expression] - [order by column]

* 例:

- select deptno, avg(sal) from emp group by deptno;

- select deptno, avg(sal) from emp where deptno > 10 group by deptno; - select deptno, avg(sal) from emp group by deptno order by deptno desc;

* 说明:

- 出现在SELECT列表中的字段,如果不是包含在组函数中,那么该字段必须同时在 GROUP BY 子句中出现

- 包含在 GROUP BY 子句中的字段则不必须出现在 SELECT 列表中 - 可使用 where 子句限定查询条件 - 可使用 order by 子句指定排序方式

* 注意:

- 执行顺序: where -> group by -> select ... from ... -> order by..

##########[ 基于多字段分组 ]##########

- select deptno, job, avg(sal) from emp group by deptno, job;

##########[ 组函数的错误用法 ]##########

* 如果没有 GROUP BY 子句, SELECT 列表中不允许出现字段(单行函数)与分组函数混用的情况

- select empno, sal from emp; -> (Y) - select avg(sal) from emp; -> (Y)

- select empno, initcap(ename), avg(sal) from emp; -> (N)

* 不允许在 WHERE 子句中使用分组函数 - select deptno, avg(sal) - from emp

- where avg(sal) > 2000; -> (N) - group by deptno;

- 注:这跟子句运行顺序有关, - where 最先执行,

- 在执行 where 子句时,

- 还没有执行 group by 子句, - 还不知道什么分组,

- 也没计算过 avg(sal) 组内的平均工资

##########[ HAVING 子句 ]##########

* HAVING 子句用于过滤分组

* 语法格式

- select column, group_function(column) - from table

- [where condition]

- [group by group_by_expression] - [order by column];

* 例:

- select deptno, job, avg(sal)

- from emp

- where hiredate >= to_date('1981-05-01', 'yyyy-mm-dd') - group by deptno, job - having avg(sal) > 1200 - order by deptno, job;

##########[ 分组函数嵌套 ]##########

* 分组函数最多可嵌套两层

- select max(avg(sal))

- from emp

- group by deptno;

##########[ Oracle 表连接 ]##########

* SQL/Oracle 使用表连接从多个表中查询数据

* 语法格式: - select 字段列表 - from table1, table2

- where table1.column1 = table2.column2

* 说明:

- 在 where 子句中指定连接条件

- 当被连接的多个表中存在同名字段时,必须在该字段前加上\表名.\作为前缀

* 例:

- select empno, ename, job, emp.deptno, dname - from emp, dept

- where emp.deptno = dept.deptno;

* 提示:加上前缀可以提高效率

##########[ 连接的类型 ]##########

* Oracle8i之前的表连接 - 等值连接(Equijoin) - 非等值连接(Non-Equijoin) - 外连接(Outer join) - 左外连接 - 右外连接 - 自连接(Selfjoin)

* Oracle9i新引入的连接形式(支持SQL99规范): - 交叉连接(Cross join) - 自然连接(Natural join) - 使用 Using 子句建立连接 - 使用 On 子句建立连接 - 外连接(Outer join) - 左外连接 - 右外连接

五星文库wxphp.com包含总结汇报、考试资料、办公文档、党团工作、工作范文、资格考试、旅游景点、word文档、出国留学以及ORACLE语句学习档等内容。

本文共10页1234567>>10