@author: Tobin
@date: 2019/10/31 19:27:19
介绍如何实现表别名(被联结的表也可以重新命名,方便使用),以及聚集函数。
# 自联结,也可以用子查询来实现
# 这里首先p2已经进行了行的筛选
SELECT p1.prod_id, p1.prod_name
FROM products AS p1, products AS p2
WHERE p1.vend_id = p2.vend_id
AND p2.prod_id ='DTNTR';
# 自然联结
# 只返回唯一的列,不会出现重复的列
# 此处省略,使用通配符,c是表名。
SELECT c.*,...
# 外部联结,没用出现的行也会被返回
# 内部联结,是返回共同出现的那些行
# LEFT JOIN ,LEFT和RIGHT决定了没有出现的行,返回的是左边的表,还是右边的表
# RIGHT JOIN
SELECT customers.cust_id, orders.order_num
FROM customers LEFT OUTER JOIN orders
ON customers.cust_id = orders.cust_id;
# 对联结表使用聚合函数
SELECT customers.cust_name,
customers.cust_id,
COUNT(orders.order_num) AS num_ord
FROM customers INNER JOIN orders
ON customers.cust_id = orders.cust_id;
GROUP BY customers.cust_id;
# 联结注意的问题
# 保证使用正确的联结条件,并且应该总是提供联结条件,负责返回笛卡儿积