欢迎投稿

今日深度:

数据库中的左连接和右连接的区别,数据库连接

数据库中的左连接和右连接的区别,数据库连接区别


数据库中的左连接和右连接的区别


    今天,别人问我一个问题:数据库中的左连接和右连接有什么区别?如果有A,B两张表,A表有3条数据,B表有4条数据,通过左连接和右连接,查询出的数据条数最少是多少条?最多是多少条?


    我被这个问题问住了,后来我去问了数据库开发人员,结果结果各种各样:

    a 最大12  最小0

    b 最大12  最小未知

    c 最大未知 最小为3

    d 最大12   最小为3

    e 不清楚


1、说明

(1)左连接:只要左边表中有记录,数据就能检索出来,而右边有

     的记录必要在左边表中有的记录才能被检索出来

(2)右连接:右连接是只要右边表中有记录,数据就能检索出来


2、举例说明

    左连接:SELECT * FROM t_left_tab a LEFT JOIN t_right_tab b ON a.`id` = b.`id`; 

    查询结果:



    右连接:SELECT * FROM t_right_tab a LEFT JOIN t_left_tab b ON a.`id` = b.`id`;

       查询结果:

 


   查询最大条数:SELECT * FROM t_left_tab a LEFT JOIN t_right_tab b ON 1=1; 

    查询结果:

     


3、总结

   A 数据库左连接和右连接的区别:主表不一样

   B 通过左连接和右连接,最小条数为3(记录条数较小的记录数),最大条数为12(3×4) 


数据库操作中,左连接,右连接是什,举例说明

假设a表有两个字段,Aid、name, b 表也有两字段 Bid,nameid
其中 nameid是Aid在b 表中的外键。
a表有数据如下:
Aidname
1a
2b
3c
b表有数据如下:
Bidnameid
11
21
31
42
52
用左连接,说白一点就是以左边那个表为标准,左边那表(表a)的所有记录必须得全部出现,例如:
select * from a left join b on a.Aid=b.nameid
结果应应该为:
AidnameBidnameid
1a11
1a21
1a31
2b42
2b52
3cNULLNULL
表a 的 Aid为1的出现了三次,Aid为2的出现了两次,Aid为3的出现了一次,全部都出现了。但因为在表b中没有以Aid为3对应的记录,所以用null来填充。

同样道理,用右连接,说白一点就是以右边那个表为标准,
例如:select * from a right join b on a.Aid=b.nameid
结果应该为:
AidnameBidnameid
1a11
1a21
1a31
2b42
2b52
表b的记录必须全部出现,但没有出现 a表中Aid为3的记录,是因为b表中没有以之对应的记录,而且此时是以b表为标准的。这样的比喻不知你看不看得明。
 

对于数据库的左外连接 右外连接的意思是什

FROM Student LEFT OUTER JOIN SC
ON Student.Sno=SC.Sno;
无论学生的sno是否对应得到sc的sno,都会选出该学生

FROM Student a,
SC b
where a.Sno=b.Sno;
如果某个学生的sno在sc里没有,那么就不会选出该学生
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/2137.html NewsArticle 数据库中的左连接和右连接的区别,数据库连接区别 数据库中的左连接和右连接的区别 今天,别人问我一个问题:数据库中的左连接和右连接有什么区别?如果有A,B两张表,A表有3条...
评论暂时关闭