数据库两表联查、多表联查,多重联查
表连接查询
【⼩编⽤的是Oracle数据库,Oracle数据库区分表名与字段名的⼤⼩写,所以⼤家进⾏查询的时候记得注意双引号哟~】
有表
表名:AAA 字段: id name tag
表名:BBB 字段: id ban qq
表名:AABB字段: id area location
分类:
1.内连接 inner join
select 列名 from 主表 inner join 从表
on 主表和从表关系
注意:
(1)必须要有on语句
(2)关系必须两表中都成⽴
主表和从表:
特点:结果是两表之间的公共数据
公共数据就是说两表中关系列的值要对应
⽐如:
SELECT * from  AAA INNER JOIN BBB ON AAA."id"=BBB."id"
查询显⽰:
[只显⽰条件都成⽴的数据]
2.外连接 outer join
a)左外连接 left outer join
select 列名 from 主表 left outer join 从表
on 关系 .....
SELECT * from  AAA LEFT JOIN BBB ON AAA."id"=BBB."id"
查询显⽰:
[左边为主表,主表全部显⽰,右边为副表,右边⽆符合数据时显⽰null,不符合的数据不会显⽰]
b)右外连接 right outer join
select 列名 from 从表 right outer join 主表
on 关系 .....
sql left join 多表连接
SELECT * from  AAA RIGHT JOIN BBB ON AAA."id"=BBB."id"
查询显⽰:
[右边为主表,主表全部显⽰,左边为副表,左边⽆符合数据时显⽰null,不符合的数据不会显⽰]
c)全外连接 full outer join
select 列名 from 主表 full outer join 主表
on 关系 .....
SELECT * from  AAA  full outer  JOIN BBB ON AAA."id"=BBB."id"
查询显⽰:
[左边为主表,右边为副表,主表和副表全部显⽰,右边⽆符合数据时显⽰null,左边⽆符合数据时显⽰null,符合条件的数据会显⽰在⼀⾏]
3.交叉连接 cross join
select 列名 from 主表 cross join 主表;
SELECT * from  AAA  cross  JOIN BBB
查询显⽰:
[左边为主表,右边为副表,显⽰的数据为乘积形式的数据。]
交叉连接查询不能带on⼦语
结果:两表查询结果的笛卡尔乘积
左表有3⾏右表有3⾏数
结果:9⾏
附加:另⼀种连接查询,将多个表⽤逗号隔开查询
1.SELECT * from  AAA,BBB where AAA."id"=BBB."id"
[类似于内连接,只显⽰条件都成⽴的数据]
2.SELECT * from  AAA , BBB ;--不带where关系条件
[类似于交叉连接,左边为主表,右边为副表,显⽰的数据为乘积形式的数据。]
3.SELECT * from  AAA INNER JOIN BBB ON AAA."id"=BBB."id" INNER JOIN AABB ON BBB."id"=AABB."id"
SELECT * from  AAA INNER JOIN BBB ON AAA."id"=BBB."id" LEFT  JOIN AABB ON BBB."id"=AABB."location"
SELECT * from  AAA RIGHT  JOIN BBB ON AAA."tag"=BBB."ban" right  JOIN AABB ON BBB."id"=AABB."id"
[可以⽆限连接,想必到这应该懂了吧?想怎么join就怎么join,需要满⾜条件才显⽰的则要满⾜条件才显⽰,左右连接需要补null的,则要补null。]
还有就是:on 的时候可以写多个条件,例如:
SELECT * from  AAA  full outer  JOIN BBB ON AAA."id"=BBB."id" and AAA."name"=BBB."ban" and AAA."tag"=BBB."qq"
觉得有⽤的朋友希望可以帮忙“赞”⼀下哟(赠⼈玫瑰⼿有余⾹),谢谢^_^

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。