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种类型:
确保JOIN条件正确是避免产生笛卡尔积(Cartesian product)的关键
如何理解上面这句话?
嵌套查询与多表联查哪种效率更高?
居然说通常多表联查比子查询效率好!!!