举例说明:
在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 使用SSL连接配置详解 在现代数据库管理中,安全性是至关重要的,SSL(Secure Sockets Layer)连接为MySQL提供了一种加密数据传输的方式,确保了客户端和服务器之间的通信不被窃听或篡改。本文将详细介绍如何...
MySQL 左连接与右连接详解 MySQL 中的连接操作是指将两个或多个表中的数据结合起来,以便更好地查询和分析数据。左连接(LEFT JOIN)和右连接(RIGHT JOIN)是两种常见的连接类型,本文将详细介绍它们的区别和使用...
在本文中,我们将深入探讨如何...在压缩包中的`shiyan4`文件可能包含了上述描述的源代码和教程,你可以参考这些资源进一步学习和实践C#连接MySQL的相关知识。在实际应用中,根据具体需求调整和优化这些代码会非常有用。
### JSP连接MySQL使用连接池方式详解 #### 一、引言 在现代Web开发中,JSP(Java Server Pages)是一种广泛使用的服务器端技术,用于生成动态网页内容。为了提高应用程序的性能和效率,通常会采用连接池来管理与...
### 远程用户连接MySQL授权详解 #### 一、引言 随着互联网技术的发展与企业规模的扩大,数据库系统的远程访问需求日益增加。对于MySQL这样的关系型数据库管理系统而言,实现远程用户连接授权变得尤为重要。本文将...
如果你连接远程数据库(Linux系统)并且很慢(具体症状为第一次连接打开所有的表貌似不是很慢,正常的,但是隔几分钟后任意打开一张表就很慢,即时数据很少的表依然很慢),我们用命令找到配置文件(mysql5.7的) ...
### 设置MySQL远程连接知识点详解 #### 一、背景与需求 在进行数据库管理与应用开发的过程中,有时我们需要从远程服务器访问MySQL数据库。这通常适用于分布式系统或需要进行远程调试及维护的情况。为了实现这一...
在MySQL中,虽然不直接支持全外连接,但可以通过结合左外连接和右外连接达到相同的效果。例如,`SELECT * FROM voteMaster vm LEFT OUTER JOIN voter vt ON vm.id=vt.id UNION ALL SELECT * FROM voteMaster vm ...
MySQL连接查询(多表连接查询:内连接,外连接,交叉连接详解) 6:多表连接查询 笛卡尔乘积:如果连接条件省略或无效则会出现 解决办法:添加上连接条件 连接查询的分类: 1.按年代分类: 1)sql 92标准:仅仅...
ASP+MySQL数据库连接配置详解 本文详细介绍了ASP+MySQL数据库连接配置的相关知识点,涵盖了配置ODBC数据源、不同的数据验证方式、MySQL数据库中的数据类型差异、ASP源代码编写等方面的内容。 一、配置ODBC数据源 ...
在阿里云上配置MySQL远程连接是一项常见的操作,特别是在需要通过第三方工具如Navicat进行数据库管理时。默认情况下,MySQL仅允许本地连接,因此需要进行一些配置步骤来启用远程访问。以下是详细的步骤: 1. **登录...
本文将深入探讨如何使用Weka连接到MySQL数据库,以及涉及到的关键软件组件。 首先,MySQL是一个流行的开源关系型数据库管理系统(RDBMS),版本5.5.39在描述中被提及。这个版本提供了稳定性和性能优化,适用于各种...
本文将详细解析如何使用JDBC来连接并操作Oracle 11g和MySQL 5数据库,涉及的主要知识点包括参数传递、反射、读取属性文件、预处理语句、批处理、带参数的存储过程、事务管理和可滚动/可更新的结果集。 首先,JDBC...
【Navicat 连接MySQL、MongoDB工具详解】 Navicat是一款强大的数据库管理工具,支持多种数据库系统,包括MySQL和MongoDB等。它提供了一个直观的图形界面,使得数据库的管理和开发工作变得简单易行。以下是关于...
MySQL 数据连接池搭建详解 在本篇文章中,我们将详细介绍 MySQL 数据连接池的搭建流程。 MySQL 数据连接池是一种可以提高数据库连接性能和效率的技术,它可以减少数据库连接的建立和关闭次数,从而提高系统的整体...
【Java连接MYSQL数据库的连接步骤详解】 在Java编程中,连接MySQL数据库是常见的操作,用于实现数据的存储和检索。以下是一步一步的详细指南: 首先,确保你已经安装了JDK,通常推荐版本为JDK1.5或更高。JDK提供了...
在讨论C++利用MySQL API连接和操作数据库实例的详细步骤前,首先需要对涉及的关键知识点进行解释和阐述。 首先,C++连接和操作MySQL数据库有多种方式,其中包括了ADO、ODBC和直接使用MySQL API。ADO是一种基于COM的...