在 Oracle 数据库中,外键(Foreign Key)是一种约束,用于确保一个表中的数据引用另一个表中的唯一标识。外键用于维护表之间的关系,通过定义外键关系,你可以实现数据的一致性和完整性。

以下是创建外键的一般语法:
ALTER TABLE child_table
ADD CONSTRAINT fk_constraint_name
FOREIGN KEY (child_column)
REFERENCES parent_table (parent_column);

解释一下上述语法的各部分:

  •  child_table 是包含外键列的子表。

  •  fk_constraint_name 是你为外键定义的名称。

  •  child_column 是子表中的列,包含对父表的引用。

  •  parent_table 是父表,子表中的外键引用的表。

  •  parent_column 是父表中被引用的列。


以下是一个具体的例子:
-- 创建父表
CREATE TABLE departments (
    department_id NUMBER PRIMARY KEY,
    department_name VARCHAR2(50)
);

-- 创建子表,并添加外键约束
CREATE TABLE employees (
    employee_id NUMBER PRIMARY KEY,
    employee_name VARCHAR2(50),
    department_id NUMBER,
    CONSTRAINT fk_department
    FOREIGN KEY (department_id)
    REFERENCES departments (department_id)
);

在这个例子中,departments 表是父表,employees 表是子表。employees 表中的 department_id 列是外键,它引用了 departments 表中的 department_id 列。这样,employees 表中的每个员工都必须属于 departments 表中已经存在的一个部门,从而确保数据的一致性。

在外键关系中,可以指定其他选项,例如 ON DELETE 和 ON UPDATE 规则,用于指定在父表中的数据发生变化时如何处理子表中的相关数据。这可以是 CASCADE(级联删除或更新)、SET NULL(将外键列置为空)等选项。
-- 添加 ON DELETE CASCADE 选项
ALTER TABLE employees
ADD CONSTRAINT fk_department
FOREIGN KEY (department_id)
REFERENCES departments (department_id)
ON DELETE CASCADE;

上述语句表示,如果在 departments 表中删除了一个部门,所有相关的员工记录也会被删除。


转载请注明出处:http://www.zyzy.cn/article/detail/8071/Oracle