自然连接
SELECT
o.order_id,
c.first_name
FROM orders o
NATURAL JOIN customers c
-- 数据库引擎会基于共同列(相同名称的列)连接
由于自然连接并不好控制,所以不建议使用自然连接来连接表
交叉连接
SELECT
c.first_name AS customer,
p.name AS product
FROM customers c
CROSS JOIN products p
ORDER BY c.first_name
-- 顾客表里的每条记录都会和产品表里的每条记录结合
-- 因此这里没有写条件
一般使用到交叉连接的情况是:
eg:连接一些拥有不同颜色分类的表
还有一个隐式语法:
SELECT
c.first_name AS customer,
p.name AS product
FROM customers c ,products p
-- CROSS JOIN products p
ORDER BY c.first_name
-- 顾客表里的每条记录都会和产品表里的每条记录结合
-- 因此这里没有写条件
练习
做一个发货人和产品的交叉连接
先使用隐性连接 后使用显性连接
隐性
SELECT *
FROM shippers s,products p
答案
SELECT
s.name AS shipper,
p.name AS product
FROM shippers s,products p
ORDER BY S.name
显性
SELECT *
FROM shippers s
CROSS JOIN products p
答案
SELECT
s.name AS shipper,
p.name AS product
FROM shippers s
CROSS JOIN products p
ORDER BY S.name
输出同隐性答案