您的位置:首页 > 数据库 > Oracle

Oracle 约束的定义

2017-03-13 10:29 375 查看
约束用于确保数据库满足特定的商业逻辑或者企业规划

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

约束包括: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)

                 );

--------------------------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: