5、oracle下数据完整性约束

ORACLE下数据完整性约束

为了保证数据的完整性和结构的正确性,oracle也有很多约束条件。

1.数据完整性

为了保证数据的完整性,一般对数据列(字段)进行如下约束,主键约束(PRIMARY KEY)、唯一键约束(UNIQUE)、非空约束(NOT NULL)、默认值(DEFAULT)、检查约束(CHECK)、外键约束(FOREIGN KEY)。

1.1 实体完整性约束

要求每一个表中的主键字段都不能为空或者重复,一般实现的方法是添加唯一约束和主键约束。这里选择主键一般的原则是尽量选择单键、主键必须保证唯一性、非空性、一般选择没有意义,用户不关心的字段。

表创建后,添加约束的语句如下:

-- 使用constraint创建指定名称的约束
constraint pk_id primary key(id);

1.2域完整性约束

要求列的值域的完整性,如数据类型、格式和范围、是否允许为空等。一般实现的方法是限制数据类型,添加外键约束、默认值约束、非空约束。

-- 限制sex的取值
-- 创建表时添加约束
CREATE TABLE test(
   id int,
   sex char(1) constraint test_sex check (sex in ('0','1'))
);
--创建表后添加约束
alter table test add constraint test_sex check(sex in ('0','1'));

1.3引用完整性约束

当处理数据时,通过参照另一个相关联的表中的数据,来检查对表的数据的操作是否正确。一般实现方法是添加外键约束。

alter table test
add constraint FK_TEST_ID foregin key (TID) references 主表 (TID)

2.表之间的关系
oracle中表与表之间的关系有一对一、一对多、多对一。

3.数据表的设计范式

数据表的设计范式是没有数据库之分的,每个数据库都是一样的,最基本的三个范式是:确保每列保持原子性;确保表中的每条数据都和主键相关;确保每列都和主键列直接相关,而不是间接相关。

4.修改约束的SQL语法

-- 建表时添加约束
not null约束必须写在行上
DEFAULT 约束必须写在行上
constraint 约束名 primary key(列)
constraint 约束名 unique(列)
constraint 约束名 check(sex in('男','女'))
constraint 约束名 foreign key(列) reference 其他表(列)
-- 外部添加约束
ALTER TABLE 表 ADD CONSTRAINT 约束名 PRIMARY KEY (列)
ALTER TABLE 表 ALTER COLUMN 列 SET DEFAULT '默认值'
ALTER TABLE 表 ADD CONSTRAINT 约束名 CHECK (条件)
ALTER TABLE 表 ADD CONSTRAINT 约束名 FOREIGN KEY (列) REFERENCES 其他表(列)
ALTER TABLE 表 ADD CONSTRAINT 约束名 UNIQUE (列...)
-- 删除约束
ALTER TABLE Persons DROP CONSTRAINT 约束名

-- 停用约束

ALTER TABLE 表名ADD CONSTRAINT 约束名 UNQUE(status) DISABLE
ALTER TBALE 表名DISABLE CONSTRAINT 约束名

--启用约束

ALTER TABLE 表名ENABLE CONSTRAINT 约束名;
ALTER TABLE 表名ENABLE NOVALIDATE CONSTRAINT 约束名;

-- 查看约束

select * from user_constraints where ...;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值