SQL内连接、外连接、全连接、交叉连接、自连接、自然连接区别

简介: 本文是博主学习SQL的记录,希望对大家有所帮助

内连接(inner join)

内连接:也称为等值连接,返回两张表都满足条件的部分。inner join 就等于 join
在这里插入图片描述

select * from A inner join B on A.id=B.id

外连接(outer join)

外连接分为左外连接(left outer join)和右外连接(right outer join)。
left outer joinleft join 等价, 一般写成left join
right outer joinright join等价,一般写成right join

左外连接

取左边的表的全部,右边的表按条件,符合的显示,不符合则显示null
在这里插入图片描述

select * from A left join B on A.id=B.id

右外连接

取右边的表的全部,左边的表按条件,符合的显示,不符合则显示null
在这里插入图片描述

select * from A right join B on A.id=B.id
SQLite 支持 左外连接(left outer join),但不支持 右外连接(right outer join)

全连接(full join)

全连接(full join)结合的左,右外连接的结果。连接表将包含的所有记录来自两个表,并使用NULL值作为两侧缺失匹配结果

select * from A full join B on A.id=B.id
MySQL不支持FULL JOIN

交叉连接(cross join)

用于生成两张表的笛卡尔结果集,结果集为左表中的每一行与右表中的所有行组合。

select * from A , B

select * from A cross join B

select * from A , B语句就是返回笛卡尔结果集,等同于 select * from A cross join B

隐式交叉连接与显式交叉连接

交叉连接有两种,显式的和隐式的,不带ON子句,返回的是两表的乘积,也叫笛卡尔积。
例如:下面的语句1和语句2的结果是相同的。

语句1:隐式的交叉连接,没有CROSS JOIN。

SELECT O.ID, O.ORDER_NUMBER, C.ID, C.NAME
FROM ORDERS O , CUSTOMERS C
WHERE O.ID=C.ID;

语句2:显式的交叉连接,使用CROSS JOIN。

SELECT O.ID, O.ORDER_NUMBER, C.ID, C.NAME
FROM ORDERS O CROSS JOIN CUSTOMERS C
on O.ID=C.ID;

自连接

连接自身表,需配合别名使用,

select * from A a1, A a2 where a1.id=a2.id

自然连接(natural join)

自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。而等值连接并不去掉重复的属性列。

如:A中a,b,c字段,B中有c,d字段,则select * from A natural join B 相当于 select A.a,A.b,A.c,B.d from A.c = B.c

select * from A natural join B
select A.a,A.b,A.c,B.d from A.c = B.c
目录
相关文章
|
3月前
|
SQL IDE Java
Java连接SQL Server数据库的详细操作流程
Java连接SQL Server数据库的详细操作流程
|
25天前
|
SQL Java 数据库连接
JDBC连接SQL Server2008 完成增加、删除、查询、修改等基本信息基本格式及示例代码
这篇文章提供了使用JDBC连接SQL Server 2008数据库进行增加、删除、查询和修改操作的基本步骤和示例代码。
|
24天前
|
SQL 监控 数据库
SQL Server如何判断哪些会话/连接是长连接?
【8月更文挑战第14天】在SQL Server中,判断长连接可通过活动监视器查看持续时间和状态;查询`sys.dm_exec_sessions`获取持续时间超阈值的会话;利用性能监视器跟踪“User Connections”计数器变化;审查应用代码中连接池配置;或分析网络流量寻找持久连接。这些方法有助于管理和优化连接。
|
2月前
|
SQL 存储 NoSQL
. NoSQL和SQL的区别、使用场景与选型比较
【7月更文挑战第30天】. NoSQL和SQL的区别、使用场景与选型比较
36 15
|
7天前
|
SQL 数据库
|
7天前
|
SQL 数据库 开发者
|
7天前
|
SQL 数据挖掘
|
17天前
|
SQL Java 数据库连接
|
25天前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
96 0
|
2月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用问题之如何使用Flink SQL连接带有Kerberos认证的Hive
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
下一篇
DDNS