posts - 206,  comments - 26,  views - 17万
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
表连接就是将两张表"合并"成一张表
tbl1:
1. 张三  1
2. 李四  2
3. 王五  null
tbl2:
1.男
2.女
一. 交叉连接(cross join)--笛卡尔积(叉积)
将第一张表的每一条记录依次与第二张表的每一条记录进行组合,得到一张新表
 
交叉连接的结果为:
1. 张三  1    1.男
1. 张三  1    2.男
2. 李四  2    2.女
2. 李四  2    1.女
3. 王五  null 1.男
3. 王五  null 2.女

语法:
select t1.*,t2.* from 表1 as t1 cross join 表2 as t2

二.内连接(inner join … on)

-> 交叉连接后数据有大部分是无用的,需要对其进行一个筛选
-> 可以将内连接理解为在交叉连接的基础之上进行一个筛选

内连接的结果为 :

1.张三  1   1.男

2.李四  2   2.女

语法:
select t1.*,t2.* from 表1 as t1 inner join 表2 as t2 on t1.字段 = t2.字段;

 
三.外连接(left join … on 和 right join … on)
1.左外连接

-> 内连接可以将两张表合并,同时进行筛选,但是有些数据不符合筛选条件,却应该留下来
-> 可以将左外连接理解为将内连接筛选掉的数据再重新插回结果中

左外连接的结果为:

1.张三 1  1 男

2.李四 2  2 女

3.王五 null null null

-> 连接的SQL语句一定是关于两张表的,需要补回的数据以左表为准即,将左表被筛选掉的数据重新插回结果中

-> 语法
select *  from 左表 as t1 left join 右表 as t2 on t1.字段 = t2.字段;

2.右外连接

 

四.多表连接

这三个基本的连接都写在from子句后面,并且作为一个数据源进行使用

t1 cross join t2 cross join t3
t1 inner join t2 on t1.字段 = t2.字段 inner join t3 on t1.字段 = t3.字段
t1 left join t2 on t1.字段 = t2.字段 left join t3 on t1.字段 = t3.字段

 

五.内连接和外连接的区别

 

 

posted on   努力--坚持  阅读(168)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示