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

如何理解上面这句话?

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

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

为什么通常多表联查比子查询效率好?
相关推荐
yttandb6 分钟前
数据库-CRUD
数据库
{Hello World}9 分钟前
MySQL学习----------相关库表操作
数据库·学习·mysql
青衫码上行19 分钟前
高频 SQL 50题(基础版)| 连接
数据库·sql·mysql
一个响当当的名号22 分钟前
lectrue17 时间戳排序并发控制
数据库
xyzhan25 分钟前
SQL Server - 列出数据库中所有固定长度字段
数据库·sql·oracle·sql server
skywalk816333 分钟前
新华字典:pwxcoo/chinese-xinhua 中华新华字典数据库。包括歇后语,成语,词语,汉字。
数据库·字典
念越39 分钟前
MySQL 聚合函数与分组查询全解析
数据库·mysql
知识分享小能手1 小时前
SQL Server 2019入门学习教程,从入门到精通,SQL Server 2019 数据库的备份与恢复 — 语法知识点及使用方法详解(19)
数据库·学习·sqlserver
倔强的石头1061 小时前
一卡通核心交易平台的国产数据库实践解析:架构、迁移与高可用落地
数据库·架构·kingbase
GDAL1 小时前
SQLite 核心特性与应用实战教程:轻量却不简单的嵌入式数据库
数据库·sqlite