MySQL外键详解:关联表与操作规则

需积分: 31 2 下载量 126 浏览量 更新于2024-09-11 收藏 31KB DOC 举报
MySQL内外键使用详解 在MySQL中,外键是一种关键概念,它用于在两个相关联的表之间建立关系,确保数据的一致性和完整性。通过设置外键,你可以规定一个表(称为子表或依赖表)中的数据必须引用另一个表(称为父表或被依赖表)中的主键或唯一键。以下是对MySQL内外键作用和实际操作的详细说明: 1. **外键的作用**: - **表间关联**:外键允许你将一个表中的数据与另一个表相关联,形成一对多或多对多的关系。比如在生产厂商和产品数据库示例中,PC表与零件表之间的关系就是这样的关联。 - **数据完整性保障**:通过外键,可以确保子表中的数据只包含父表中存在的值,防止出现无效引用。当删除或更新父表中的主键时,可以定义不同的行为规则(如Cascade、Restrict、Set Null、Set Default)来处理子表中相关数据。 - **事务一致性**:外键确保了在数据库事务中,数据的一致性不会因为未满足依赖关系而破坏。 2. **外键的创建**: - 使用`ALTER TABLE`命令添加外键,例如:`ALTER TABLE xiaodi ADD FOREIGN KEY (dage_id) REFERENCES dage(id) ON DELETE CASCADE ON UPDATE CASCADE;` - 在此命令中,`dage_id` 是子表(xiaodi)的列,它引用了父表(dage)的`id`列。`ON DELETE CASCADE`表示当父表中的`id`被删除时,子表中的相关记录也会被自动删除;`ON UPDATE CASCADE`则意味着如果父表中的`id`被更新,子表中的`dage_id`会同步更新。 3. **创建带外键的数据表示例**: - 以电脑生产商和配件数据库为例,先创建`parts`表,其中`model`字段为主键: ``` CREATE TABLE parts ( model VARCHAR(20) NOT NULL PRIMARY KEY, ... ); ``` - 接着创建`pc`表,`cpumodel`字段设置为外键,引用`parts`表的`model`: ``` CREATE TABLE pc ( ... cpumodel VARCHAR(20), FOREIGN KEY (cpumodel) REFERENCES parts(model) ON DELETE CASCADE ON UPDATE CASCADE, ... ); ``` - 这样,`pc`表中的`cpumodel`只能包含`parts`表中存在的`model`值,保持了数据的准确性和完整性。 总结来说,MySQL的内外键机制是数据库设计中的重要组成部分,它确保了数据的一致性,并允许用户根据业务逻辑控制数据在关联表之间的传递规则。理解并熟练使用外键对于维护大型数据库系统至关重要。