SQL 多表联查

SQL JOIN (w3school.com.cn)

SQL join用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
之前跟着老师学数据库的时候学过,最近又在比较频繁的使用,再复习一下。
Person表:

Id_P :居民编号。主键

LastName:姓

FirstName:名

Address: 地址

City: 城市


Orders表:

Id_O :主键

OrderNo

Id_p :外键,是Person表中的主键

写法1:使用where

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P = Orders.Id_P

写法2:使用inner join

inner join:产生的结果集是两个表的交集。

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName

写法1与写法2的区别:

INNER JOIN与直接列出两个表并设置where条件:

在功能上是等价的,但它们在语法和可读性方面有所不同。
直接列出两个表:

这种方法是SQL早期版本的遗留方式,不使用显式的JOIN关键字,而是通过WHERE子句来指定连接条件。

SQL JOIN的5种类型:

MySQL: 图解 inner join、left join、right join、full outer join、union、union all的区别_mysql中union和inner join区别-CSDN博客

确保JOIN条件正确是避免产生笛卡尔积(Cartesian product)的关键

如何理解上面这句话?

嵌套查询与多表联查哪种效率更高?

居然说通常多表联查比子查询效率好!!!

为什么通常多表联查比子查询效率好?
相关推荐
步步为营DotNet1 分钟前
深度解析DbContext ChangeTracker:实体状态管理与性能优化
数据库·oracle·性能优化
南棱笑笑生2 分钟前
20251205在ubuntu20.04.6下的打包/解压缩tar.bz2压缩包的方法
数据库·postgresql
java_logo3 分钟前
PGADMIN4 Docker 容器化部署指南
运维·数据库·docker·postgresql·容器·数据库系统
a3722107743 分钟前
HikariCP配置 高并发下连接泄漏避免
java·数据库·oracle
缺点内向9 分钟前
如何在C#中添加Excel文档属性?
开发语言·数据库·c#·.net·excel
生信大表哥13 分钟前
生物信息分析:Singularity容器技术深度解析与实战指南
数据库·r语言·rstudio·生信入门·数信院生信服务器
千百元15 分钟前
实时监控磁盘I/O性能
linux·运维·数据库
卿雪19 分钟前
缓存异常:缓存击穿、缓存穿透、缓存雪崩 及其解决方案
java·数据库·redis·python·mysql·缓存·golang
无限进步_21 分钟前
C语言文件操作函数解析
c语言·开发语言·数据库·c++·后端·visual studio
K哥112531 分钟前
【9天Redis系列】数据结构+string
数据结构·数据库·redis