Oracle 约束的定义

来源:互联网 发布:钱箱软件 编辑:程序博客网 时间:2024/05/21 15:42

约束用于确保数据库满足特定的商业逻辑或者企业规划

-----------------------------------------------------------------------

约束包括:not null 、unique、primarykey、foreign key、check

not null约束  用于确保列不能为空(插入数据必须为该列提供数据 update操作不能将该列值设为null)
例:建立i_top表 并在top_r,name 列上定义not null约束 并且指定name列上的not null约束名为nn_name
create table i_top(i_es not null,
                   name varchar2(10) constraint nn_name not null,
                   i_dd number(6,2)
                    );
/*注如果指定约束名那么必须指定constraint选项,
如果不指定约束名那么Oracle会自动生成为sys_Cnnn的约束名*/


unique约束 用于唯一的标识列的数据(唯一列数的列值不能重复可以为空)
当定义唯一约束时,默认情况下Oracle会自动基于唯一约束列建立唯一索引,索引名与约束名完全一致
例:建立i_top表,并在name列上定义unique约束
create table i_top(
                    i_id int,name varchar2(10),i_ee number(6,2),
                    constraint u_name unique(name)           --指定unique约束名为u_name
                   );


primary key 约束用于唯一地标识表行的数据(主键约束列不仅不能重复并且也不能为null)
例:建立i_top表中并在i_id列上定义primary key约束
create table i_top(
                   i_id int primary key,
                   name varcher2(10)
                  );


foreign key约束 用于定义主从表的关系 (外部键约束要定义在从表上,但主表必须具有主键约束或者唯一约束,
                                        当定义了外键约束之后,要求外部键列的数据必须是主表的主键列<或唯一列>中存在,或者为null)
<定义外部键约束关键字:
           foreign key:用于指定在表级定义外部键约束
           references:用于指定主表名及其主键列
           on delete cascade:用于指定级联删除选项
           on delete set null:用于指定转换相关外部键值为null>

例:建立i_top表,并在表i_tops和i_top之间定义主从关系
create table i_top(
                  i_id int,
                  name varchar2(10),
                  edon int constraint fk_edon references i_tops(edon)
                  );


check 约束用于强制表行数据必须满足的条件
例:建立i_top表 并在top_s列上定义check约束
 create table i_top(i_id int,name varcher2(10),i_top number(6,2),

                    check(i_top between 1000 and 5000))   --i_top列的值只能在1000到5000之间


---------------------------------------------------------------------------------------------------
定义复合约束:
例:建立ite表并在ite_id和ore_id列定义主键约束
create table ite(
                 ore_id number(3),
                 ite_id number(3),
                 name varcher2(20),
                 primary key(ore_id,ite_id)
                 );
--------------------------------------------------------------------------------------------------
0 0
原创粉丝点击