理解外键约束
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.可以删除班级 同时级联删除对应班级的学生 应用场合:如文章--评论
以上是关于理解外键约束的主要内容,如果未能解决你的问题,请参考以下文章