理解sql语句的内连接、左外连接、右外连接理解sql语句的内部连接、左外部连接和右连接,
推荐( 免费):SQL教程
当您刚接触数据库时,您是否对DQL的连接查询有所怀疑,并且不知道什么时候以及在什么情况下?
不用担心,我来介绍一下我对内部连接、左外部连接、右连接的特点和应用场景的理解,供大家参考。
下面的代码演示是基于名称表和国家表展开的。name表
Idname1师2 3丢辛的故事4王昭君5赵
IdcountryA_ID1越南人春秋12永乐人周浦人唐代23忻州人山西人东汉末年34秭归人西汉南郡45战国6注:
1)b的表A_ID和A的表a_id有关系。
2)连接查询是使用关联条件去除不匹配的数据,否则会出现笛卡尔乘积
country表
语法:从表1的表名1内部联接表名2中选择要查询的字段。field=表2。字段;
内部连接可以缩写为逗号,
内部连接功能:
仅保留完全满足开机后条件的数据
应用场景:
如果两个表之间存在外键关系,可以使用内链联接,因为通过内链联接每个表只能返回一条记录select * from name n inner join country c on n . id=c . n _ id;IdnameidcountryN _ ID1西施1春秋时期的越南人12杨玉环2唐代周浦的永乐人23丢辛的故事3东汉末年的漳州人34王昭君4西汉南郡的秭归人41) 内连接
语法:从表1的左外部连接表2中选择要查询的字段。字段=表2。字段;
外部可以省略
左侧外部连接的特征:
主要在左表中,左表中不满足开机后条件的数据将被保留
应用场景:
从表2中只能找到一些记录,但是如果表1想显示所有的记录,可以通过左外连接用表2查询。从名称n中选择*左加入n.id上的国家c
=c.N_ID;
id
name
id
country
N_ID
1
西施
1
春秋时期越国人
1
2
杨玉环
2
唐代蒲州永乐人
2
3
貂蝉
3
东汉末年山西忻州人
3
4
王昭君
4
西汉时期南郡秭归人
4
5
赵飞燕
null
null
null
3) 右外连接
语法:select * from 表1 right outer join 表2 on 表1.字段 = 表2.字段;
outer 可省略
右外连接特点:
以右表为主,会保留右表中不符合on后条件的数据
应用场景:
和左外连接相反
只有部分记录可以从表1中查询到,但表2想要显示所有记录, 就可以和表1通过右外连接查询。
select * from name n right join country c on n.id=c.N_ID;
id
name
id
country
N_ID
1
西施
1
春秋时期越国人
1
2
杨玉环
2
唐代蒲州永乐人
2
3
貂蝉
3
东汉末年山西忻州人
3
4
王昭君
4
西汉时期南郡秭归人
4
null
null
5
战国时期
6
4) 完全链接
语法:select * from 表1 full join 表2 on 表1.字段 = 表2.字段;完全连接特点:
会保留表1和表2的全部数据
select * from name n full join country c on n.id=c.N_ID;
id
name
id
country
N_ID
1
西施
1
春秋时期越国人
1
2
杨玉环
2
唐代蒲州永乐人
2
3
貂蝉
3
东汉末年山西忻州人
3
4
王昭君
4
西汉时期南郡秭归人
4
5
赵飞燕
null
null
null
null
null
5
战国时期
6
注意:该语法在MySql中不适用
好的,本人介绍完毕,不知道有没有帮助到各位呢?
如果有什么不对,还请各位指出哦~
更多相关知识敬请关注sql栏目~