数据库的内连接和外连接的区别

内连接:

指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。
1.等值连接
依据两个表中相同内容的字段进行连接
表TESTA,TESTB,TESTC,各有A, B两列。
在这里插入图片描述
内连接

内连接,即最常见的等值连接,例:

SELECT  * 
FROM  TESTA,TESTB
WHERE  TESTA.A=TESTB.A

在这里插入图片描述

2.非等值连接
依据两个表中内容相关列(非相同)字段进行连接
3.自连接

外连接:

连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。

左外连接:左边表数据行全部保留,右边表保留符合连接条件的行。
1. 左外连接 left outer join 或者 left join

左外连接就是在等值连接的基础上加上主表中的未匹配数据,例:

SELECT  *
FROM  TESTA 
LEFT  OUTER  JOIN  TESTB 
ON  TESTA.A=TESTB.A

在这里插入图片描述

右外连接:右边表数据行全部保留,左边表保留符合连接条件的行。
右外连接 right outer join 或者 right join

右外连接是在等值连接的基础上加上被连接表的不匹配数据

SELECT  *
FROM  TESTA 
RIGHT  OUTER  JOIN  TESTB 
ON  TESTA.A=TESTB.A

在这里插入图片描述

全外连接:左外连接 union 右外连接。
全外连接 full outer join 或者 full join

全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上。

SELECT  * 
FROM  TESTA 
FULL  OUTER  JOIN  TESTB
ON  TESTA.A=TESTB.A

在这里插入图片描述
select

from
a
join
b
on

join
c
on

where

SELECT s.name, s.id, g.yuwen, sl.level
FROM grade g
JOIN student s
ON s.id = g.id
JOIN score_level sl
ON g.yuwen BETWEEN sl.low AND sl.high
where g.yuwen > 70;

在这里插入图片描述
上面表示a表和b连接,然后a表再和c连接,其结果合并在一起。不是a表先连接b,其结果再和c连接
where语句放在最后

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-20 00:58:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-20 00:58:01       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-20 00:58:01       82 阅读
  4. Python语言-面向对象

    2023-12-20 00:58:01       91 阅读

热门阅读

  1. Wireshark插件开发

    2023-12-20 00:58:01       51 阅读
  2. 【缓存】一、Redis的基本使用与Redisson分布式锁

    2023-12-20 00:58:01       39 阅读
  3. 用VBA冻结excel文件的sheet1工作簿的第一行

    2023-12-20 00:58:01       60 阅读
  4. window.open的使用

    2023-12-20 00:58:01       62 阅读
  5. 【MySQL】数据类型

    2023-12-20 00:58:01       127 阅读