iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql的内外查询是什么意思
  • 265
分享到

mysql的内外查询是什么意思

2024-04-02 19:04:59 265人浏览 独家记忆
摘要

这篇文章主要介绍Mysql的内外查询是什么意思,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql的内查询是通过设置连接条件的方式,利用条件表达式来消除交叉连接的某些数据行,查询

这篇文章主要介绍Mysql的内外查询是什么意思,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

mysql的内查询是通过设置连接条件的方式,利用条件表达式来消除交叉连接的某些数据行,查询结果都是符合连接条件的记录;而外查询会先将连接的表分为基表和参考表,再以基表为依据返回满足和不满足条件的记录。

MySQL INNER JOIN:内连接查询

内连接(INNER JOIN)主要通过设置连接条件的方式,来移除查询结果中某些数据行的交叉连接。简单来说,就是利用条件表达式来消除交叉连接的某些数据行。

内连接使用 INNER JOIN 关键字连接两张表,并使用 ON 子句来设置连接条件。如果没有连接条件,INNER JOIN 和 CROSS JOIN 在语法上是等同的,两者可以互换。

内连接的语法格式如下:

SELECT <字段名> FROM <表1> INNER JOIN <表2> [ON子句]

语法说明如下:

  • 字段名:需要查询的字段名称。

  • <表1><表2>:需要内连接的表名。

  • INNER JOIN :内连接中可以省略 INNER 关键字,只用关键字 JOIN。

  • ON 子句:用来设置内连接的连接条件。

  • INNER JOIN 也可以使用 WHERE 子句指定连接条件,但是 INNER JOIN ... ON 语法是官方的标准写法,而且 WHERE 子句在某些时候会影响查询的性能。

多个表内连接时,在 FROM 后连续使用 INNER JOIN 或 JOIN 即可。

内连接可以查询两个或两个以上的表。为了让大家更好的理解,暂时只讲解两个表的连接查询。

示例

在 tb_students_info 表和 tb_course 表之间,使用内连接查询学生姓名和相对应的课程名称,sql 语句和运行结果如下。

mysql> SELECT s.name,c.course_name FROM tb_students_info s INNER JOIN tb_course c 
    -> ON s.course_id = c.id;
+--------+-------------+
| name   | course_name |
+--------+-------------+
| Dany   | Java        |
| Green  | MySQL       |
| Henry  | Java        |
| Jane   | python      |
| Jim    | MySQL       |
| John   | Go          |
| Lily   | Go          |
| Susan  | c++         |
| Thomas | C++         |
| Tom    | C++         |
+--------+-------------+
10 rows in set (0.00 sec)

在这里的查询语句中,两个表之间的关系通过 INNER JOIN 指定,连接的条件使用 ON 子句给出。

注意:当对多个表进行查询时,要在 SELECT 语句后面指定字段是来源于哪一张表。因此,在多表查询时,SELECT 语句后面的写法是表名.列名。另外,如果表名非常长的话,也可以给表设置别名,这样就可以直接在 SELECT 语句后面写上表的别名.列名。

MySQL LEFT/RIGHT JOIN:外连接查询

内连接的查询结果都是符合连接条件的记录,而外连接会先将连接的表分为基表和参考表,再以基表为依据返回满足和不满足条件的记录。

外连接可以分为左外连接和右外连接,下面根据实例分别介绍左外连接和右外连接。

左连接

左外连接又称为左连接,使用 LEFT OUTER JOIN 关键字连接两个表,并使用 ON 子句来设置连接条件。

左连接的语法格式如下:

SELECT <字段名> FROM <表1> LEFT OUTER JOIN <表2> <ON子句>

语法说明如下。

  • 字段名:需要查询的字段名称。

  • <表1><表2>:需要左连接的表名。

  • LEFT OUTER JOIN:左连接中可以省略 OUTER 关键字,只使用关键字 LEFT JOIN。

  • ON 子句:用来设置左连接的连接条件,不能省略。

上述语法中,“表1”为基表,“表2”为参考表。左连接查询时,可以查询出“表1”中的所有记录和“表2”中匹配连接条件的记录。如果“表1”的某行在“表2”中没有匹配行,那么在返回结果中,“表2”的字段值均为空值(NULL)。

例 1

在进行左连接查询之前,我们先查看 tb_course 和 tb_students_info 两张表中的数据。SQL 语句和运行结果如下。

mysql> SELECT * FROM tb_course;
+----+-------------+
| id | course_name |
+----+-------------+
|  1 | Java        |
|  2 | MySQL       |
|  3 | Python      |
|  4 | Go          |
|  5 | C++         |
|  6 | html        |
+----+-------------+
6 rows in set (0.00 sec)

mysql> SELECT * FROM tb_students_info;
+----+--------+------+------+--------+-----------+
| id | name   | age  | sex  | height | course_id |
+----+--------+------+------+--------+-----------+
|  1 | Dany   |   25 | 男   |    160 |         1 |
|  2 | Green  |   23 | 男   |    158 |         2 |
|  3 | Henry  |   23 | 女   |    185 |         1 |
|  4 | Jane   |   22 | 男   |    162 |         3 |
|  5 | Jim    |   24 | 女   |    175 |         2 |
|  6 | John   |   21 | 女   |    172 |         4 |
|  7 | Lily   |   22 | 男   |    165 |         4 |
|  8 | Susan  |   23 | 男   |    170 |         5 |
|  9 | Thomas |   22 | 女   |    178 |         5 |
| 10 | Tom    |   23 | 女   |    165 |         5 |
| 11 | LiMing |   22 | 男   |    180 |         7 |
+----+--------+------+------+--------+-----------+
11 rows in set (0.00 sec)

在 tb_students_info 表和 tb_course 表中查询所有学生姓名和相对应的课程名称,包括没有课程的学生,SQL 语句和运行结果如下。

mysql> SELECT s.name,c.course_name FROM tb_students_info s LEFT OUTER JOIN tb_course c 
    -> ON s.`course_id`=c.`id`;
+--------+-------------+
| name   | course_name |
+--------+-------------+
| Dany   | Java        |
| Henry  | Java        |
| NULL   | Java        |
| Green  | MySQL       |
| Jim    | MySQL       |
| Jane   | Python      |
| John   | Go          |
| Lily   | Go          |
| Susan  | C++         |
| Thomas | C++         |
| Tom    | C++         |
| LiMing | NULL        |
+--------+-------------+
12 rows in set (0.00 sec)

可以看到,运行结果显示了 12 条记录,name 为 LiMing 的学生目前没有课程,因为对应的 tb_course 表中没有该学生的课程信息,所以该条记录只取出了 tb_students_info 表中相应的值,而从 tb_course 表中取出的值为 NULL。

右连接

右外连接又称为右连接,右连接是左连接的反向连接。使用 RIGHT OUTER JOIN 关键字连接两个表,并使用 ON 子句来设置连接条件。

右连接的语法格式如下:

SELECT <字段名> FROM <表1> RIGHT OUTER JOIN <表2> <ON子句>

语法说明如下。

  • 字段名:需要查询的字段名称。

  • <表1><表2>:需要右连接的表名。

  • RIGHT OUTER JOIN:右连接中可以省略 OUTER 关键字,只使用关键字 RIGHT JOIN。

  • ON 子句:用来设置右连接的连接条件,不能省略。

与左连接相反,右连接以“表2”为基表,“表1”为参考表。右连接查询时,可以查询出“表2”中的所有记录和“表1”中匹配连接条件的记录。如果“表2”的某行在“表1”中没有匹配行,那么在返回结果中,“表1”的字段值均为空值(NULL)。

例 2

在 tb_students_info 表和 tb_course 表中查询所有课程,包括没有学生的课程,SQL 语句和运行结果如下。

mysql> SELECT s.name,c.course_name FROM tb_students_info s RIGHT OUTER JOIN tb_course c 
    -> ON s.`course_id`=c.`id`;
+--------+-------------+
| name   | course_name |
+--------+-------------+
| Dany   | Java        |
| Green  | MySQL       |
| Henry  | Java        |
| Jane   | Python      |
| Jim    | MySQL       |
| John   | Go          |
| Lily   | Go          |
| Susan  | C++         |
| Thomas | C++         |
| Tom    | C++         |
| NULL   | HTML        |
+--------+-------------+
11 rows in set (0.00 sec)

可以看到,结果显示了 11 条记录,名称为 HTML 的课程目前没有学生,因为对应的 tb_students_info 表中并没有该学生的信息,所以该条记录只取出了 tb_course 表中相应的值,而从 tb_students_info 表中取出的值为 NULL。

多个表左/右连接时,在 ON 子句后连续使用 LEFT/RIGHT OUTER JOIN 或 LEFT/RIGHT JOIN 即可。

使用外连接查询时,一定要分清需要查询的结果,是需要显示左表的全部记录还是右表的全部记录,然后选择相应的左连接和右连接。

以上是mysql的内外查询是什么意思的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: mysql的内外查询是什么意思

本文链接: https://www.lsjlt.com/news/52366.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql的内外查询是什么意思
    这篇文章主要介绍mysql的内外查询是什么意思,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql的内查询是通过设置连接条件的方式,利用条件表达式来消除交叉连接的某些数据行,查询...
    99+
    2022-10-18
  • php mysql慢查询是什么意思
    这篇文章主要为大家展示了“php mysql慢查询是什么意思”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php mysql慢查询是什么意思”这篇文章吧。php mysql慢查询是指在日志中记录...
    99+
    2023-06-25
  • MySQL的查询缓存机制是什么意思
    本篇内容主要讲解“MySQL的查询缓存机制是什么意思”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL的查询缓存机制是什么意思”吧!  查询必须是完全相同...
    99+
    2022-10-18
  • mysql中逻辑查询处理是什么意思
    这篇文章给大家分享的是有关mysql中逻辑查询处理是什么意思的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。 查询处理可以分为逻辑查询处理和物理查询处理...
    99+
    2022-10-18
  • mysql外键约束是什么意思
    MySQL外键约束指的是对表与表之间的关系进行限制的一种约束,可以在一个表中定义一个列,这个列将引用另外一个表中的列,这种关联关系可以确保数据的完整性和一致性。本教程操作系统:Windows10系统、mysql 8.0版本、Dell G3电...
    99+
    2023-07-10
  • ip查询显示泛播是什么意思?
    文章目录 背景ip泛播是什么Cloudflare 进行泛播 背景 好奇openai的请求是如何转发的。 ip泛播是什么 查询这个ip是个泛播 Cloudflare 进行泛播 如...
    99+
    2023-09-07
    tcp/ip 网络 服务器
  • Linux物理内存外碎片化是什么意思
    这篇文章主要介绍Linux物理内存外碎片化是什么意思,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、Linux物理内存外碎片化概述什么是Linux物理内存碎片化Linux物理内存碎片化包括两种:1.物理内存内碎片:...
    99+
    2023-06-15
  • mysql 是什么意思
    MySQL是一种开源的关系型数据库管理系统(RDBMS),它是由瑞典MySQL AB公司开发的,现在属于Oracle公司。MySQL...
    99+
    2023-09-05
    mysql
  • MySQL内连接查询的方法是什么
    本篇内容介绍了“MySQL内连接查询的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!内连接也叫连接,是最早的一种连接。还可以被称为...
    99+
    2023-06-27
  • MySQL中的/*是什么意思
    在MySQL中,/ /用于多行注释。它可以在SQL语句中的任何位置使用,用于注释掉一段代码或提供对代码的解释。多行注释可以跨越多个行...
    99+
    2023-10-20
    MySQL
  • mysql指的是什么意思
    这篇文章给大家分享的是有关mysql指的是什么意思的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。mysql是关系型数据库管理系统的缩写,即MySQL是一个关系型数据库管理系统,由...
    99+
    2022-10-18
  • MySQL中的/*是什么意思?
    这是一种评论。 是评论的结束。让我们实现并展示如何创建评论mysql> MySQL 将忽略上面的注释。让我们看一个例子。在这里,我们用 编写了注释mysql> mysql> create table DemoTabl...
    99+
    2023-10-22
  • mysql in是什么意思
    mysql in是什么意思,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。mysql in常用于where表达式中,其...
    99+
    2022-10-19
  • mysql null是什么意思
    小编给大家分享一下mysql null是什么意思,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!mysql null的含义:1、如在普通的字段中,空值就是表示空值;2、如果将一个空值的数据插入到...
    99+
    2022-10-18
  • MySQL Shell是什么意思
    本篇文章为大家展示了MySQL Shell是什么意思,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。  MySQL She...
    99+
    2022-10-19
  • 云服务器内网和外网的区别是什么意思
    云服务器内网和外网的主要区别是: 访问控制:云服务器内网是公网,可以访问公网的资源和服务,而外网只能访问自己内部的资源和服务。因此,云服务器内网访问的资源更加有限,而外网访问的服务更加多样化和私密化。 访问模式:云服务器内网是私有网络(...
    99+
    2023-10-27
    内网 区别 服务器
  • 亚马逊外贸是什么意思
    亚马逊外贸是指在亚马逊平台上进行的跨境电商贸易活动。亚马逊作为全球最大的在线零售商之一,拥有庞大的客户群体和全球化的物流网络,为跨境电商提供了便利的平台和服务。通过亚马逊外贸,卖家可以将自己的产品销售到全球各地,吸引更多的海外客户,扩大销售...
    99+
    2023-10-27
    亚马逊 外贸
  • mysql中外连接与内连接查询有什么区别
    mysql中外连接与内连接查询有什么区别?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。左外连接左外连接的结果集包含左表的所有记录和右表中满足连接条件的记录,结果...
    99+
    2023-06-15
  • mysql中的pid是什么意思
    mysql中的pid是指进程ID“Process ID”,用于标识正在运行的进程的唯一标识符,进程是操作系统中正在执行的程序的实例,每个进程都有一个唯一的进程ID,对于跟踪和管理进程非常重要。本教程操作系统:Windows10系统、MySQ...
    99+
    2023-08-02
  • mysql中的optimizer是什么意思
    mysql中的optimizer是什么意思?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。mysql optimizer指的是查...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作