交叉连接(CROSS JOIN);内连接(INNER JOIN);外连接(LEFT JOIN/RIGHT JOIN);联合查询(UNION 与 UNION ALL);全连接(FULL JOIN)【在MySQL中本身不支持全连接,若要使用,得需要一些方法实现】.
1.交叉连接(CROSS JOIN)
注:没有任何关联条件,结果是 笛卡尔积,结果集 会很大,没有意义,很少使用。
2.内连接(INNER JOIN)
注:多表中同时符合某种条件的数据记录的集合。
内连接分为三类:
① 等值连接:;
② 不等值连接:;
③ 自连接:;
3. 外链接
外链接又分为左外链接(LEFT JOIN)和右外链接(RIGHT JOIN)
1)左外链接
,以左表为主,先查询出左表,按照 后的关联条件匹配右表,没有匹配到的用 填充,可以简写 成 .
2)右外链接
,以右表为主,先查询出右表,按照 后的关联条件匹配坐表,没有匹配到的用 填充,可以简写 成 .
4.联合查询(UNION 与 UNION ALL)
注:
就是把多个结果集集中在一起,UNION 前的结果为基准,需要注意的是联合查询的列数要相等,相同的记录行会合并(如果前者 select 和 后者 select 有重复,则会合并,且以前面的为基准);如果使用 UNION ALL,不会合并重复的记录行;在效率方面,UNION 高于 UNION ALL。
5.全连接(FULL JOIN)
MySQL本身不支持全连接,如果要使用全连接,可以使用 LEFT JOIN 和 UNION 和 RIGHT JOIN 联合使用。
6)嵌套查询【不推荐使用,效率不可把控】
team:参赛队伍表
字段名类型描述teamIDint主键teamNamevarchar(20)队伍名称
match:赛程表
字段名称类型描述matchIDint主键hostTeamIDint主队IDguestTeamIDint客队IDmatchResultvarchar(20)比赛结果matchTimedate比赛日期
其中,match赛程表 中的 hostTeamID 与 guestTeamID 都和 team表 中的 teamID关联,查询 2006-6-1 到 2006-7-1 之间举行的所有比赛,并且用以下形式列出:拜仁 2:0 不莱梅 2006-6-21。
解题思路:
先找出我们的结果需求:主队名称 比赛结果 客队名称 比赛日期分析表与表之间的关联关系,match表中的主队ID(hostTeamID)和客队ID(guestTeamID)都和team表中的teamID关联,通过关联查询可以获得主队名称和客队名称根据match表中的matchTime字段查询 2006-6-1到2006-7-1之间举行的比赛即可
方法一:
方法二:
最后的时间比较也可用 between ... and
- 本文固定链接: https://zhongyun75.com/post/4883.html
- 转载请注明: admin 于 足球直播_足球免费在线高清直播_足球视频在线观看无插件_24直播网 发表
《本文》有 0 条评论