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)的关键

如何理解上面这句话?

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

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

为什么通常多表联查比子查询效率好?
相关推荐
倔强的石头_14 小时前
《Kingbase护城河》——猎捕慢查询:执行计划的微观解析与索引调优实战
数据库
SelectDB16 小时前
Apache Doris Python UDF:让 SQL 直接调用 Python 生态,支撑 Agent 时代复杂业务逻辑
大数据·数据库·python
jiayou642 天前
KingbaseES 表级与列级加密完全指南
数据库·后端
GBASE3 天前
G术时刻 |GBase 8s数据库事务并发控制之封锁技术介绍(下)
数据库
xiezhr3 天前
逛GitHub发现了一款免费的带AI功能的数据库管理工具
数据库·ai编程·dba
唐青枫4 天前
MySQL JSON 实战详解:从存储、查询、更新到 JSON_TABLE 与索引
sql·mysql
吃糖的小孩4 天前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
笃行3505 天前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库
笃行3505 天前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救
数据库
笃行3505 天前
金仓数据库逻辑备份实战:从全库导出到 Schema 替换的完整闭环
数据库