SQL server中内连接与外连接的区别、表达
- 前提
- 1. 内连接
- 1. 等值连接:
- 2. 自然连接
- 3. 自身连接
- 2. 外连接
- 2.1.左外连接:
- 2.2 右外连接:
- 2.3 全外连接:
- 3. 内、外连接的区别
- 待续
前提
下文举例所使用的表如下:
- SC表:
- 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. 内、外连接的区别
首先,内连接和外连接都是对表的连接操作
- 内连接:连接结果仅包含符合连接条件的行,其中至少一个属性是共同的;注意区分在嵌套查询时使用的any以及all的区别;
- 外连接:连接结果不仅包含符合连接条件的行,也包含自身不符合条件的行;外连接不需要区分,左表和右表都不受限制,所有记录都显示,两个表不足的地方可用null进行填充。
待续
—————————————————————
以上就是今日博客的全部内容了
创作不易,若对您有帮助,可否点赞、关注一二呢,感谢支持.