MySQL联结表
外键:外键为某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系。
内连接
FROM子句中以 INNER JOIN
指定两个表的联结关系,用ON
子句来定义联结条件。
SELECT vend_name, prod_name, prod_price FROM vendors INNER JOIN products ON vendors.vend_id = products.vend_id;
使用表别名
- 表别名可以缩短SQL语句
- 允许在单条SELECT语句中多次使用相同的表
- 表别名只在查询执行中使用。与列别名不一样,表别名不返回到客户机。
SELECT cust_name, cust_contact FROM customers AS c, orders as o, orderitems as oi WHERE c.cust_id = o.cust_id AND oi.order_num = o.order_num AND prod_id = 'TNT2';
自联结
自联结通常作为外部语句用来替代从相同表中检索数据时使用的子查询语句。虽然最终的结果是相同的,但有时候处理联结比处理子查询快得多。
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';
外部联结
使用OUTER JOIN
关键字来指定联结的类型,与内部联结关联两个表中的行不同的是,外部联结还包括没有关联行的行。在使用OUTER JOIN
语法时,必须使用RITHT
或LEFT
关键字指定包括其所有行的表(RIGHT指出的是OUTER JOIN右边的表,而LEFT JOIN指出的是OUTER JOIN左边的表)
SELECT customers.cust_id, orders.order_num FROM customers LEFT OUTER JOIN orders ON customers.cust_id = orders.cust_id;