目录

  • 1️⃣前言
  • 2️⃣交叉连接
  • 3️⃣内连接
  • 4️⃣左连接和右连接
  • 5️⃣子查询


MySQL 连表添加 mysql怎么连接表_学习


1️⃣前言

📙什么是表连接?

  • 表连接一般体现在表与表之间的关系上
  • 我们会从多个数据表中读取数据
  • 当我们需要同时显示多个表中的字段时,就可以用表连接来实现。

表连接就是同时查询两个或两个以上的表,简单地说就是我们在查询时,需要显示的数据来自多张表。

📗准备工作

由几个实例,来弄懂表连接的操作。

准备工作如下:

  • 创建学生表

MySQL 连表添加 mysql怎么连接表_学习_02

  • 插入数据

MySQL 连表添加 mysql怎么连接表_学习_03

  • 因此学生表如下:

MySQL 连表添加 mysql怎么连接表_开发语言_04

  • 再创建一张选科类别表:

MySQL 连表添加 mysql怎么连接表_MySQL 连表添加_05

  • 插入数据:

MySQL 连表添加 mysql怎么连接表_后端_06

  • 因此选课类别表如下:

MySQL 连表添加 mysql怎么连接表_后端_07

好了,准备工作完成,接下来就是表连接的操作!

MySQL 连表添加 mysql怎么连接表_开发语言_08

2️⃣交叉连接

MySQL 连表添加 mysql怎么连接表_后端_09

💡理解

  • 假如表1n行数据,表2m行数据
  • 那么select * from 表1,表2;就会返回n*m行数据
  • 交叉连接是会产生很多冗余的数据
  • 一般我们会结合条件筛选,去掉无用的数据行

🔋实例:

MySQL 连表添加 mysql怎么连接表_MySQL 连表添加_10

MySQL 连表添加 mysql怎么连接表_数据库_11

事实上,交叉连接就类似于数学上的笛卡尔积,也就是表中的每一行去和另一张表的每一行进行匹配,形成笛卡尔积。像上述表中的数据,很多是冗余的。我们真正想匹配的数据其实只有几行,具体如下:

MySQL 连表添加 mysql怎么连接表_后端_12

所以加上条件查询where s_dept = d_num后,

结果如下:

MySQL 连表添加 mysql怎么连接表_学习_13


3️⃣内连接

MySQL 连表添加 mysql怎么连接表_学习_14

💡理解

  • 内连接就是查询多张表的交集
  • 也就是公共部分
  • 返回两个表中字段匹配关系的记录
  • 语法一是隐式内连接
  • 语法二是显示内连接

🔋实例:

  • 查看每位同学的选科情况

隐式内连接:

MySQL 连表添加 mysql怎么连接表_后端_15

显示内连接:

MySQL 连表添加 mysql怎么连接表_MySQL 连表添加_16

备注:关键字inner可以省略。

  • 查询选科是物化生和历化生的同学有哪些:

MySQL 连表添加 mysql怎么连接表_后端_17

  • 查询每种选科的学生数:

MySQL 连表添加 mysql怎么连接表_开发语言_18

4️⃣左连接和右连接

🌳左连接的语法:

select * from 表1 left outer join 表2 on 条件;

MySQL 连表添加 mysql怎么连接表_MySQL 连表添加_19

🌳右连接的语法:

select * from 表1 right outer join 表2 on 条件;

MySQL 连表添加 mysql怎么连接表_MySQL 连表添加_20

💡理解

  • 左连接left outer join,其表示获取左表的全部记录,右表没有对应匹配也没有关系。
  • 右连接right outer join,类似的,右连接与左连接差不多,右连接表示获取右表所有记录,即使左表没有对应匹配。

🔋实例:

左连接如下:

MySQL 连表添加 mysql怎么连接表_数据库_21

在上述例子中,左表是student,其中吴九同学的选科编号是5,但是选科表dept的编号里并没有编号5,虽然没有相应的编号对应上,但是我们使用左连接的方法任然可以使得吴九同学的数据记录给展示出来。无对应上的值用NULL代替。

当然,右连接的使用也类似。

具体如下:

MySQL 连表添加 mysql怎么连接表_开发语言_22

5️⃣子查询

💡理解

子查询指的是在一个完整的查询语句中,嵌套若干个不同功能的小嵌套,从而一起完成复杂的查询要求

有时,我们的查询条件是另一个 SQL 语句的查询结果,这时就可以使用子查询。

简单的说,子查询就是select的嵌套。

🔋实例:

需求1

  • 查询学生表里,年龄最小的学生的所有信息。

首先,我们得知道学生表里年龄最小是多少?做法如下:

MySQL 连表添加 mysql怎么连接表_后端_23

其次,了解到学生年龄最小是17岁后,就可以查询年龄为17的学生的信息:

MySQL 连表添加 mysql怎么连接表_MySQL 连表添加_24

如果用子查询的方法,可以一条语句搞定。

则具体如下:

MySQL 连表添加 mysql怎么连接表_学习_25

需求2

  • 查询选科为物化生历化生的学生信息

这个需求其实可以用子查询或者内连接来实现。

子查询的做法如下:

MySQL 连表添加 mysql怎么连接表_开发语言_26

内连接的做法如下:

MySQL 连表添加 mysql怎么连接表_后端_27


需求3

  • 查询选科为历生政并且年龄小于19的学生信息

首先,我们需要知道选科为历生政的信息:

MySQL 连表添加 mysql怎么连接表_MySQL 连表添加_28

其次,在学生表里查询年龄小于19的学生信息:

MySQL 连表添加 mysql怎么连接表_学习_29

所以用子查询的方法如下:

MySQL 连表添加 mysql怎么连接表_MySQL 连表添加_30

像上面这种查询后返回的是表,那么返回结果必须有一个别名才能实现子查询。

MySQL 连表添加 mysql怎么连接表_MySQL 连表添加_31

所以说白了,子查询的特点就是将你查询完的结果进行再次利用,嵌套地使用查询语句


好了,表的连接就看到这,希望这篇文章对你有所帮助!