更新时间:2022-08-03 10:40:05 来源:极悦 浏览1606次
大家在学习MySQL教程的时候会遇到多表查询的问题,那么,MySQL多表查询语句是什么?极悦小编来告诉大家。在实际开发中多表查询是经常遇到的,也是编写sql的一个难点,所以多表查询是必须掌握的。其实单一的多表查询是比较简单的,困难的sql编写一般会是多表查询结合其他的一些关键字甚至函数。想要掌握好,除了了解关键字的用法,数据的存储位置,就是多练习了。为方便举例,用t_user和t_role这张表来举例,t_user字段及数据如下:
t_role表数据如下:
接下来是多表连接查询:关键字join,将两张表依据某个条件进行数据拼接。就是通过字段拼接,将两张表的记录变成 一条记录,字段数量增加。效率比单表查询低。下面就来看看它的几种用法:
cross join,不需要连接条件的连接。其结果就是笛卡尔积;
没有实际数据价值,只是丰富了连接查询的完整性;我们要避免出现这种sql。
inner join,将两张表根据指定的条件连接起来,严格连接。就是将一张表中的数据与另一张表中的数据根据条件匹配:配皮成功:保留连接的数据;不成功:都不保留。
语法:左表 inner join 右表 on 连接条件
这里我们就来查询id都为1的数据:
outer join,是一种不严格的连接。分两种,有主表之分:
左连接:left join ,左表为主表
右连接:right join ,右表为主表
就是用主表的记录去匹配从表的记录:成功保留;不成功,也保留,只是从表数据设为null。
这就是与内连接的区别,即在数据匹配失败时,外连接始终都会保留一条记录,只是从表设为null。
值得注意的是,不论是左连接还是右连接,字段显示顺序不受影响,都是先显示左表的。
这里先以t_user为主表:
以t_role为主表:
natural join,是一种自动寻找连接条件的连接查询。
包含自然内连接和自然外连接:
自然内连接:natural join
自然外连接:natural left/right join
条件匹配模式:
自动寻找相同字段名作为连接条件。
会将同名字段合并为一个字段。
select * from m2 natural left join m1 ;
连接查询时如果是同名字段作为连接条件,using可以代替on出现(比on更好)。
针对同名字段;
会自动合并对应字段为一个;
可以同时使用多个字段作为条件。
select * from m2 left join m1 using(id,sfz) ;
select * from m2 left join m1 using(sfz) ;
通过上述介绍,相信大家对MySQL多表查询语句已经有所了解,大家如果想了解更多相关知识,可以关注一下极悦的Java极悦在线学习,里面的课程内容从入门到精通,细致全面,很适合零基础的小伙伴学习,希望对大家能够有所帮助。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习