MySQL数据库之连接查询

宝宝们

该买的买了

该玩的也玩了

我们收收心搞学习吧

祝伙伴们早日脱单

好了闲话少说开始今天的分享

连接查询

首先来认识一个叫笛卡尔积(cartesianproduct)的东东,也可以叫直积。

假设我们有一个集合A={a,b},还有一个集合B={0,1,2},那么这两个两集合的笛卡积为:{{a,0},{a,1},{a,2},{b,0},{b,1},{b,2}}。

就是两个集合中的元素可能存在的所有组合方式而形成的新的集合!

我是这么理解的,太具体的解释,欢迎伙伴们去百度哈!

现在我们用代码来测试演示一下:

createtableone(

one_idint,one_datechar(1),public_fieldint);insertintoonevalues(1,a,10),(2,b,20),(3,c,30);

createtabletwo(

two_idint,two_datechar(1)notnulldefaultt,public_fieldint);insertintotwovalues(2,B,20),(3,C,30),(4,D,40);

selectone.*,two.*fromone,two;

这个就是表one和表two的所有元素可能出现的组合就是笛卡尔积!

内连接查询

三种语法:

select*fromtableA,tableBwheretabA.column=tabB.column;

select*fromtableAinnerjointableBontabA.column=tabB.column;select*fromtableAcrossjointableBontabA.column=tabB.column;

内连接

只有在连接的表内数据都存在的情况下,才会做连接。内连接是把二个表连接成一个结果集,在这个结果集中仅包含那些满足条件的记录行。

selectone.*,two.*fromone,twowhereone.one_id=two.two_id;

selectone.*,two.*fromoneinnerjointwoonone.one_id=two.two_id;

selectone.*,two.*fromonecrossjointwoonone.one_id=two.two_id;

这三种语法都可以实现内连接查询

外连接查询

如果存在不能匹配的数据,也会进行连接,不过此时mysql会帮我们虚拟一条不存在的记录,字段值都是为null,帮我们完成整个连接记录。

分为:

左外连接:leftjoinon,leftouterjoinon;

右外连接:rightjoinon,rightouterjoinon;

语法:

select*fromtableAleftjointableBontabA.column=tabB.column;

select*fromtableArightjointableBontabA.column=tabB.column;

区别在于:

左外连接:

返回左表的所有数据,并且在右表中不能匹配的列值,其字段用空值null表示。

selectone.*,two.*fromoneleftjointwoonone.one_id=two.two_id;

leftjoin-wherenull

返回和右表不匹配的所有数据行。

selectone.*,two.*fromoneleftjointwoonone.one_id=two.two_idwheretwo.two_idisnull;

rightjoin:

右外连接:返回右表的所有数据,并且在左表中不能匹配的列值,其字段用空值表示。

selectone.*,two.*fromonerightjointwoonone.one_id=two.two_id;

rightjoin-wherenull

返回和右表不匹配的所有数据行。

selectone.*,two.*fromonerightjointwoonone.one_id=two.two_idwhereone.one_idisnull;

我们来看一下这个外链接在实际项目中的是如何使用的

selecta.name,a.province,a.city,a.phone,b.employee_name,b.job_titlefromofficeainnerjoinemployeebona.office_id=b.office_id;

selectcount(b.employee_id),a.namefromofficeainnerjoinemployeebona.office_id=b.office_idgroupbya.name;

selectcount(employee_id),office_idfromemployeegroupbyoffice_id;

这样一对比是不是就看出我们的连接查询的用处了呢?

好的今天就分享到这里了

宝宝们回去要记得练习一下呦!

爱你们么么哒!

有任何问题都可以在文章留言,娜姐都看着的呢!




转载请注明:http://www.aierlanlan.com/rzfs/5428.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了