以Oracal为例内连接、左外连接和右外连接的区别

注:本文以Oracle数据库为例,所用sql标准为Oracle专用,而不是SQL99规则!

首先我们创建两个新表tb_stu和tb_course(本文只是为了讲述本质,因此表格结构和数据从简)

  1. tb_stu(学生表)
    在这里插入图片描述
  2. tb_course(选课表)
    在这里插入图片描述
    可以看到tb_stu表中ID为3的学生在tb_course中没有对应的数据,tb_course表中stu_id为4的学生也不存在于tb_stu中。

内连接

 内连接查询:只能查询出符合条件的记录,只会显示两个表中都有的数据,系统会自动忽略两个表中对应不起来的数据。

在这里插入图片描述
可以看到,数据只显示了id为1、2的学生基本信息和选课信息,学生3和4的信息并没有显示,所以内连接只显示所有有关联的数据。

外连接

外连接查询:既能查询出符合条件的记录,也能根据一方强行将另一个方查询出来

在SQL99规则中,我们利用inner join、left join、right join来表示内连接、左外连接和右外连接,而在Oracle中我们利用(+)表示外连接。在讲左、右连接之前,首先清楚一个主副表的概念,即当两个表做外连接时,一个表为主表,一个表为副表,主表需要全部查询出来,副表需要(+)。

  • 左外连接 (即以左表为主表)

在这里插入图片描述
我们可以看到,结果显示的数据中包含左表(即tb_stu)中的所有数据,右表中多的数据没有显示,少的数据显示为NULL(图中没有显示为NULL是因为我在定义表结构时设置为不能为空,)

  • 右外连接

在这里插入图片描述
我们可以看到,结果显示的数据中包含右表中所有的数据,而左表中多的数据没有显示。

注:本文中的左右表为等号的左右。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值