第十章 再谈连接

1.基本描述

    本章主要讲解各种连接方式,主要分为左外连接、右外连接、内连接:
    左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值(null);
    右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值;
    内联接是用比较运算符比较要联接列的值的联接。

2.基本样例

SELECT account_id, cust_id FROM account;

SELECT cust_id FROM customer;

SELECT a.account_id unt_id, c.cust_id FROM account a INNER JOIN customer c ON
a.cust_id = c.cust_id;

SELECT a.account_id, b.cust_id, b.name FROM account a INNER JOIN business b 
ON a.cust_id = b.cust_id;

SELECT cust_id, name FROM business;

SELECT a.account_id, a.cust_id, b.name FROM
account a LEFT OUTER JOIN business b
ON a.cust_id = b.cust_id;

SELECT a.account_id, a.cust_id, i.fname, i.lname FROM
account a LEFT OUTER JOIN individual i ON a.cust_id = i.cust_id;

SELECT c.cust_id, b.name FROM customer c LEFT OUTER JOIN business b
ON c.cust_id = b.cust_id;

SELECT c.cust_id, b.name FROM customer c RIGHT OUTER JOIN business b
ON c.cust_id = b.cust_id;

SELECT a.account_id, a.product_cd, CONCAT(i.fname, " ", i.lname) person_name, b.name business_name
FROM account a LEFT OUTER JOIN individual i ON a.cust_id = i.cust_id LEFT OUTER JOIN business b
ON a.cust_id = b.cust_id;

SELECT e.fname, e.lname, e_mgr.fname mgr_fname, e_mgr.lname mgr_lname FROM employee
e INNER JOIN employee e_mgr ON e.superior_emp_id = e_mgr.emp_id;

SELECT e.fname, e.lname, e_mgr.fname mgr_fname, e_mgr.lname mgr_lname FROM
employee e LEFT OUTER JOIN employee e_mgr ON e.superior_emp_id = e_mgr.emp_id;

SELECT e.fname, e.lname, e_mgr.fname mgr_fname, e_mgr.lname mgr_lname FROM
employee e RIGHT OUTER JOIN employee e_mgr ON e.superior_emp_id = e_mgr.emp_id;

SELECT pt.name, p.product_cd, p.name FROM product p CROSS JOIN product_type pt;

SELECT a.account_id, a.cust_id, c.cust_type_cd, c.fed_id FROM account a NATURAL JOIN customer c;

SELECT a.account_id, a.cust_id, a.open_branch_id, b.name FROM account a NATURAL JOIN branch b;
原文地址:https://www.cnblogs.com/LuckPsyduck/p/12608290.html