MySQL外键与连接详解(mysql外键连接)
MySQL中的外键与连接,一直是大家非常关注和研究的话题。一般来讲,熟悉外键与连接有助于我们灵活构建复杂的查询。下面我们将从定义、常用语法、应用实例3个方面介绍MySQL的外键与连接:
MySQL的外键与连接是为了保证表间关联数据的完整性和正确性,使得一张表所记录的某一列数据可以与另一张表中某一列数据相关联。有两类外键,一种是外键约束( Foreign Key Constraint),另一种是外键索引(Foreign Key Index)。
▲ 外键约束:
外键约束用来验证引用列中的值,必须在参照表中存在,以此确保数据的一致性。
具体来讲,为使一张表中(比如t1表)某一列可以引用另一张表(比如t2表)的某一列的数据,我们可以在t1表中添加外键约束:
ALTER TABLE t1 ADD FOREIGN KEY (`column1`) REFERENCES t2(`column2`);
在上面的SQL语句中,column1是t1表中用作外键的列,column2是t2表中被引用的一列。
▲ 外键索引:
外键索引不同于外键约束,他要求引用列必须是索引字段,以提高查询性能。我们可以直接在t1表中添加索引,而不需要给其添加外键约束:
ALTER TABLE t1 ADD INDEX (`column1`);
这样,当我们从t1表中查询column1列时,MySQL能够自动从索引中提高查询性能。
▲ 应用实例:
外键与连接大多数情况下都是相互结合应用的,下面我们以实际的例子来遵循上述的原理,来理解外键与连接的运作原理:
例如,我们有一张表t1,包含一个列叫做order_id:
t1:
order_id product_name
1001 Pen
同时我们有另一张表t2,其中一列叫做order_id,用来纪录订单的相关信息:
t2:
order_id customer_name
1001 David
当我们想在t1表中添加一列customer_name,作为t1表和t2表的联系,我们可以这样操作:
在t1表中添加索引:
ALTER TABLE t1 ADD INDEX (`order_id`);
添加外键约束:
ALTER TABLE t1 ADD FOREIGN KEY (`order_id`) REFERENCES t2(`order_id`);
最后,我们通过SELECT语句便可以通过t1表的order_id字段查找其关联的t2表中的customer_name字段:
SELECT t1.product_name,
t2.customer_name
FROM t1
LEFT JOIN t2
ON t1.order_id = t2.order_id
以上介绍了MySQL外键与连接的定义、常用语法以及应用实例,希望大家可以充分掌握并灵活运用外键与连接,编写完善数据库。