外键解释道

外键约束通过强制一个表中的值必须与另一个表中的值匹配来确保数据完整性。

需要外键的示例是:在大学中,课程必须属于某个部门。此方案的代码是:

CREATE TABLE Department (
    Dept_Code        CHAR (5)     PRIMARY KEY,
    Dept_Name        VARCHAR (20) UNIQUE
);

使用以下语句插入值:

INSERT INTO Department VALUES ('CS205', 'Computer Science');

下表将包含计算机科学分支提供的科目信息:

CREATE TABLE Programming_Courses (
    Dept_Code       CHAR(5),
    Prg_Code        CHAR(9) PRIMARY KEY,
    Prg_Name        VARCHAR (50) UNIQUE,
    FOREIGN KEY (Dept_Code) References Department(Dept_Code)
);

(外键的数据类型必须与引用键的数据类型匹配。)

Dept_Code 上的外键约束仅在它们已存在于引用表 Department 中时才允许使用值。这意味着如果你尝试插入以下值:

INSERT INTO Programming_Courses Values ('CS300', 'FDB-DB001', 'Database Systems');

数据库将引发外键违规错误,因为 Department 表中不存在 CS300。但是,当你尝试存在的键值时:

INSERT INTO Programming_Courses VALUES ('CS205', 'FDB-DB001', 'Database Systems');
INSERT INTO Programming_Courses VALUES ('CS205', 'DB2-DB002', 'Database Systems II');

然后数据库允许这些值。

一些使用外键的提示

  • 外键必须引用父表中的 UNIQUE(或 PRIMARY)键。
  • 在外键列中输入 NULL 值不会引发错误。
  • 外键约束可以引用同一数据库中的表。
  • 外键约束可以引用同一表中的另一列(自引用)。