`
sllizhimei
  • 浏览: 165602 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL左连接、右连接和内连接详解

阅读更多
举例说明:
在MySQL数据库中建立两张数据表,并分别插入一些数据。

示例脚本如下:

drop table table1;  
CREATE TABLE table1
(name VARCHAR(32) NOT NULL,
city VARCHAR(32) NOT NULL);

insert into TABLE1(name, city) values ('Person A', 'BJ');  
insert into TABLE1(name, city) values ('Person B', 'BJ');  
insert into TABLE1(name, city) values ('Person C', 'SH');  
insert into TABLE1(name, city) values ('Person D', 'SZ');  
commit;  

drop table table2;  
CREATE TABLE table2  
(name VARCHAR(32) NOT NULL, 
city VARCHAR(32) NOT NULL);  

insert into TABLE2(name, city) values ('Person W', 'BJ');  
insert into TABLE2(name, city) values ('Person X', 'SH');  
insert into TABLE2(name, city) values ('Person Y', 'SH');  
insert into TABLE2(name, city) values ('Person Z', 'NJ');  
commit;

1. MySQL外连接 – 左连接结果

table1居左,故谓之左连接。这种情况下,以table1为主,即table1中的所有记录均会被列出。有一下三种情况:

a. 对于table1中的每一条记录对应的城市如果在table2中也恰好存在而且刚好只有一条,那么就会在

返回的结果中形成一条新的记录。如上面Person A和Person B对应的情况。

b. 对于table1中的每一条记录对应的城市如果在table2中也恰好存在而且有N条,那么就会在返回的结果中形成N条新的记录。如上面的Person C对应的情况。

c. 对于table1中的每一条记录对应的城市如果在table2中不存在,那么就会在返回的结果中形成一条

条新的记录,且该记录的右边全部NULL。如上面的Person D对应的情况。

不符合上面三条规则的记录不会被列出。

2. MySQL外连接 – 右连接结果

table2居右,故谓之右连接。这种情况下,以table2为主,即table2中的所有记录均会被列出。有一下三种情况:

a. 对于table2中的每一条记录对应的城市如果在table1中也恰好存在而且刚好只有一条,那么就会在

返回的结果中形成一条新的记录。如上面Person X和Person Y对应的情况。

b. 对于table2中的每一条记录对应的城市如果在table1中也恰好存在而且有N条,那么就会在返回的结果中形成N条新的记录。如上面的Person W对应的情况。

c. 对于table2中的每一条记录对应的城市如果在table1中不存在,那么就会在返回的结果中形成一条

条新的记录,且该记录的左边全部NULL。如上面的Person Z对应的情况。

不符合上面三条规则的记录不会被列出。

3. MySQL内连接

MySQL内连接的数据记录中,不会存在字段为NULL的情况。可以简单地认为,内链接的结果就是在左连接或者右连接的结果中剔除存在字段为NULL的记录后所得到的结果。甚至可以认为,如果两个表中仅分别剩下内连接运算后所得的数据记录,如table1中只有Person A、Person B和Person C,table2中只有Person W、Person X和Person Y,那么这两个表的之间的左连接和右连接的返回的结果是一样的。

注意:select * from table1 a inner join table2 b on a.city = b.city 和select * from table1 a join table2 b on a.city = b.city 的效果是一样的,即如果join的左边没有诸如left、right或者inner这样的关键字时,缺省的是内连接。另外,MySQL不支持full join。
分享到:
评论

相关推荐

    MYSQL 左连接右连接和内连接的详解及区别

    主要介绍了MYSQL 左连接右连接和内连接的详解及区别的相关资料,需要的朋友可以参考下

    MySQL 使用 SSL 连接配置详解

    MySQL 使用SSL连接配置详解 在现代数据库管理中,安全性是至关重要的,SSL(Secure Sockets Layer)连接为MySQL提供了一种加密数据传输的方式,确保了客户端和服务器之间的通信不被窃听或篡改。本文将详细介绍如何...

    mysql之左连接与右连接.doc

    MySQL 左连接与右连接详解 MySQL 中的连接操作是指将两个或多个表中的数据结合起来,以便更好地查询和分析数据。左连接(LEFT JOIN)和右连接(RIGHT JOIN)是两种常见的连接类型,本文将详细介绍它们的区别和使用...

    C#l连接mysql详解

    在本文中,我们将深入探讨如何...在压缩包中的`shiyan4`文件可能包含了上述描述的源代码和教程,你可以参考这些资源进一步学习和实践C#连接MySQL的相关知识。在实际应用中,根据具体需求调整和优化这些代码会非常有用。

    jsp连接MySQL用连接池方式步骤

    ### JSP连接MySQL使用连接池方式详解 #### 一、引言 在现代Web开发中,JSP(Java Server Pages)是一种广泛使用的服务器端技术,用于生成动态网页内容。为了提高应用程序的性能和效率,通常会采用连接池来管理与...

    远程用户连接mysql授权

    ### 远程用户连接MySQL授权详解 #### 一、引言 随着互联网技术的发展与企业规模的扩大,数据库系统的远程访问需求日益增加。对于MySQL这样的关系型数据库管理系统而言,实现远程用户连接授权变得尤为重要。本文将...

    详解Navicat远程连接mysql很慢

     如果你连接远程数据库(Linux系统)并且很慢(具体症状为第一次连接打开所有的表貌似不是很慢,正常的,但是隔几分钟后任意打开一张表就很慢,即时数据很少的表依然很慢),我们用命令找到配置文件(mysql5.7的) ...

    设置mysql远程连接

    ### 设置MySQL远程连接知识点详解 #### 一、背景与需求 在进行数据库管理与应用开发的过程中,有时我们需要从远程服务器访问MySQL数据库。这通常适用于分布式系统或需要进行远程调试及维护的情况。为了实现这一...

    数据库表连接(内外、左右连接).docx

    在MySQL中,虽然不直接支持全外连接,但可以通过结合左外连接和右外连接达到相同的效果。例如,`SELECT * FROM voteMaster vm LEFT OUTER JOIN voter vt ON vm.id=vt.id UNION ALL SELECT * FROM voteMaster vm ...

    二、MySQL连接查询学习笔记(多表连接查询:内连接,外连接,交叉连接详解)

    MySQL连接查询(多表连接查询:内连接,外连接,交叉连接详解) 6:多表连接查询 笛卡尔乘积:如果连接条件省略或无效则会出现 解决办法:添加上连接条件 连接查询的分类: 1.按年代分类: 1)sql 92标准:仅仅...

    asp+mysql数据库连接配置详解_.docx

    ASP+MySQL数据库连接配置详解 本文详细介绍了ASP+MySQL数据库连接配置的相关知识点,涵盖了配置ODBC数据源、不同的数据验证方式、MySQL数据库中的数据类型差异、ASP源代码编写等方面的内容。 一、配置ODBC数据源 ...

    阿里云下配置MySQL远程连接的步骤详解

    在阿里云上配置MySQL远程连接是一项常见的操作,特别是在需要通过第三方工具如Navicat进行数据库管理时。默认情况下,MySQL仅允许本地连接,因此需要进行一些配置步骤来启用远程访问。以下是详细的步骤: 1. **登录...

    Weka连接MySQL数据库详解(MySQL及mysql-connector-java软件包)

    本文将深入探讨如何使用Weka连接到MySQL数据库,以及涉及到的关键软件组件。 首先,MySQL是一个流行的开源关系型数据库管理系统(RDBMS),版本5.5.39在描述中被提及。这个版本提供了稳定性和性能优化,适用于各种...

    JDBC连接操作Oracle及Mysql详解

    本文将详细解析如何使用JDBC来连接并操作Oracle 11g和MySQL 5数据库,涉及的主要知识点包括参数传递、反射、读取属性文件、预处理语句、批处理、带参数的存储过程、事务管理和可滚动/可更新的结果集。 首先,JDBC...

    navicat 连接mysql、mongodb工具

    【Navicat 连接MySQL、MongoDB工具详解】 Navicat是一款强大的数据库管理工具,支持多种数据库系统,包括MySQL和MongoDB等。它提供了一个直观的图形界面,使得数据库的管理和开发工作变得简单易行。以下是关于...

    mysql数据连接池搭建

    MySQL 数据连接池搭建详解 在本篇文章中,我们将详细介绍 MySQL 数据连接池的搭建流程。 MySQL 数据连接池是一种可以提高数据库连接性能和效率的技术,它可以减少数据库连接的建立和关闭次数,从而提高系统的整体...

    Java连接MYSQL 数据库的连接步骤

    【Java连接MYSQL数据库的连接步骤详解】 在Java编程中,连接MySQL数据库是常见的操作,用于实现数据的存储和检索。以下是一步一步的详细指南: 首先,确保你已经安装了JDK,通常推荐版本为JDK1.5或更高。JDK提供了...

    C++利用MySQL API连接和操作数据库实例详解

    在讨论C++利用MySQL API连接和操作数据库实例的详细步骤前,首先需要对涉及的关键知识点进行解释和阐述。 首先,C++连接和操作MySQL数据库有多种方式,其中包括了ADO、ODBC和直接使用MySQL API。ADO是一种基于COM的...

Global site tag (gtag.js) - Google Analytics