以下是创建外键的一般语法:
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