php 左链接与右链接,理解sql语句的内连接、左外连接、右外连接,左外连接的sql语句...

理解sql语句的内连接、左外连接、右外连接理解sql语句的内部连接、左外部连接和右连接,

fdaf8eb2fb6f3b9989396b635605d325.png

推荐( 免费):SQL教程

当您刚接触数据库时,您是否对DQL的连接查询有所怀疑,并且不知道什么时候以及在什么情况下?

895374e5c08cbba92ab39dc15b4c3dad.png

不用担心,我来介绍一下我对内部连接、左外部连接、右连接的特点和应用场景的理解,供大家参考。

下面的代码演示是基于名称表和国家表展开的。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中不适用

好的,本人介绍完毕,不知道有没有帮助到各位呢?

如果有什么不对,还请各位指出哦~

95b78d344fec9eb184819f8a3c7cbf86.png

更多相关知识敬请关注sql栏目~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值