Oracle约束——维护数据的完整性

来源:互联网 发布:diy装修设计软件 编辑:程序博客网 时间:2024/05/17 00:54

维护数据的完整性

数据的完整性用于确保数据库数据遵从一定的商业和逻辑规则。在Oracle中,数据完整性可以使用约束、触发器、应用程序(过程、函数)三种方法来实现,在这三种方法中,因为约束易于维护,并且具有最好的性能,所以作为维护数据完整性的首选。

1、约束

约束用于确保数据库数据满足特定的商业规则。在Oracle中,约束包括:not  null、unique、primary key、foreign key和check五种。

not null(非空)

unique:不能重复,但是可以为null

primary  key(主键):不能重复不能为null

foreign  key(外键):外键约束要定义在从表上,主表必须具有主键约束或是unique约束。

check:满足的条件。

一张表最多只能有一个主键,但可以有多个unique约束。


2、增加约束

如果在建表时忘记建立必要的约束,则可以再建表后使用alter  table命令为表增加约束。但是要注意:增加not  null约束时,需要使用modify选项,而增加其他四种约束使用add选项。

eg:

alter  table  goods(表名)  modify  goodsName  not  null;  

alter  table  customer  add  constraint  aaa(约束名字,自定义)  unique(cardId)-约束作用的字段;

alter  table  customer  add  constraint  aaa(约束名字,自定义)  check(address  in ('东城','西城'));-约束作用的字段;


3、删除约束

alter  table  表名  drop   constraint   约束名称;

在删除主键约束时,可能有错误,比如:alter  table  表名  drop priamry  key;这是因为如果两张表存在主从关系,那么在删除主表的主键约束时,必须带上cascade选项,如: alter  table 表名  drop  primary  key  cascade;


4、显示约束信息

(1)显示约束信息

通过查询数据字典视图user_constraints,可以显示当前用户所有的约束信息

select   constraint_name  from   user_constraints  where  table_name='表名';

(2)显示约束列

通过查询数据字典视图user_cons_columns,可以显示约束所对应的列表信息

select   column_name,position   from  user_cons_columns  where  constraint_name='约束名'

;


5、列级定义

列级定义是在定义列的同时定义约束

create   table  dept

(dept_id  number(2)  constraint   pk_department  primary  key,--红色部分可有可无,如果不指定,系统会自动分配一个约束号

name   varchar2(12),

loc  varchar2(12) )


6、表级定义

表级定义是指在定义了所有列后,再定义约束。

注意:not  null 约束只能在列级上定义

create  table   employee

(emp_id   number(4),name   varchar2(15),dept_id  number(2),

constraint  pk_employee   primary  key (emp_id),

constraint  fk_department   foreign key(dept_id)   references  dept(dept_id));




0 0
原创粉丝点击