+++++++++++++开始线++++++++++++++++
一、 联结
在数据检索查询的执行中联结,是利用SQL的SELECT能执行的重要的操作
1.1 关系表
关系:各表通过某些常用的值互相关联
外键:外键为某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系
可伸缩性:能够适应不断增加的工作量而不失败
二、 创建联结
mysql> SELECT vend_name, prod_name, prod_price
-> FROM vendors, products
-> WHERE vendors.vend_id = products.vend_id
-> ORDER BY vend_name, prod_name;
完全限定列名
在引用的列可能出现二义性时,必须使用完全限定列名(用一个点分隔的表名和列名)
2.1 WHERE子句的重要性
在联结两个表时,将第一个表中的每一行与第二个表中的每一行配对。WHERE子句作为过滤条件,它只包含那些匹配给定条件的行。
笛卡尔积
由没有联结条件的表关系返回的结果为笛卡尔积。检索出的行的数目将是第一个表中的行数乘以第二个表中的行数
mysql> SELECT vend_name, prod_name, prod_price
-> FROM vendors, products
-> ORDER BY vend_name, prod_name;
不要忘了WHERE子句
保证所有联结都有WHERE子句,否则MySQL将返回比想要的数据多得多的数据
2.2 内部联结
mysql> SELECT vend_name, prod_name, prod_price
-> FROM vendors INNER JOIN products
-> ON vendors.vend_id = products.vend_id;
2.3 联结多个表
SQL对一条SELECT语句中可以联结的表的数目没有限制
mysql> 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 = 20005;
+++++++++++++结束线++++++++++++++++