首页 > 代码库 > 理解外键约束
理解外键约束
--自定义账户访问别的用户的表 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‘,‘bao@sxt.cn‘); insert into t_student values(2,‘yan‘,‘男‘,‘20‘,‘29-3月-2017‘,‘22‘,‘bao@sxt2.cn‘); insert into t_student values(3,‘yan‘,‘男‘,‘20‘,‘29-3月-2017‘,‘1‘,‘bao@sxt3.cn‘); 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.可以删除班级 同时级联删除对应班级的学生 应用场合:如文章--评论
理解外键约束
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。