MySQL系列多表连接查询92及99语法⽰例详解教程
⽬录
1.笛卡尔积现象
2.连接查询知识点概括
1)什么是连接查询?
2)连接查询的分类
3.内连接讲解
1)等值连接:最⼤特点是,连接条件为等量关系。
2)sql92语法和sql99语法的区别。
3)⾮等值连接:最⼤特点是,连接条件为⾮等量关系。
4)⾃连接:最⼤特点是,⼀张表看作两张表。
4.外连接讲解
1)什么是外连接,和内连接有什么区别?
2)外连接的分类
前⾯两天带着⼤家换了⼀个⼝味,带着⼤家学习了pyecharts的原理和部分图形制作。今天我们继续回归带你学MySQL系列,带着⼤家继续学习MySQL数据库。
多表查询是数据分析师⽇常⼯作中⼀定会使⽤到的⼀个知识点,可见它的重要程度有多⼤。今天这个⽂章全⾯总结了MySQL 多表查询的⼏种情况,你知道MySQL的92语法和99语法吗?你知道等值连接和⾮等值连接吗?不要觉得某些知识点⽤的少,就可以不知道,其实不然,⾄少别⼈写出来后,你要知道是什么意思。
1.笛卡尔积现象
结果如下:
分析如下:
上述结果肯定是不对的,左表中每⼀个⼈都有4个男朋友,仔细观察这4条记录,正好是左表每⼀条记录和右表⼀⼀匹配后的结果。
笛卡尔积现象产⽣的原因:两张表没有有效的连接条件。既然你没有连接条件,本表中的第⼀⾏肯定
是能和另外表中的所有⾏进⾏⼀⼀匹配,同理,本表中的第⼆⾏肯定是能和另外表中的所有⾏进⾏⼀⼀匹配,以此类推,本表中的最后⼀⾏m也可以和另外表中的所有⾏进⾏⼀⼀匹配。若另外⼀张表有n⾏,那么最后显⽰的⾏数,肯定就是m*n⾏了。
如果不想产⽣笛卡尔积现象,就需要添加有效的表连接条件。拿上述例⼦来说,左表boyfriend_id只有和右边id相等时,才代表她们的男朋友。
数据库管理系统有哪些模型添加表连接条件后:
可以看到,笛卡尔积最终产⽣的记录数是两张表中各⾃数据的乘积,当没有使⽤连接查询的时候,如
果两张表中数据特别⼤的时候,将会撑爆你的内存,那是很可怕的,因此我们要学会使⽤连接查询。
printf打印16进制2.连接查询知识点概括
1)什么是连接查询?
在实际开发中,⼤多数的情况下都不是从单表中查询数据,⼀般都是多张表联合查询取出最终的结果。也就是说:实际业务中也是⼀个业务由多个表构成,不同的信息存储在不同的表中,如果我们想要获取的信息来⾃多张表,此时你就需要使⽤连接查询。
2)连接查询的分类
①按年代分类
MySQL中不⽀持全连接(full join),⼀般使⽤的是union关键字完成全连接的功能。MySQL中交叉连接是cross join,⽤的较少,我们也不⽤关⼼。
sq192标准:仅⽀持内连接;sq199标准【推荐】:仅仅⽀持内连接+外连接(仅⽀持左外和右外)+交叉连接;②按功能分类内连接:等值连接、⾮等值连接、⾃连接;外连接:左外连接、右外连接、全外连接(full join);
3.内连接讲解
图片制作神器原始数据如下:
1)等值连接:最⼤特点是,连接条件为等量关系。习题:查询员⼯名和对应的部门名;
sql92语法如下:(太⽼了,⼀般不⽤,看到了知道什么意思就⾏。)
sql99语法:(常⽤的)
2)sql92语法和sql99语法的区别。
-- sql92语法
select ename,dname
from emp,dept
where emp.deptno=dept.deptno;
-- sql99语法
淘宝轮播海报select ename,dname
from emp (inner)join dept
on emp.deptno=dept.deptno;
-- sql92语法和sql99语法的区别简述什么是方法重载
1)逗号(",")换成(inner)join;
2)where换成on;
注:inner可以省略,写上inner可以增加代码的可读性。
--sql99语法的优势
表连接和后⾯的where条件筛选,分离开来。
对于sql92语法来说,表连接⽤的是where,where筛选⽤的也是where,混淆在⼀起不清不楚。3)⾮等值连接:最⼤特点是,连接条件为⾮等量关系。
习题:出每个员⼯的⼯资等级,要求显⽰员⼯名、⼯资、⼯资等级。
4)⾃连接:最⼤特点是,⼀张表看作两张表。
什么叫做⼀张表看作两张表呢?也就是说,⾃连接是同⼀张表之间的连接,连接条件就是这张表中的不同字段。
⼈和机器的最⼤不同,就在于⼈有判断能⼒,你知道区分使⽤⼀张表的不同字段,但是机器不知道,都是同⼀张表,字段名也都是相同的。那么,机器怎么才能区分哪个表是哪个表(对于同⼀张表来说)。
这就需要起别名了。对于同⼀张表来说,我给它取两个名字,⼀个是A,⼀个是B,这样机器就能很好的区分了。当取A表中的字段,就是"A.字段",取B表中的字段,就是"B.字段"。
习题:出每个员⼯的上级领导,要求显⽰员⼯名和对应的领导名。mysql语句多表查询
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论