当前位置:   article > 正文

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

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

前提

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

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

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

1. 内连接

1. 等值连接:

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

写法1:

select * 
from  SC  inner JOIN  STUDENT  
on STUDENT.sno=SC.sno;
  • 1
  • 2
  • 3

结果如下所示:

在这里插入图片描述
图一

写法2:

select * 
from  SC ,STUDENT
where  STUDENT.sno=SC.sno;
  • 1
  • 2
  • 3

运行结果如上图一所示一样,虽然没加 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
  • 1
  • 2
  • 3

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

3. 自身连接

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

例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;
  • 1
  • 2
  • 3
  • 4

结果如上图二所示一样

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

from course first,course second

where first.cpon=second.cno;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2. 外连接

2.1.左外连接:

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

例:

select *
from student LEFT OUTER JOIN course
on student.sno=course.sno;
  • 1
  • 2
  • 3

2.2 右外连接:

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

例:

select *
from student  right outer join  course
on student.sno=course.sno;
  • 1
  • 2
  • 3

2.3 全外连接:

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

select *
from student  FULL OUTER JOIN course
on student.sno=course.sno;
  • 1
  • 2
  • 3

3. 内、外连接的区别

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

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

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

待续

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/626430
推荐阅读
相关标签
  

闽ICP备14008679号