前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL表的内外连接

MySQL表的内外连接

作者头像
每天都要进步呀
发布2023-10-16 11:17:44
1600
发布2023-10-16 11:17:44
举报
文章被收录于专栏:C++/LinuxC++/Linux

表的连接分为内连和外连。

一.内连接

内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。而使用where进行笛卡尔积筛选的时候,后面必须跟着一个过滤条件,将不合理的数据筛选掉,并且这时候再跟着其他条件就需要and其他条件,所以这种方式的内连接虽然可以,但是容易将内连接的条件与其他约束条件混淆,不容易区分。

于是,为了能够特殊标注其是内连接,就采用了如下语句:

案例:显示SMITH的名字和部门名称

这时,我们可以用多表查询,并笛卡尔积方式连接,并进行筛选:

image-20230731171311459
image-20230731171311459

采用内连接的方式:

image-20230731171428834
image-20230731171428834

采用内连接的方式,就可以很好的将内连接的条件与其他条件进行区分。

二.外连接

外连接分为左外连接和右外连接

1. 左外连接

如果联合查询,左侧的表完全显示我们就说是左外连接。即有可能出现这样的情况:学生表里有四个人,但成绩表中只有三个成绩,这种情况还是常见的,因为存在着部分学生没有考试的情况,但是此时我们仍想将已知的信息显示出来,那么在连接时就会出现空值的情况。

即将学生表放在左侧,成绩表放在右侧,此时左侧的表完全显示,右侧的表由于缺少对应的一条信息,其内部的值为空。语法与内连接的区别就是将inner替换成了left。

案例:

image-20230731191753498
image-20230731191753498

由于其中一个id无法匹配,所以该学生没有对应的成绩。如果将stu与exam的位置反过来,则会显示exam的全部信息,然后将stu能匹配上的属于与exam进行匹配。

image-20230731191937132
image-20230731191937132

2. 右外连接

如果联合查询,右侧的表完全显示我们就说是右外连接。这与左外连接的规则是一样的,只不过主导的表变成了右侧。

image-20230731192259612
image-20230731192259612

实际上,只有一个左外连接已经够了,因为我们可以将表的位置交换,这与右外连接没什么区别。

三.案例

案例:列出部门名称和这些部门的员工信息,同时列出没有员工的部门。

image-20230731192659587
image-20230731192659587

通过观察,emp表中不存在部门号为40的员工。从上面要求:同时列出没有员工的部门可以看出,部门为主,因此若选择左外连接,部门表在左侧;选择右外连接,部门表在右侧。

image-20230731193102085
image-20230731193102085

这就统计出来了我们想要的结果。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 表的连接分为内连和外连。
  • 一.内连接
  • 二.外连接
    • 1. 左外连接
      • 2. 右外连接
      • 三.案例
      相关产品与服务
      云数据库 MySQL
      腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档