在数据库中,查找数据时,有时候触及到多表查找,多表查找有内连接,左连接和右连接等几种状况。这次咱们介绍内连接,左连接以及右连接的区别。
首要,咱们来看一下内连接,左连接以及右连接的定义。
内连接
进行多表查找时,根据匹配要求,在结果集中只保存各个表中满足匹配要求的记录。
左连接
在连接查找过程中,以左表为主表,在结果集中保存左表中的所有记录及右表中满足匹配要求的记录。
右连接
在连接查找过程中,以右表为主表,在结果集中保存右表中的所有记录及左表中满足匹配要求的记录。
此刻咱们经过例子来讲明内连接,左连接以及右连接的区别。
例
#新建一个数据库,名字叫lianxi
create database lianxi default CHARACTER set utf8;
#选取要运用的数据库lianxi
use lianxi;
#新建一张兴趣表(个人编号,个人姓名,个人兴趣)
create table habit
(
id int,
name varchar(20),
ah varchar(20)
);
#新建一张宠物表(个人编号,个人姓名,养的宠物)
create table pet
(
id int,
name varchar(20),
cw varchar(20)
)
#给兴趣表插进三条数据
insert into habit values(1,"zhang1",”fishing”);
insert into habit values(2,"zhang2",”swimming”);
insert into habit values(3"zhang2",”running”);
#给宠物表插进三条数据
insert into pet values(1,"zhang1",”pig”);
insert into pet values(2,"zhang2",”dog”);
insert into pet values(3,"li3",”duck”);
内连接:在结果集中只保存各个表中满足匹配要求的记录
SELECT a.name,a.cw,b.ah from pet a join habit b on a.name=b.name;
在pet表和habit表中name字段能够相关起来的仅有zhang1和zhang2
因此在查找结果中只展示zhang1和zhang2的name,cw和ah的数据。
左连接:在结果集中保存左表中的所有记录及右表中满足匹配要求的记录。
SELECT a.name,a.cw,b.ah from pet a left join habit b on a.name=b.name;
pet表是左表,habit是右表,展示pet表中的所有name和cw两个字段的值,右表habit只展示zhang1和zhang2的ah的值
右连接:在结果集中保存右表中的所有记录及左表中满足匹配要求的记录。
SELECT a.name,a.cw,b.ah from pet a right join habit b on a.name=b.name; pet表是左表,habit是右表,展示右表habit中ah字段的所有值,左表pet只展示zhang1和zhang2的name和cw字段的值
|