内连接
在进行跨表内连接查询数据时,查询结果只返回符合查询条件的数据;
跨表内连接查询的结果和使用where的多表查询结果相同,其实就是普通的查询,没啥好说的
-- 语法:
SELECT 别名1.字段名1,别名2.字段名2
FROM 库名.表名1 [AS] 别名1
INNER JOIN 库名.表名2 [AS] 别名2
ON 别名1.字段名3=别名2.字段名3;
外连接
多个联结将一个表中的行和另一个表中的行相关联。但有时要包含没有关联行的那些行,例如:
- 对每个客户下了多少订单进行计数,包括没有订单的客户;
- 列表所有产品的订单数量,包括没有订单的产品;
- 计算平均销售量,包括没有订单的客户;
这类情况联结包含了那些在相关表中没有关联行的行,这种类型的联结就叫外部联结
对于这个简单的内部联结:检索所有客户及其订单
1 SELECT customers.cus_id, orders.order_num 2 FROM customers 3 INNER JOIN orders 4 ON customers.cus_id=orders.cus_id
若用外部联结,即可为了检索所有客户,包括那些没有订单的客户
SELECT customers.cus_id, orders.order_num FROM customers LEFT OUTER JOIN orders ON customers.cus_id=orders.cus_id
左连接和右连接
它们之间唯一的差别就是所关联的表的顺序不同。实际上,左连接可以通过FROM或WHERE子句中表的顺序转换为右外连接,因此,两种类型的外部连接可以互换使用,用哪一种纯粹是看谁更方便