【mySQL必知必会】第十五章 联结表
1、外键(foreign key):外键为某个表中的一列,他包含另一个表的主键值,定义了两个表之间的关系。
2、可伸缩性(scale):能够适应不断增加的工作量而不失败,设计良好的数据库或应用程序称之为可伸缩性好(scale well)。
3、创建联结:
输入:
SELECT vend_name,prod_name,prod_price
FROM vendors,products
WHERE vendors.vend_id = products.vend_id
ORDER BY vend_name,prod_name;
输出:
vend_name prod_name prod_price
ACME Bird seed 10.00
ACME Carrots 2.50
Jet Fuses 5.00
分析:两个表的联结通过上面的WHERE子句实现。
4、笛卡尔积(cartesian product)
由没有联结条件的表关系返回的结果。即上一个表的每一行会和下一个表的每一行匹配,有点像两个矩阵相乘。
5、内部联结:
目前所用的均是等值联结(equijoin),它基于两个表之间的相等测试,这种联结也称为内部联结。
内部联结除了WHERE写法,还有其他写法
输入:
SELECT vend_name,prod_name,prod_price
FROM vendors INNER JOIN products
ON vendors.vend_id = products.vend_id;
6、联结多个表
输入:
SELECT prod_name,vend_name,prod_price,quantity
FROM orderitems,products,vendors
WHERE products.vend_id = vendors.vend_id
AND orderitems.prod_id = products.prod_id
AND order_num = 2005;
输出:
prod_name vend_name prod_price quantity
Bird seed ACME 10.00 1
分析:此例显示了订单编号为2005的商品的信息,由上述的笛卡尔积,我们可以知道,其实多个表不加约束,会以矩阵乘积的结果返回,所以所谓的WHERE联结条件,其实还是过滤条件。