oracle数据库之约束

来源:互联网 发布:易语言播放音乐源码 编辑:程序博客网 时间:2024/05/22 09:46

一、非空约束

     1、在创建表时设置非空约束(在数据类型后面加上 not  null)

create table tablename(    username varchar2(20) not null,    ...);
    2、在修改表时添加非空约束(其实也就是修改字段的定义,但是需要表中没有数据(确切的说是要添加非空约束的列没有非空数据))

alter table tablename modify column_name datatype not null
   3、删除非空约束

alter table tablename modify column_name datatype null;
         注意:null不能省略,否则删不掉
二、主键约束

         一张表只能设计一个主键约束,主键约束可以由多个字段构成,成为联合主键或复合主键,主键约束可以确保数据的唯一性,主键约束的字段是非空的

    1、在创建表时添加主键约束

create table tablename(    id number(6,0) primary key,    ...);
create table tablenaem(    ...,    [constraint pk_name] primary key(字段名,...));
       第一种为列级约束,第二种为表级约束,如果加了constraint,则主键名称不能省略

    2、在修改表时添加主键约束

alter table tablename add constraint constraint_name primary key(column_name1,...);
      注意: constraint_name不能省略 

    3、修改主键约束的名称

alter table table_name rename constraint constraint_name to new_constraint_name;
        该语句也可以用于修改其他类型约束的名称

    4、禁用主键约束

alter table tablename disable | enable constraint constraint_name;
      该语句也可以用于禁用和启用其他类型约束

    5、删除主键约束

alter table tablename drop constraint constraint_name;
         该语句也可以用于删除其他类型的约束,对于主键约束也可以用下面的语句删除:

alter table table_name drop primary key [cascade];
         因为一个表的主键约束只能有一个
三、外键约束(外键可以为null)

      1、在创建表的时候设置外键约束

create table tablename(     ...,     t_id varchar2(10) references other_tablename(column),     ...);
            references 后面的表叫主表,新建的表叫从表(也可以说是有外键列的表是从表),以上是创建列级约束,下面是创建表级约束:

create table tablename(    ...,    [constraint constraint_name] foreign key(this_table_column) references other_tablename(other_table_column) [ on delete cascade ]);
          如果加了constraint,则外键名称不能省略

      2、在修改表的时候设置外键约束

alter table tablename add constraint constraint_name foreign key(column) references other_tablename(column);
            注意:constraint_name不能省略 

      3、修改外键约束的名称

alter table tablename rename constraint constraint_name to new_constraint_name;

      4、禁用外键约束

alter table tablename disable | enable constraint constraint_name;

      5、删除外键约束

alter table tablename drop constraint constraint_name;

四、唯一约束

      1、在创建表的时候设置唯一约束

create table tablename(    column_name datatype unique,    ...);
create table tablename(    ...,    [constraint constraint_name] unique(column_name));
      2、在修改表的时候添加唯一约束

alter table tablename add constraint constraint_name unique(column_name);
        注意:constraint_name不能省略 

      3、禁用 | 启用唯一约束

alter table tablename disable | enable constraint constraint_name;

      4、删除唯一约束

alter table tablename drop constraint constraint_name;

五、检查约束

      检查约束的作用是使字段的值具有实际意义,例如:员工的薪水不能为负的,年龄是不可能为好几百的,检查约束是可以有多个的

      1、在创建表时设置检查约束

create table tablename(     ...,     column_name datatype check(expr),     ...);
create table tablename(      ...,      [constraint constraint_name] check(expr));

      2、在修改表时设置检查约束

alter table tablename add constraint constaint_name check(expr);

      3、禁用检查约束

alter table tablename disable | enable constraint constraint_name;

      4、删除检查约束

alter table tablename drop constraint constraint_name;

总结:

一、主键约束与唯一约束的区别

           1、主键约束字段值必须是非空的,唯一约束允许有一个空值

           2、主键约束在每一张表中只能有一个,而唯一约束则可以有多个

二、1、除了主键约束删除时可以直接在drop后面使用primary key关键字以外,其余约束都是使用如下语句:

alter table tablename drop constraint constraint_name;
        2、禁用约束都是使用以下语句:
alter table tablename disable | enable constraint constraint_name;

        3、在创建表时添加表级约束时,语句前面的 constraint constraint_name 都可以不加,此时oracle自动为约束起名

        4、只有非空约束只能在列级设置,不能在表级设置,其它约束既能在列级设置也能在表级设置,非空约束其实就是修改列的定义




原创粉丝点击