03外键

外键就是表与表的关系,比如:一个表的一例引用另外一个表的一列。

外键使用例子:

以下生成的两个表,department表为父表,employee表为子表。表示子表中的depart_id引用了父表中的depart_id作为外键;试图在子表中插入不与父表的任何行相对应的行时将失败,同样的,删除也是如此。否则会出现SQL Error: ORA-02291: integrity constraint (OT.SYS_C0010646) violated - parent key not found等错误。


**子表中添加外键后要先填父表中数据去满足外键约束。

--department表+注释
create table department(
    depart_id NUMBER ,
    depart_name VARCHAR2(255) NOT NULL,
    depart_lead VARCHAR2(255) NOT NULL,
    CONSTRAINT pk_department PRIMARY KEY (depart_id)
);
comment on column department.depart_id is '部门编号(主键)';
comment on column department.depart_name is '部门名称';
comment on column department.depart_lead is '部门经理';
--employee表+注释
create table employee(
    eno VARCHAR2(255) NOT NULL,
    ename VARCHAR2(255) NOT NULL,
    esex VARCHAR2(3) NOT NULL,
    depart_id NUMBER NOT NULL,
    CONSTRAINT employee PRIMARY KEY (eno),
    FOREIGN KEY (depart_id) REFERENCES department(depart_id)
);
comment on column employee.eno is '员工编号(主键)';   
comment on column employee.ename is '员工姓名'; 
comment on column employee.esex is '员工姓别'; 
comment on column employee.depart_id is '员工所属部门';​
--department表
insert into department(depart_id,depart_name,depart_lead) values('001','总裁办','Judy');
insert into department(depart_id,depart_name,depart_lead) values('002','行政部','Lili');
insert into department(depart_id,depart_name,depart_lead) values('003','人事部','Ben');
insert into department(depart_id,depart_name,depart_lead) values('004','销售部','Ken');

--employee表(需进行父表即department表的数据插入,因为子表的部门编号为父表的外键)
insert into employee(eno,ename,esex,depart_id) values(01,'xiaoli','女','001');
--eno必须插入值,无法默认null;主键不能包括null值和空字符串;

select * from EMPLOYEE;

将外键约束添加到表中

如果要将外键约束添加到现有表中,请按如下所示使用ALTER TABLE语句:

ALTER TABLE child_table 
ADD CONSTRAINT fk_name
FOREIGN KEY (col1,col2) REFERENCES child_table (col1,col2);
SQL

删除外键约束

扫描二维码关注公众号,回复: 4825405 查看本文章

要删除外键约束,请使用下面的ALTER TABLE语句:

ALTER TABLE child_table
DROP CONSTRAINT fk_name;
SQL

禁用外键约束

要暂时禁用外部约束,请使用以下ALTER TABLE语句:

ALTER TABLE child_table
DISABLE CONSTRAINT fk_name;
SQL

启用外部约束

同样,也可以使用ALTER TABLE语句启用禁用的外键约束:

ALTER TABLE child_table
ENABLE CONSTRAINT fk_name;

猜你喜欢

转载自blog.csdn.net/weixin_41556724/article/details/86009107