数据库入门速成---ORACLE (02) 关联查询与分类汇总查询

一、表间关联基础

1.关联的实现

一个表的外键(FK)与另一个表的主键(PK)相对应

2.从表(子表)

外键所在表

3.主表(父表)

主键所在表

4.主键表达一方,外键表达多方

二、关联查询

1.概念:

从多个表查询数据

2.关联查询分类:

2.1 内关联(inner join)
2.2 外关联(outer join)
2.3 交差关联(cross join)
2.4 自关联(self join)

3.关联实现方式:

3.1 oracle专用方式
3.2 ANSI标准方式(有利于移植)
3.3 自然方式

三、内关联查询

【应用最广】

1.Inner join :

 要求 PK 所指的 FK 有记录

2.实现方式

2.1 oracle方式:
select *
from tablea, tableb
where --条件
PS:关联时,重复的列必须指明
PS:N个表关联需要有N-1个关联条件
例子:
select dept.deptno, empno
from emp, dept
where emp.deptno = dept.deptno
2.2 标准方式:

select ...
from table1 [inner] join table2
on table1.columns = table2.columns
PS:这两种方式,字段可以不同

2.3 使用using关联

select ...
from table1 [inner] join table2
using columns
PS:要求关联字段必须用一样

2.4 使用自然连接

只能用于内联

select ...
from table1 natural join table2


四、外关联查询

1. Outer join:

查询某一张表的所有记录
另一张表对应的记录有无均可

2.左外关联查询

查询左表所有记录
2.1 oracle方式
select ...
from tableleft, tableright
where tableleft.columns = tableright.columns(+)
2.2 标准SQL
select ... 
from tableleft left outer join tableright
on tableleft.columns = tableright.columns
2.3 一样字段可以使用using

3.右关联查询

查询右表所有记录
3.1 oracle方式
select ...
from tableleft, tableright
where tableleft.columns(+) = tableright.columns
3.2 标准SQL
select ...
from tableleft right [outer] join tableright
on tableleft.columns = tableright.columns
3.3 使用using

4.全外联查询

查询左右表所有记录
有对应显示字段值,无对应显示null
4.1 oracle 
4.2 标准SQL
select ...
from tableleft full outer join tableright
on tableleft.columns = tableright.columns


五、交差联接

1.cross join:

两张表所有记录,交差连接
(没有意义,尽量避免)

2.实现方式

2.1 oracle 方式
select ...
from tableleft, tableright
-- 无条件
2.2 标准SQL
select ...
from tableleft cross join tableright


六、自关联

1.self join:

一张表关联自己(内联 && 外联)

2.实现方式:

select ...
from tablea, tableb

七、汇总查询

1.汇总函数

1.1 avg(字段) 
求平均值
1.2 sum(字段)
汇总求和
1.3 min(字段)
最小值
1.4 max(字段)
最大值
1.5 count(字段)
记录个数
PS:特点:忽略null值

2.分类汇总语句

2.1 group by 
用于分类
当select 中包含组函数与单函数时,单函数必须group by 
group by table.columns
2.2 对汇总后记录进行筛选
where 对源记录进行筛选
having 对汇总记录进行再次筛选

表达式中只能有1. group by 项目,2.组函数


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值