内连接
1、笛卡尔积
- 语法
- 无条件筛选
select 列名
from 标名1,表名2,...
- 有条件筛选
select 列名
from 标名1,表名2,...
where 中介列条件相等
and 其他条件
- 什么是笛卡尔积?
笛卡尔积就是将A和B表中的行任意组合,得到一个新的结果。
2、inner join
- 语法
- inner join
select 列名
from 表名1
inner join 表名2
on 相等的条件
where 其他条件
2. 笛卡尔积
select 列名
from 标名1,表名2,...
where 中介列条件相等
and 其他条件
外连接
- 让找不到的数据显示为
null
1、 left join
- 左外连接
此种情况下,左方表的连接值在右方表中找不到时,则右方表中没有值的内容显示null
select 列名
from 左表
left outer join 右表
on 连接条件
where 其他条件
2、 right join
- 右外连接
此种请况和左外连接相反
select 列名
form 左表
right outer join 右表
on 连接条件
where 其他条件
oracle 特有的写法
select 列名 form 表1,表2 where 表1.条件列 = 表2.条件列(+) -- (+) 表示,若没有数据不全为null值的表
3、 full join
- 完全外链接
任意一方表找不到数据,都显示为null
select 列名
from 表1
full outer join 表2
on 连接条件
where 其他条件
三、其他连接
1、 cross join
- 笛卡尔积
select 列名
form 表1
cross join 表2
where 等值条件
注:cross join 的作用本身不大,但是使用了where子句进行筛选,效果就很明显
2、 natural join
- 自动连接(自然连接)
- 可以对两个表相同的列名(类型也要相同)自动判断等值连接
select 列名
form 表1
natural join 表2
where 其他条件
注:
- 列的类型也要相等
- 可以自动匹配多个字段
3、 using join 子句
- 在 natural join 查询中
列名相同字段类型不同,则会反馈类型不匹配
此时可以通过在join子句后面使用using字句来设置,需要等值判断的字段。
select 列名
form 表1
join 表2
using(列名)
where 其他条件