SQL server中内连接和外连接的区别、表达(多表连接)

前提

下文举例所使用的表如下:

  1. SC表:
    在这里插入图片描述

  2. student表:
    在这里插入图片描述

1. 内连接

1. 等值连接:

结果表将包含两个表的所有属性,包括重复列

写法1:

select * 
from  SC  inner JOIN  STUDENT  
on STUDENT.sno=SC.sno;

结果如下所示:

在这里插入图片描述
图一

写法2:

select * 
from  SC ,STUDENT
where  STUDENT.sno=SC.sno;

运行结果如上图一所示一样,虽然没加 join on

2. 自然连接

结果表将包含两个表的所有属性,但去掉重复的部分

过程:
select 中专门指定 重复的列名 sno为 “ SC.sno ”,不写另一个表中sno主键,再写出两个表中其他不重复的列名,完成自然连接

例1:

select  SC.sno ,cno,grade,sname,ssex,sage,sdept
from SC,STUDENT
where  SC.sno=STUDENT.sno

结果如下:
在这里插入图片描述
图二

3. 自身连接

相当于将自己的表再复制一份出来,进行连接

例2:

select  SC.sno ,cno,grade,sname,ssex,sage,sdept
from  SC 
inner  JOIN  STUDENT   --本来用 natural join  on ,但这里用natural join语法错误
on STUDENT.sno=SC.sno;

结果如上图二所示一样

-- 查询每门课的间接选修课
select first.cno,second.cpon

from course first,course second

where first.cpon=second.cno;

2. 外连接

2.1.左外连接:

左外连接结果表中出来包括满足连接条件的行,还好包括左表的所有行

例:

select *
from student LEFT OUTER JOIN course
on student.sno=course.sno;

2.2 右外连接:

右外连接结果表中出来包括满足连接条件的行,还包括右表的所有行

例:

select *
from student  right outer join  course
on student.sno=course.sno;

2.3 全外连接:

全外连接结果表中出来包括满足连接条件的行,还好包括两个表的所有行
例:

select *
from student  FULL OUTER JOIN course
on student.sno=course.sno;

3. 内、外连接的区别

首先,内连接和外连接都是对表的连接操作

  1. 内连接:连接结果仅包含符合连接条件的行,其中至少一个属性是共同的;注意区分在嵌套查询时使用的any以及all的区别;

  2. 外连接:连接结果不仅包含符合连接条件的行,也包含自身不符合条件的行;外连接不需要区分,左表和右表都不受限制,所有记录都显示,两个表不足的地方可用null进行填充。

待续

 
 
—————————————————————
以上就是今日博客的全部内容了
创作不易,若对您有帮助,可否点赞、关注一二呢,感谢支持.

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟道子HD

您的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值