实验二 数据库完整性技术.doc
文本预览下载声明
实验【实验目的】
1
2、熟悉Oracle的完整性技术。
3、了解Oracle的违反完整性处理措施。
【实验性质】
验证性实验 【实验】
【实验内容】
/*创建表s、p、j、spj*/
定义s表; sno主码,sname非空、city缺省值
定义p表; pno主码,pname非空、color只能取红、蓝、绿
定义j表; jno主码, jname非空
定义spj表; (sno,pno,jno)主码,参照sno、pno、jno外码,qty介于0—1000
drop table s;
drop table p;
drop table j;
drop table spj;
create table s
(sno char(2) constraint pk_s_sno primary key,
sname varchar2(8) constraint nn_s_sname not null,
status int,
city varchar2(8) default(天津)
);
create table p
(pno char(2)constraint pk_p_pno primary key,
pname varchar2(8) constraint nn_p_pname not null,
color char(2) constraint c_p_color check(color in(红,蓝,绿)),
weight int
);
create table j
(jno char(2) constraint pk_j_jno primary key,
jname varchar2(8)constraint nn_j_jno not null,
city varchar2(8)
);
create table spj
(sno char(2),
pno char(2),
jno char(2),
qty int,
constraint pk_spj primary key (sno,pno,jno),
constraint fk_spj_sno foreign key(sno) references s(sno),
constraint fk_spj_pno foreign key(pno) references p(pno),
constraint fk_spj_jno foreign key(jno) references j(jno),
constraint ck_spj_qty check (qty0 and qty1000)
);
insert into s values (s1,竟仪,20,天津);
insert into s values (s2,盛锡,10,北京);
insert into s values (s3,东方红,30,北京);
insert into s values (s5,为民,30,上海);
insert into p values (p1,螺母,红,12);
insert into p values (p2,螺栓,绿,17);
insert into p values (p3,螺丝刀,蓝,14);
insert into p values (p4,螺丝刀,蓝,14);
insert into j values(j1,三建,北京);
insert into j values(j2,一汽,长春);
insert into j values(j3,弹簧厂,天津);
insert into j values(j4,造船厂,天津);
insert into j values(j5,机车厂,唐山);
insert into spj values(s1,p1,j4,700);
insert into spj values(s1,p2,j2,100);
insert into spj values(s2,p3,j1,400);
insert into spj values(s2,p3,j2,200);
insert into spj values(s3,p1,j1,200);
insert into spj values(s3,p3,j1,200);
1、针对下列情况,如果出错的话,给出错误码,并说明原因;不出错的话,观察数据并说明理由。
(1)插入违反约束的元组,主码为null值
insert into s values (null,竟仪,20,天津);
ora-01400:主码不能为空值
(2)插入违反约束的元组,主码取重复值
insert into s values (s1,竟仪,20,天津);
显示全部