共计 1468 个字符,预计需要花费 4 分钟才能阅读完成。
自动写代码机器人,免费开通
丸趣 TV 小编给大家分享一下 sql 语句中左外连接、右外连接、内连接是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
以下的代码演示均基于 name 表和 country 表展开。
name 表
idname1 西施 2 杨玉环 3 貂蝉 4 王昭君 5 赵飞燕
country 表
idcountryA_ID1 春秋时期越国人 12 唐代蒲州永乐人 23 东汉末年山西忻州人 34 西汉时期南郡秭归人 45 战国时期 6
注:
1)b 表 A_ID 与 a 表 a_id 存在关系
2)连接查询是要使用关联条件去除不匹配数据否则会出现笛卡尔积
1)内连接
语法:select 要查询的字段 from 表名 1 inner join 表名 2 on 表 1. 字段 = 表 2. 字段;
inner join 可简写为 逗号,内连接特点:只会保留完全符合 on 后条件的数据
应用场景:如果两张表有外键关系可以使用内链接,因为通过内链接每一条只能返回单条记录
select * from name n inner join country c on n.id = c.N_ID;
idnameidcountryN_ID1 西施 1 春秋时期越国人 12 杨玉环 2 唐代蒲州永乐人 23 貂蝉 3 东汉末年山西忻州人 34 王昭君 4 西汉时期南郡秭归人 4
2)左外连接
语法:select 要查询的字段 from 表 1 left outer join 表 2 on 表 1. 字段 = 表 2. 字段;
outer 可省略
左外连接特点:以左表为主,会保留左表中不符合 on 后条件的数据
应用场景:只有部分记录可以从表 2 中查到,但表 1 想要显示所有记录,就可以和表 2 通过左外连接查询。
select * from name n left join country c on n.id=c.N_ID;
idnameidcountryN_ID1 西施 1 春秋时期越国人 12 杨玉环 2 唐代蒲州永乐人 23 貂蝉 3 东汉末年山西忻州人 34 王昭君 4 西汉时期南郡秭归人 45 赵飞燕 nullnullnull
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;
idnameidcountryN_ID1 西施 1 春秋时期越国人 12 杨玉环 2 唐代蒲州永乐人 23 貂蝉 3 东汉末年山西忻州人 34 王昭君 4 西汉时期南郡秭归人 4nullnull5 战国时期 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;
idnameidcountryN_ID1 西施 1 春秋时期越国人 12 杨玉环 2 唐代蒲州永乐人 23 貂蝉 3 东汉末年山西忻州人 34 王昭君 4 西汉时期南郡秭归人 45 赵飞燕 nullnullnullnullnull5 战国时期 6
注意:该语法在 MySql 中不适
看完了这篇文章,相信你对“sql 语句中左外连接、右外连接、内连接是什么”有了一定的了解,如果想了解更多相关知识,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!
向 AI 问一下细节