连接查询:
连接查询是指多表联合查询;连接查询的分类:
根据表的连接方式分类:
内连接: 等值连接非等值连接自连接外连接: 左外连接(左连接)右外连接(右连接)全连接(这个不讲,很少用,并且MySQL也不支持)
笛卡尔积现象(交叉连接):
当两张表进行连接查询的时候,若没有任何条件进行限制,最终的查询结构条数是两张表记录条数的乘积;
避免方式:增加条件进行过滤,但是并不会减少数据匹配次数,只不过显示的是有效记录。
表匹配原理:表1中的一条数据与表2中的所有数据进行匹配
内连接是什么?
内连接是从结果表中删除与其他被连接表中没有匹配行的所有行,也就是找到两个表中相同的字段进行返回;属于有条件的交叉连接;内连接都有哪些方式?
内连接-等值连接:
语法:
...AjoinBon连接条件where...
举例:
// inner可以省略的,带着inner目的是可读性好一些。
selecte.ename,d.dnamefromemp einner joindept done.deptno = d.deptno;
执行结果:
就是把两张表值相等的直接连起来了;
内连接-非等值连接:
语法:同非等值连接;
举例:
// inner可以省略
selecte.ename,e.sal,s.gradefromemp einner joinsalgrade sone.sal between s.losal and s.hisal;
结果:
把两张表按照非等值的规则进行连接,连接规则用语句控制;
内连接-自连接:
特点:将一张表看作是两张表,自己连接自己;
举例:
selecta.ename as '员工名',b.ename as '领导名'fromemp ainner joinemp bona.mgr = b.empno;
结果:
栗子用的数据表:
外连接是什么?
分为左外连接和右外连接;左外连接:又称左连接。左边是主表,这种连接方式会显示左表不符合条件的数据行,右边不符合条件的数据行直接显示NULL。右外连接:又称右连接,与左连接相对,这种连接方式会显示右表不符合条件的数据行,左表不符合条件的数据行直接显示NULL。这里的左右指的是join语句的左右,不懂的可以看下面的栗子;外连接都有哪些方式?
外连接-左连接:表示左边的这张表是主表,显示左表不符合条件的数据行,右边不符合条件的数据行显示NULL。
// outer是可以省略的。selecta.ename '员工', b.ename '领导'fromemp aleft outer joinemp bona.mgr = b.empno;
外连接-右连接:表示右边的这张表是主表;
外连接:(右外连接/右连接)
selecta.ename '员工', b.ename '领导'fromemp bright joinemp aona.mgr = b.empno;
可以将左连接和右链接对比着看!
主表就是要全部查询的表格;
三张表查询也一样,先连上两个,再连接第三个;栗子用的数据表:交叉连接(笛卡尔积) 连接查询 内连接 外连接都有哪些 以及书写语法【详细】【有例子】【有代码】【基础】【重点】