36.MYSQL的外键(foreign key)

外键(Foreign Key)是关系数据库中的一种约束,用于建立表与表之间的关联关系。外键定义了两个表之间的从属关系,它指向另一个表中的主键,用于维护数据的完整性和一致性。

外键分为两个角色:主表和从表。主表是被引用的表,它的主键列被其他表的外键引用;从表是引用其他表的表,它包含外键列,该列对应主表的主键列。

外键的作用主要有以下几个方面:

  1. 维护数据的完整性:外键约束可以保证数据的完整性,确保从表中的外键值必须存在于主表的主键列中,避免出现孤立的数据。

  2. 建立表与表之间的关联关系:通过外键,可以建立起表与表之间的关联关系,使得数据之间可以进行引用和查询。

  3. 实现数据的一致性和约束:外键约束可以限制对主表的修改操作,确保数据的一致性,防止出现不符合业务规则的数据。

  4. 支持数据的级联操作:外键还可以实现级联删除和更新操作,例如设置外键约束时指定级联删除,当主表中的某条记录被删除时,从表中对应的相关记录也会被自动删除。

需要注意的是,外键约束的使用需要谨慎,合理设计外键关系可以提高数据的一致性和完整性,但过多的外键关系可能会影响数据库的性能。在设计数据库时,需要根据实际情况和业务需求来确定是否使用外键。

外键是从表中的一个字段。这个字段的类型和长度应该与被引用表中的主键相同。它的作用是引用主表中的主键,建立起主表和从表之间的联系。

在建立外键关系时,需要在从表中创建一个外键字段,并将其设置为对应主表的主键。这个外键字段在逻辑上连接了两个表,允许从表中的记录引用主表中的记录,从而实现两个表之间的关联查询和数据完整性维护。

需要注意的是,外键字段必须满足以下条件:

1.外键字段的值必须存在于被引用表的主键字段中,否则将会出现引用错误。

2.被引用表的主键字段必须具有唯一性,否则也会出现引用错误。

因此,在设计数据库时需要合理选择主键和外键的类型、长度和关系,以保证数据的完整性和正确性。

总结来说就是:

外键是从表的一个字段,然后该字段引用其他表的主键或者唯一约束字段上。

—该外键字段的值必须是引用字段已存在的值。

—外键字段类型和引用字段类型和长度要相同。

—外键的表(从表)删除后,引用字段的表(主表)才能删(或者把外键删除)。

—外键的值可以修改,但是必须是引用字段已存在的值。

—被外键引用的值,主表不能把值的该行删除,没有引用的值那行可以删除。

 

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 外键约束可以用来保证表与表之间的关系完整性。当我们在一个表中定义了一个外键,它会引用另一个表中的列,这个被引用的列必须是另一个表的主键或者是一个唯一键。在 MySQL 中,外键约束可以跨越多个列。 下面是一个例子,演示如何在 MySQL定义一个外键约束,跨越两个列: ``` CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT, order_date DATE, FOREIGN KEY (customer_id, order_date) REFERENCES customers(id, date) ); ``` 在这个例子中,orders 表中的 customer_id 和 order_date 列都被用来定义外键约束,它们分别引用了 customers 表中的 id 和 date 列。这个外键约束确保了 orders 表中的每一行都有对应的 customers 表中的行,而且这个关联是基于 customer_id 和 order_date 两列的值。 在定义外键约束时,我们还可以指定 ON DELETE 和 ON UPDATE 规则,用来控制当关联表中的某一行被删除或更新时,对应的行应该怎么处理。常用的规则包括: - CASCADE:当关联表中的某一行被删除或更新时,对应的行也会被删除或更新。 - RESTRICT:当关联表中的某一行被删除或更新时,如果该行有对应的行,则不允许删除或更新。 - SET NULL:当关联表中的某一行被删除或更新时,对应的行的外键列会被设置为 NULL。 我们可以在定义外键约束时使用这些规则,例如: ``` CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT, order_date DATE, FOREIGN KEY (customer_id, order_date) REFERENCES customers(id, date) ON DELETE CASCADE ON UPDATE RESTRICT ); ``` 在这个例子中,我们指定了 ON DELETE CASCADE 和 ON UPDATE RESTRICT 规则,表示当 customers 表中的某一行被删除时,对应的 orders 表中的行也会被删除;当 customers 表中的某一行被更新时,只有当 orders 表中的行没有被引用时,才允许更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值