mysql 左连接、右连接和内连接

盗版猫之最

盗版猫之最

2016-02-19 09:58

下面是个mysql 左连接、右连接和内连接教程,撑握了其技术要点,学起来就简单多了。赶紧跟着图老师小编一起来看看吧!
脚本如下:
drop table table1;
CREATE TABLE `andrew`.`table1`
(
`name` VARCHAR(32) NOT NULL,
`city` VARCHAR(32) NOT NULL
)
ENGINE = MyISAM;
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 `andrew`.`table2`
(
`name` VARCHAR(32) NOT NULL,
`city` VARCHAR(32) NOT NULL
)
ENGINE = MyISAM;
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. 外连接 – 左连接结果

table1居左,故谓之左连接。这种情况下,以table1为主,即table1中的所有记录均会被列出。有一下三种情况:
a. 对于table1中的每一条记录对应的城市如果在table2中也恰好存在而且刚好只有一条,那么就会在
返回的结果中形成一条新的记录。如上面Person A和Person B对应的情况。
b. 对于table1中的每一条记录对应的城市如果在table2中也恰好存在而且有N条,那么就会在返回的结果中形成N条新的记录。如上面的Person C对应的情况。
c. 对于table1中的每一条记录对应的城市如果在table2中不存在,那么就会在返回的结果中形成一条
条新的记录,且该记录的右边全部NULL。如上面的Person D对应的情况。
不符合上面三条规则的记录不会被列出。
2. 外连接 – 右连接结果

table2居右,故谓之右连接。这种情况下,以table2为主,即table2中的所有记录均会被列出。有一下三种情况:
a. 对于table2中的每一条记录对应的城市如果在table1中也恰好存在而且刚好只有一条,那么就会在
返回的结果中形成一条新的记录。如上面Person X和Person Y对应的情况。
b. 对于table2中的每一条记录对应的城市如果在table1中也恰好存在而且有N条,那么就会在返回的结果中形成N条新的记录。如上面的Person W对应的情况。
c. 对于table2中的每一条记录对应的城市如果在table1中不存在,那么就会在返回的结果中形成一条
条新的记录,且该记录的左边全部NULL。如上面的Person Z对应的情况。
不符合上面三条规则的记录不会被列出。
3. 内连接

内连接的数据记录中,不会存在字段为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。
展开更多 50%)
分享

猜你喜欢

mysql 左连接、右连接和内连接

编程语言 网络编程
mysql 左连接、右连接和内连接

深入浅出SQL之左连接、右连接和全连接

SQLServer
深入浅出SQL之左连接、右连接和全连接

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Mysql中左连接的使用

MySQL mysql数据库
Mysql中左连接的使用

使用C连接Mysql

编程语言 网络编程
使用C连接Mysql

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

JDBC 连接MySQL 问题

编程语言 网络编程
JDBC 连接MySQL 问题

MYSQL教程:建立加密连接

编程语言 网络编程
MYSQL教程:建立加密连接

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

win8用优化驱动器整理磁盘图文教程

win8用优化驱动器整理磁盘图文教程

SQL Server中的XML数据进行insert、update、delete操作实现代码

SQL Server中的XML数据进行insert、update、delete操作实现代码
下拉加载更多内容 ↓