oracle join连接查询,数据库(学习整理)----7--Oracle多表查询,三种join连接

聚合函数:(都会忽略null数据)

常用的有5种:将字段中所有的数据聚合在一条中

1、sum(字段名) :求总和

2、avg(字段名) :求平均值

3、max(字段名) :求最大值

4、min(字段名) :求最小值

5、count(字段名、*) :统计行数

----2、按部门编号,查询平均薪水 ,并且平均薪水<1300的不显示,结果按降序排序

select empno,avg(sal) as avgsal

from scott.emp

group by empno

having avg(sal)>=1300

order by avgsal desc;

说明:

SQL语句的执行顺序:一定是从上到下的!

group by 执行之后才会执行having 、select中没有使用聚合函数的字段名必须写在这里

having 后不能使用字段的别名 可以聚合函数、一般字段名

order by 后面可以有:字段名、聚合函数、字段别名

注意:

Oracle 10g中才会出现的容错性:

having 语句可以写在group by 之前,不会报错,但是实际上执行的顺序还是先执行group by 后执行having子句

说明:

1、当一个查询中,出现聚合函数和没有使用聚合函数的字段,则该字段必须出现在group by子句中!

2、group by 字段1,字段2; 会先按照字段1分组得到一个结果集,再按照字段2进行分组!

3、where 发生在group by 前!

4、where 后面不能有聚合函数!

多表查询:

表连接分类: 内连接、外连接、交叉连接

1、内连接: [inner] join on

SQL语法格式:

语法1:

select *

from 表1 [inner] join 表2 on 表1.字段1=表2.字段1;

语法2:

select *

from 表1,表2

where 表1.字段1=表2.字段1;

说明:

内连接中的inner join 和 join 是等价的!但是建议为了程序的可读性

尽量不要省略inner!

2、外连接:

分类:左外连接、右外连接、全连接!

1、左外连接:left outer join

连接效果:

左侧的表中的全部数据都会被显示出来,但是右侧表的数据,

只有和左侧匹配上的字段才会被查询出来!否则都会显示null!

SQL语法格式:

语法1:

select *

from 表1 left outer join 表2

on 表1.字段1=表2.字段1;

语法2:

select *

from 表1 left outer join 表2

where 表1.字段1=表2.字段1(+);

2、右外连接:right outer join

连接效果:

右侧的表中的全部数据都会被显示出来,但是左侧表的数据,

只有和右侧匹配上的字段才会被查询出来!否则都会显示null!

SQL语法格式:

语法1:

select *

from 表1 right outer join 表2

on 表1.字段1=表2.字段1;

语法2:

select *

from 表1 left outer join 表2

where 表1.字段1(+)=表2.字段1;

3、全外连接:full/all outer join

SQL语法格式:

select *

from 表1 full outer join 表2

on 表1.字段1=表2.字段1;

2、交叉连接: 表与表之间做笛卡尔积查询!

SQL语法格式:(无条件查询)

select *

from 表1 cross join 表2;

或者

select *

from 表1, 表2;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值