在关系型数据库中,外码是用来建立两个表之间关系的字段或一组字段。它引用另一个表(主表)中的主键,以确保两个表中的数据一致性。
外码的约束条件子句
当创建外码时,通常会使用约束条件子句来指定外码的具体约束条件。约束条件子句可以确保外码值始终引用主表中存在的值,从而维护数据完整性。
REFERENCES 子句
REFERENCES 子句指定外码引用的主表。语法如下:
CONSTRAINT FK_constraint_name FOREIGN KEY (column_name) REFERENCES table_name(column_name)
其中:
*
FK_constraint_name是外码约束的名称。
*
column_name是外码字段的名称。
*
table_name是主表的名称。
ON DELETE 和 ON UPDATE 子句
ON DELETE 和 ON UPDATE 子句指定当主表中的值发生变化时,外码字段的行为方式。语法如下:
ON DELETE action
ON UPDATE action
其中
action可以是:
*
CASCADE:当主表中的值被删除或更新时,外码字段中的值也随之被删除或更新。
*
SET NULL:当主表中的值被删除时,外码字段中的值被设置为 NULL。
*
RESTRICT:不允许删除或更新主表中的值,除非外码字段中的所有值也被删除或更新。
实例
例如,假设我们有两个表:
users和
orders。users 表包含用户数据,主键是
user_id。orders 表包含订单数据,外码是
user_id,它引用
users表中的主键。我们可以使用以下 SQL 语句创建外码约束:
ALTER TABLE orders ADD CONSTRAINT FK_order_user FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE;
这个约束确保了
orders表中的
user_id值始终引用
users表中存在的用户。如果一个用户被从
users表中删除,那么与该用户相关的订单也会从
orders表中被删除。
外码及其约束条件子句是关系型数据库中维护数据完整性和一致性的重要工具。正确使用外码可以确保两个表之间的数据相关性,防止数据不一致的情况发生,从而提高数据的可信度和可靠性。