宝宝们
该买的买了
该玩的也玩了
我们收收心搞学习吧
祝伙伴们早日脱单好了闲话少说开始今天的分享
连接查询
首先来认识一个叫笛卡尔积(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;
这样一对比是不是就看出我们的连接查询的用处了呢?
好的今天就分享到这里了
宝宝们回去要记得练习一下呦!
爱你们么么哒!
有任何问题都可以在文章留言,娜姐都看着的呢!