SQLServer中的外连接(左连接(leftjoin)右连接
(rightjoin))
⽬录
零、码仙励志
当你持续的说你⾮常忙碌,就永远不会得到空闲,当你持续的说你没有时间,就永远不会得到时间,当你持续的说这件事明天再做,你的明天就永远不会来
⼀、建库和建表
create database scort
use scort
create table emp
(
empno int primary key,
ename nvarchar(10),
sal int,
deptno int
)
insert into emp values (7369,'smith',3000,20);
insert into emp values (7499,'allen',1500,10);
多表left joininsert into emp values (7521,'ward',2850,30);
insert into emp values (7566,'jones',2000,30);
insert into emp values (7654,'martin',5000,10);
insert into emp values (7698,'blake',1800,30);
create table dept
(
deptno int primary key,
dname nvarchar(10),
loc nvarchar(10)
)
insert into dept values (10,'accounting','new york');
insert into dept values (20,'research','dallas');
insert into dept values (30,'sales','chicago');
insert into dept values (40,'operations','boston');
create table salgrade
(
grade int primary key,
lostl int,
hisal int
)
insert into salgrade values (1,700,1200);
insert into salgrade values (2,1201,1400);
insert into salgrade values (3,1401,2000);
insert into salgrade values (4,2001,3000);
insert into salgrade values (5,3001,6000);
⼆、外连接的⽤法
解释:将两个表或两个以上的表以⼀定的连接条件连接起来,不但返回满⾜连接条件的记录,⽽且会返回部分不满⾜条件的记录。
1.左连接(left join)
1.解释:
将两个表或两个以上的表以⼀定的连接条件连接起来,不但返回满⾜连接条件的记录,⽽且会返回左表不满⾜条件的记录。
2.运⾏原理:
1.⽤左表的第⼀⾏分别和右表的所有⾏进⾏联接,  如果有匹配的⾏,则⼀起输出,如果右表有多⾏匹配,则结果集输出多⾏,如果没有匹配⾏,则结果集中只输出⼀⾏,该输出⾏左边为左表第⼀⾏内容,右边全部输出null
2.然后再⽤左表第⼆⾏和右边所有⾏进⾏联接,如果有匹配的⾏,则⼀起输出,如果右表有多⾏匹配,则结果集输出多⾏,  如果没有匹配⾏,则结果集中只输出⼀⾏,该输出⾏左边为左表第⼆⾏内容,右边全部输出null
3.以此类推,直⾄左边所有⾏连接完毕
4.因为右边很可能出现有多⾏和左边的某⼀⾏匹配,所以左联接产⽣的结果集的⾏数很可能⼤于left join左边表的记录的总数
3.实例演⽰:
两张表连接:
select * from emp "E"
left join dept "D"
on "E".deptno="D".deptno
select * from dept "D"
left join emp "E"
on "E".deptno="D".deptno
三张表连接:
select * from emp "E"
left join dept "D"
on "E".deptno="D".deptno
left join  salgrade "S"
on "E".sal>"S".lostl and "E".sal<"S".hisal
select * from dept "D"
left join emp "E"
on "E".deptno="D".deptno
left join  salgrade "S"
on "E".sal>"S".lostl and "E".sal<"S".hisal
2.右连接(right join)
1.解释:
右连接与左连接类似,这⾥就不再赘述2.实例演⽰:
两张表连接:
select * from emp "E"
right join dept "D"
on "E".deptno="D".deptno
select * from dept "D"
right join emp "E"
on "E".deptno="D".deptno
三张表连接:
select * from emp "E"
right join dept "D"
on "E".deptno="D".deptno
right join  salgrade "S"
on "E".sal>"S".lostl and "E".sal<"S".hisal
select * from dept "D"
right join emp "E"
on "E".deptno="D".deptno
right join  salgrade "S"
on "E".sal>"S".lostl and "E".sal<"S".hisal
本篇博客来⾃于郝斌⽼师视频教程的总结以及笔记的整理,仅供学习交流,切勿⽤于商业⽤途,如有侵权,请联系博主删除,博主QQ:194760901

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。