【Oracle】实验11:完整性管理

该文详细列出了对数据库中不同类型的约束(如主键、外键、非空、唯一和检查约束)的创建要求,包括命名规范、延迟检查特性和状态值。同时,涉及索引的创建和管理,如索引命名、事务位置数和存储表空间的选择。所有操作均需以system用户登录并针对特定的表和字段执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

考核内容
     1、连接信息检测,要求如下:
         1)保证第2次实验中服务器端配置的第1个监听端口可以正常工作,
         2)保证使用第2次实验中客户端配置的第5个服务命名可以成功创建会话。
     2、创建第1个主键约束,要求如下:
         1)①以system用户登录,
         2)①--- 约束名命名规范:p_表名_约束字段名,
         3)①--- 目标表为“全局临时表”,
         4)①--- 主键字段为“件号”,
         5)①--- 支持延迟检查特性:不支持,
         6)①--- 状态值:约束好像没有定义。
     3、创建第2个主键约束,要求如下:
         1)②以system用户登录,
         2)②--- 约束名命名规范:p_表名_约束字段名,
         3)②--- 目标表为“分区表”,
         4)②--- 主键字段为“件号”,
         5)②--- 支持延迟检查特性:支持,
         6)②--- 当前检查方式:延迟检查,
         7)②--- 状态值:已有记录满足约束条件,新加或修改记录满足约束条件,
         8)②--- 与主键相关索引信息:
         9)②------- 索引名命名规范:i_表名_索引字段名,
        10)②------- 初始事务位置数为27,
        11)②------- 缓存池:一直保留,
        12)②------- 存储表空间:第3个索引表空间。
     4、创建第1个外键约束,要求如下:
         1)③以system用户登录,
         2)③--- 外键命名规范:r_表名_约束字段名,
         3)③--- 目标表为“第1个簇表”,
         4)③--- 外键字段为“专业号”,
         5)③--- 参照表为“专业表-簇表2”,
         6)③--- 参照字段为“专业序号”,
         7)③--- 参照约束名命名规范:p_表名_约束字段名,
         8)③--- 延迟检查特性:不支持,
         9)③--- 状态值:不允许添加或修改记录,
        10)③--- 外键删除规则:在子表有对应记录的父表记录不能删除。
     5、创建第2个外键约束,要求如下:
         1)④以system用户登录,
         2)④--- 外键命名规范:r_表名_约束字段名,
         3)④--- 目标表为“索引组织的表”,
         4)④--- 外键字段为“主管”,
         5)④--- 参照表为“索引组织的表”,
         6)④--- 参照字段为“员工编号”,
         7)④--- 参照约束名命名规范:p_表名_约束字段名,
         8)④--- 延迟检查特性:支持,
         9)④--- 当前检查方式:延迟检查,
        10)④--- 状态值:约束好像没有定义,
        11)④--- 外键删除规则:父表删除记录,子表对应记录一起删除。
     6、创建第1个非空约束(第1种方法),要求如下:
         1)⑤以system用户登录,
         2)⑤--- 非空约束命名规范:n_表名_约束字段名,
         3)⑤--- 目标表为“第1个簇表”,
         4)⑤--- 非空约束字段名“课程名称”,
         5)⑤--- 延迟检查特性:不支持,
         6)⑤--- 状态值:约束好像没有定义。
     7、创建第2个非空约束(第2种方法),要求如下:
         1)⑥以system用户登录,
         2)⑥--- 非空约束命名规范:n_表名_约束字段名,
         3)⑥--- 目标表为“包含大对象段的表”,
         4)⑥--- 非空约束字段名“系名称”,
         5)⑥--- 延迟检查特性:支持,
         6)⑥--- 当前检查方式:延迟检查,
         7)⑥--- 状态值:已有记录不知道是否满足约束条件,新加或修改记录必须满足约束条件。
     8、创建第1个唯一约束,要求如下:
         1)⑦以system用户登录,
         2)⑦--- 约束名命名规范:u_表名_约束字段名,
         3)⑦--- 目标表为“全局临时表”,
         4)⑦--- 唯一约束字段为“零件名”,
         5)⑦--- 支持延迟检查特性:不支持,
         6)⑦--- 状态值:约束好像没有定义。
     9、创建第2个唯一约束,要求如下:
         1)⑧以system用户登录,
         2)⑧--- 约束名命名规范:u_表名_约束字段名,
         3)⑧--- 目标表为“分区表”,
         4)⑧--- 唯一约束字段为“零件名”,
         5)⑧--- 支持延迟检查特性:支持,
         6)⑧--- 当前检查方式:延迟检查,
         7)⑧--- 状态值:已有记录满足约束条件,新加或修改记录满足约束条件,
         8)⑧--- 与唯一约束相关索引信息:
         9)⑧------- 索引名命名规范:i_表名_索引字段名,
        10)⑧------- 初始事务位置数为9,
        11)⑧------- 缓存池:一直保留,
        12)⑧------- 存储表空间:第3个索引表空间。
    10、创建第1个检查约束(使用between and实现),要求如下:
         1)⑨以system用户登录,
         2)⑨--- 检查约束命名规范:c_表名_约束字段名,
         3)⑨--- 目标表为“第1个簇表”,
         4)⑨--- 检查约束字段名为“课程学分”,
         5)⑨--- 检查约束字段下界值为2,
         6)⑨--- 检查约束字段上界值为8,
         7)⑨--- 支持延迟检查特性:不支持,
         8)⑨--- 状态值:已有记录不知道是否满足约束条件,新加或修改记录必须满足约束条件。
    11、创建第2个检查约束(使用x>=a and x<=b实现),要求如下:
         1)⑩以system用户登录,
         2)⑩--- 检查约束命名规范:c_表名_约束字段名,
         3)⑩--- 目标表为“索引组织的表”,
         4)⑩--- 检查约束字段名为“工资”,
         5)⑩--- 检查约束字段下界值为1900,
         6)⑩--- 检查约束字段上界值为1000000,
         7)⑩--- 支持延迟检查特性:支持,
         8)⑩--- 当前检查方式:延迟检查,
         9)⑩--- 状态值:约束好像没有定义。

 模板:

分区表:RJPAR671
索引组织:RJEMP882
大对象:RJSTU303
簇表1:RJCOU804
簇表2:RJSPEC835
全局临时表:RJPAR816
第1个索引表空间:TAI_544
第2个索引表空间:TDI_843
第3个索引表空间:THI_644
不允许添加或修改记录:disable validate
已有记录满足约束条件,新加或修改记录满足约束条件:enable validate(默认)
约束好像没有定义:disable  novalidate
已有记录不需要满足约束条件,新加或修改记录满足约束条件:enable novalidate
支持 立即检查:deferrable initially immediate
支持 延迟检查:deferrable initially deferred
不支持:initially immediate(默认)
父表删除记录,子表有对应记录的外键字段会置空:on delete set null
父表删除记录,子表对应记录一起删除:on delete cascade
conn system/647001

“已有记录满足约束条件,新加或修改记录满足约束条件”和“不支持”可以不写,默认就是

创建主键约束:

Alter table 表名 add constraint 约束名 primary key(主键字段) 延迟检查 状态值;
alter index 约束名 rename to 索引名; 
alter index 索引名 initrans 16;
//主键约束和唯一键约束会自动创建同名索引,所以要改名

创建外键约束:

Alter table 参照表表名 add constraint 约束名 primary key(参照字段);
Alter table 目标表 add constraint 约束名 foreign key(外键字段) references 参照表(参照字段) 删除规则 延迟检查 状态值;

创建第1个非空约束(第1种方法):

Alter table 目标表名  modify 非空约束字段名 not null 延迟检查 状态值;
select * from user_constraints where table_name='目标表名';
Alter table 目标表名 rename constraint  查到的约束名 to 题目要求约束名;

创建第2个非空约束(第2种方法),要求如下:

Alter table 目标表名 add constraint 约束名 check(非空约束字段名 is not null) 延迟检查 状态值;

创建唯一约束:

Alter table 目标表 add constraint 约束名 unique(唯一约束字段) 延迟检查 状态值;
alter index 约束名 rename to 题目要求索引名;
alter index 索引名 initrans 19 storage (buffer_pool keep); 
//立即淘汰:buffer_pool Recycle
//一直保留:buffer_pool keep
alter index 索引名 rebuild tablespace 第几个索引表空间;

创建第1个检查约束(使用between and实现):

Alter table 目标表 add constraint 约束名 check(检查约束字段 between 1 and 8) 延迟检查 状态值;

创建第2个检查约束(使用x>=a and x<=b实现):

Alter table 目标表 add constraint 约束名 check(检查约束字段>=1800 and 检查约束字段<=1000000) 延迟检查 状态值;

代码:  

conn system/647001

“已有记录满足约束条件,新加或修改记录满足约束条件”和“不支持”可以不写,默认就是

2、创建主键约束:

Alter table RJPAR816 add constraint p_RJPAR816_pno primary key(pno) disable  novalidate;

3、创建主键约束:

Alter table RJPAR671 add constraint p_RJPAR671_pno primary key(pno) deferrable initially deferred;
alter index p_RJPAR671_pno rename to i_RJPAR671_pno; 
alter index i_RJPAR671_pno initrans 27 storage (buffer_pool keep);
alter index i_RJPAR671_pno rebuild tablespace THI_644;
//主键约束和唯一键约束会自动创建同名索引,所以要改名

 4、创建外键约束:

Alter table RJSPEC835 add constraint p_RJSPEC835_spec_spno primary key(spec_spno);//记得改记录
Alter table RJCOU804 add constraint r_RJCOU804_couspno foreign key(couspno) references RJSPEC835(spec_spno) disable validate;

5、创建外键约束:

Alter table RJEMP882 add constraint p_RJEMP882_e_no primary key(e_no);//之前建过主键,所以执行不了
alter table RJEMP882 rename constraint SYS_IOT_TOP_24028 to p_RJEMP882_e_no;//所以执行这个
Alter table RJEMP882 add constraint r_RJEMP882_e_manager foreign key(e_manager) references RJEMP882(e_no) on delete cascade deferrable initially deferred disable  novalidate;

6、创建第1个非空约束(第1种方法):

Alter table RJCOU804  modify couname not null disable novalidate;
select * from user_constraints where table_name='RJCOU804';
Alter table RJCOU804 rename constraint  查到的约束名 to n_RJCOU804_couname;

7、创建第2个非空约束(第2种方法),要求如下:

Alter table RJSTU303 add constraint n_RJSTU303_s_dept check(s_dept is not null) deferrable initially deferred enable novalidate;

8、创建唯一约束:

Alter table RJPAR816 add constraint u_RJPAR816_pname unique(pname) disable  novalidate;

9、创建唯一约束:

Alter table RJPAR671 add constraint u_RJPAR671_pname unique(pname) deferrable initially deferred;
alter index u_RJPAR671_pname rename to i_RJPAR671_pname;
alter index i_RJPAR671_pname initrans 9 storage (buffer_pool keep); 
//立即淘汰:buffer_pool Recycle
//一直保留:buffer_pool keep
alter index i_RJPAR671_pname rebuild tablespace THI_644;

10、创建第1个检查约束(使用between and实现):

Alter table RJCOU804 add constraint c_RJCOU804_coulevel check(coulevel between 2 and 8) enable novalidate;

11、创建第2个检查约束(使用x>=a and x<=b实现):

Alter table RJEMP882 add constraint c_RJEMP882_e_income check(e_income>=1900 and e_income<=1000000) deferrable initially deferred disable  novalidate;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值