JOIN可以将两个表之间的信息关联起来,是SQL中一个强大的功能。使用联接时,需要注意下面的两个错误:
- “错误地”丢失数据集中的数据
- “错误地”添加意想不到的额外数据
1. 内连接查询
内连接查询(INNER JOIN)==是组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集部分。==
内连接中,两个表之间的关系通过 INNER JOIN 指定,ON 后面接指定的条件。
#内连接
SELECT suppliers.s_id,s_name,f_name,f_price
FROM fruits INNER JOIN suppliers
ON fruits.s_id = suppliers.s_id;
2. 外连接查询
许多联接将一个表中的行与另一个表中的行相关联。但有时候需要包含没有关联行的那些行。联接中包含了在相关表中没有关联行的行,这种类型的联接称为外连接。外连接分为左外连接和右外连接。
- LEFT JOIN(左连接):左表的记录将全部表示出来,而右表只会显示符合搜索条件的记录。
- RIGHT JOIN(右连接):右表的记录将全部表示出来,而左表只会显示符合搜索条件的记录。
1) LEFT JOIN左连接
SELECT customers.c_id,orders.0_num
FROM customers LEFT OUTER JOIN orders
ON customers.c_id = orders.c_id;
2) RIGHT JOIN右连接
SELECT customers.c_id,orders.0_num
FROM customers RIGHT OUTER JOIN orders
ON customers.c_id = orders.c_id;
3. 使用带聚集函数的联接
SELECT customers.cust_name,
customers.cust_id,
COUNT(orders.order_num) as num_ord
FROM customers INNER JOIN orders
ON coustomers.cust_id = orders.cust_id
GROUP BY costomers.cust_id;