理解外键约束

Posted 清风追梦enjoy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解外键约束相关的知识,希望对你有一定的参考价值。

--自定义账户访问别的用户的表
select * from scott.emp;
select * from scott.dept;

--foreign key 外键约束
--创建班级表
create table t_class(
    cid number(6),
    cname varchar2(12)
)

--方式三:添加班级约束
alter table t_class add constraints pk_class primary key(cid);
alter table t_class modify cname varchar2(12) not null;

--班级表添加数据
insert into t_class values (1,java304);
insert into t_class values (2,java204);
insert into t_class values (3,android);
insert into t_class (cid,cname)values (4,android);
select * from t_class;
drop table t_class;

--创建学生表
create table t_student(
    sno number(6) primary key,
    sname varchar(12) not null,
    sex varchar2(2) default  check(sex= or sex=),
    age number(3) check(age>=10 and age<=30),
    enterdate date,
    classid number(6),
    --方式一:创建外键约束
    --classid number(6) references t_class(cid),  --references 加s
    email varchar2(30) unique  --逗号注意!
    --方式二:创建表时 单独 创建外键约束
    --constraints fk_student_classid foreign key(classid) references t_class(cid)    
)
--方式三:创建表后 通过修改表的方式创建外键约束
alter table t_student add constraints fk_student_classid foreign key(classid) references t_class(cid);

alter table t_student add constraints fk_student_classid foreign key(classid) references t_class(cid) on delete set null;
alter table t_student add constraints fk_student_classid foreign key(classid) references t_class(cid) on delete cascade;

alter table t_student drop constraints fk_student_classid;
--添加表数据
insert into t_student values(1,yan,,20,29-3月-2017,1,[email protected]);
insert into t_student values(2,yan,,20,29-3月-2017,22,[email protected]);
insert into t_student values(3,yan,,20,29-3月-2017,1,[email protected]);

delete t_class  where cid = 1;
select * from t_class; 
insert into t_class (cid,cname)values(1,java304);

select * from t_student;
drop table t_student;
--缺点:
--1.学生的编号不能是不存在的班级 
--解决方案:外键约束
--2.删除指定的班级(cid)时,关联表中(t_student)指定的学生及其班级编号(classid)仍然存在
--解决方案:
--1.默认的 不删除学生 就不能删除班级
--2.可以删除班级 同时将学生的classid置为空  应用场合:如学生--班级
--3.可以删除班级 同时级联删除对应班级的学生  应用场合:如文章--评论

 

以上是关于理解外键约束的主要内容,如果未能解决你的问题,请参考以下文章

错误代码:1215。无法添加外键约束(外键)

错误代码:1215。无法添加外键约束(外键)

错误代码:1215。无法添加外键约束(外键)

深刻理解数据库外键含义

oracle 删除外键约束 禁用约束 启用约束

主键和外键约束(主表与从表)