sql左外连接和右外连接

2024-11-15 17:37:12
推荐回答(4个)
回答1:

两个表:
A(id,name)
数据:(1,张三)(2,李四)(3,王五)
B(id,name)
数据:(1,学生)(2,老师)(4,校长)

左连接结果:
select A.*,B.* from A left join B on A.id=B.id;
1 张三 1
学生
2 李四 2
老师
3 王五 NULL NULL

右链接结果:
select A.*,B.* from A right join B on A.id=B.id;
1
张三 1 学生
2
李四 2 老师
NULL NULL 4 校长

****************
补充:下面这种情况就会用到外连接
比如有两个表一个是用户表,一个是交易记录表,如果我要查询每个用户的交易记录就要用到左外外连接,因为不是每个用户都有交易记录。
用到左外连接后,有交易记录的信息就会显示,没有的就显示NULL,就像上面我举得例子一样。
如果不用外连接的话,比如【王五】没有交易记录的话,那么用户表里的【王五】的信息就不会显示,就失去了查询所有用户交易记录的意义了。
****************

看一下结果就能明白左右连接的区别了。

回答2:

A(左) B(右)两个表左连接,就是查询出在A表中符合条件的;右连接,就是查询出在B表中符合条件的。自己举例子试试就知道了。

回答3:

如果只把左边关系中要舍弃的元组保留就叫做做外连接
如果只把右边关系中要舍弃的元组保留就叫做忧外连接
给你举个例子吧,那样你也就知道干嘛用的了
例如关系表R和关系表S
R表

S表
A
B
C

B

E
a1
b1
5

b1

3
a1
b2
6

b2

7
a2
b3
8

b3

10
a2
b4
12

b3

2

b5

2
两个表之间有联系
现在你如果想保留左边关系R所有元组,用做外连接,得到的关系为
A
B
C
E
a1
b1
5
3
a1
b2
6
7
a2
b3
8
10
a2
b3
8
2
a2
b4
12
NULL
如果你想保留右边关系S中所有元组,用右外连接,得到的关系为
A
B
C
E
a1
b1
5
3
a1
b2
6
7
a2
b3
8
10
a2
b3
8
2
NULL b5
NULL 2

are you 明白?

回答4:

左连就是,以左边为准,右边没有的用空补
例如 雇员,部门两表
有的雇员没领导 ,有的领导没雇员左连显示结果就是领导姓名有为空的,即 显示所有雇员无论是否有领导
右连显示结果就是雇员姓名有为空的,即 显示所有领导无论是否有雇员
左连:SELECT e.empno,e.ename,d.deptno,d.dname,d.loc
FROM emp e left jion dept d
on e.deptno(+)=d.deptno;
ename dname张三 王部长李四 右连:
SELECT e.empno,e.ename,d.deptno,d.dname,d.loc
FROM emp e right jion dept d
on e.deptno(+)=d.deptno;
ename dname张三 王部长 孙部长 (数据编的,就那个意思)一句话那(+)在哪方哪方可以为空。