数据库两表联查、多表联查,多重联查

数据库两表联查、多表联查,多重联查

表连接查询

 

【小编用的是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 关系 .....

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"

觉得有用的朋友希望可以帮忙“赞”一下哟(赠人玫瑰手有余香),谢谢^_^

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值