📜  SQL foreign-key(1)

📅  最后修改于: 2023-12-03 15:20:14.366000             🧑  作者: Mango

SQL 外键

在数据库设计中,外键(Foreign Key)是一个重要的概念。它是实现关系型数据库中表之间关联关系的主要途径。本文将从以下几个方面介绍 SQL 中的外键。

外键的定义

外键是表与表之间建立联系的一种方式。外键在一个表中指向另一个表的主键,使得这两个表之间产生关联关系。外键是保证数据完整性和一致性的重要手段。在 SQL 中,我们使用 FOREIGN KEY 语句来定义外键:

CREATE TABLE 表名(
    列名 数据类型 PRIMARY KEY,
    列名 数据类型,
    列名 数据类型,
    ...
    FOREIGN KEY(外键列名) REFERENCES 关联表名(关联表主键列名)
);

如上所示,我们通过 FOREIGN KEY 语句定义了一个外键列,它参照了另一张表(关联表)的主键列。如果在外键表中插入一条记录时,其外键列的值没有出现在关联表的主键列中,则会出现外键约束异常。这时由于外键约束的限制,我们将无法插入数据,从而保证了数据完整性和一致性。

外键的作用

外键的作用主要有两点:

  1. 帮助我们构建表与表之间的关联关系,使得数据库中数据不再是孤立的。通过外键,我们可以将一些分散的数据连接起来,在查询数据时能够更方便、更快捷。

  2. 保证数据库的一致性和完整性。外键是实现数据约束的重要手段,可以防止意外删除数据或插入无效数据等情况。这对于管理大型系统或者要处理重要数据的应用十分重要。

外键的使用方法

使用外键首先要保证我们建立了主键,因为外键是参照主键的。外键还需要用到“CASCADE”,“SET NULL”等方法,这些方法决定了当主表的主键改变时,外键表的改变方式。下面介绍几种常见的使用方法:

  1. CASCADE

如果我们在主表上更新或删除一条记录时,同时也需要在关联表上改动数据。这时,我们可以使用 “CASCADE” 方法。这种方法的原理是主表一改,从表跟着改动。当我们在主表上改动数据时,系统将会检查与这条数据有关联的数据是否可以被删除。如果可以删除,那么主表中这条数据和从表中相关的数据一同被删除;如果不允许删除,则整个动作将被取消,以保证数据的完整性和一致性。

CREATE TABLE 主表(
    主表列1 主表列1类型 PRIMARY KEY,
    主表列2 主表列2类型,
    …
);

CREATE TABLE 从表(
    从表列1 从表列1类型 PRIMARY KEY,
    从表列2 从表列2类型,
    …
    外键列 外键列类型 FOREIGN KEY(外键列) REFERENCES 主表(主表列1) ON DELETE CASCADE
);
  1. SET NULL

当我们在主表中更新或删除数据时,如果此数据在从表中有引用,那么我们就需要使用 “SET NULL” 方法。这种方法的原理是:当主表中数据改动时,对应的从表中数据的外键列将被设置为 NULL,但不会删除从表中的这条数据。

CREATE TABLE 主表(
    主表列1 主表列1类型 PRIMARY KEY,
    主表列2 主表列2类型,
    …
);

CREATE TABLE 从表(
    从表列1 从表列1类型 PRIMARY KEY,
    从表列2 从表列2类型,
    …
    外键列 外键列类型 FOREIGN KEY(外键列) REFERENCES 主表(主表列1) ON DELETE SET NULL
);
外键的使用注意事项

在使用外键的过程中,我们还需要注意以下几点:

  1. 外键应该被添加在受控表中而不是主表中

  2. 禁止修改和删除主键列的值,因为这样会导致所有引用主键的外键列失效

  3. 外键列的数据类型必须与主键列的数据类型一致

  4. 外键约束在查询时可能造成性能损失,需要适当考虑

总结

本文介绍了 SQL 中的外键及其相关定义、作用、使用方法和注意事项。外键是实现数据库约束的重要手段,充分利用外键可以更快捷、更方便地管理大量数据,保证数据完整性和一致性。在平时编写程序时,应该合理地使用外键,尽量做到数据管理的科学和规范。