- 什么是联结
关系表:
假如有由同一供应商生产的多种物品,那么在何处存储供应商信息(如,供应商名、地址、联系方法等)呢?
分开存储供应商信息与产品信息有利于节约存储空间,减少相同数据出现的次数,也有方便更改供应商的信息。
在此,我们可以建立两个表,表vendors存储所有供应商信息,每个供应商占一行,并拥有唯一标识,此标识称为主键(primary key),可以是供应商ID或者其他唯一值。products表只存储产品信息,它除了存储供应商ID(vendors表的主键),不再存储供应商的其他信息。vendors表的主键又称为products表的外键(外键为表中的一列,它包含另一个表中的主键值,定义了两个表的关系),它将两张表关联起来,利用供应商ID便能从vendors表中查询出供应商的详细信息。
为什么使用联结:
如果数据存储在多个表中,怎样用单条SELECT语句检索出数据?
联结是一种机制,用来在一条SELECT 语句中关联表。(维护引用完整性:例如通过在表中定义主键和外键来避免出现非法供应商ID)
- 创建联结
上述代码通过where子句将两个表联结在一起,注意使用完全限定列名(在引用的列可能出现二义性时,必须使用完 全限定列名(用一个点分隔的表名和列名)。应该保证所有联结都有WHERE子句,否 则MySQL将返回比想要的数据多得多的数据。)
- 内部联结
上述联结称为等值联结(equijoin),它基于两个表之间的相等测试。这种联结也称为内部联结。也可以使用下面的INNER JOIN ON语句实现相同的效果