sql语句中左外连接、右外连接、内连接是什么

60次阅读
没有评论

共计 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 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计1468字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)