Oracle数据库管理(8)——完整性约束

数据的完整性就正确性、准确型,包括三种:实体完整性、参照完整性和用户自定义完整性。
实体完整性就是某一列的数据应该在正确的取值范围内,例如学生表中的学号就不能为负数。
参照完整性就是外键的取值范围应该在关联表对应的列的取值范围内,例如学生表中的班级编号就应该在班级表的班级编号范围内。
用户自定义完整性就是某些列的取值应该在依据其他表或列的取值范围进行计算后的范围内,例如学生表中的出生日期应该比入学日期小。

Oracle中主要通过约束、触发器、过程函数实现数据的完整性。
维护数据的完整性主要有“not null”、“unique”、“check”、“primary key”、“foreign key”五种。
not null:非空,只能在列内定义。
unique:唯一,不能重复,但可以为空,但只能有一个空值。一个表可以有多个列为“unique”。即可以在列中定义,也能在表中定义
primary key:主键,不能重复也不能为空。一个表只能有一列是“primary key”。即可以在列中定义,也能在表中定义
foreign key:外键。
check:可以按照用户要求自动检查。

SQL> create table t3(bianhao number(5) not null check (bianhao > 0 and bianhao < 100));
表已创建。
//查看表的约束
select * from user_constraints where table_name = 'T3';
//查看表的约束对应的列
select * from user_cons_columns where table_name = 'T3';
//两列联合唯一。如一个班里一个学生号只能有一个学生,班级编号可以重复、不同班级里可以有相同编号的学生
create table t4(class_id number(3) not null,student_id number(3) not null,student_name varchar2(10),unique(class_id,student_id));
//设置列的默认值
create table t5(id number(5),name varchar2(5),gongzi number(8,2) default 1000);
//给带默认值的列赋值的两种方式
insert into t5 values(1,'Tom',default);
insert into t5(id,name) values(2,'Jim');
//创建主键
create table student2(id number(5) primary key,name varchar2(5));
//创建外键,关联另一个表的主键
create table address2(id number(5),address varchar2(20),foreign key(id) references student2(id));
//创建主键的5种方式.第一种:在列中定义
create table user1(userid number(10) primary key,username varchar2(20));
//第二种:在列中定义,同时定义约束名
create table user2(userid number(10) constraint pk_01 primary key,username varchar2(20));
//第三种:在列定义后定义
create table user3(userid number(10),username varchar2(20),primary key(userid));
//第四种:在列定义后定义,同时定义约束名
create table user4(userid number(10),username varchar2(20),constraints pk_02 primary key(userid));
//第五种:先创建表,再添加主键
create table user5(userid number(10),username varchar2(20));
alter table user5 add constraints pk_03 primary key(userid);
//删除约束
alter table user2 drop constraint pk_01;
//删除主键
alter table user1 drop primary key;
//如果出错:ORA-02273:此唯一/主键以被某外键引用,可以
alter table user1 drop primary key cascade;
//删除主键被引用的表
drop table user1 cascade constraints;
//暂时禁用主键。禁用主键后可以在该列插入重复的值。
alter table user3 disable primary key;
//恢复主键。若在禁用主键期间插入了重复值,恢复主键时会报错:“违反主键”
alter table user3 enable primary key;

查看表约束
查看表约束对应的列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值