Oracle数据库约束的分类以及新增、修改、删除。

约束

   建表时为每个字段设置一个数据类型,控制输入值的格式,约束的是控制输入的具体的值满足设置的具体要求的。

1 查看表的约束 [数据字典user_constraints]

      desc constraints

          select  constraint_name  from user_constraints  where table_name='xxx';

    2 约束的作用:

                定义规则(是否必须输入值,输入值的范围和格式)

                确保完整性,避免输入错误和无效的值(数据的精确性和可靠性)

    3 约束的分类

        3.1、非空约束(非空约束没有约束名)     

           1、在创建表时设置非空约束

              CREATE TABLE table_name(column_name datatypeNOT NULL,...);

           2、在修改表时添加非空约束(在添加非空约束之前表中应该没有数据)

              ALTER TABLE table_name MODIFY column_name datatype NOT NULL;

           3、在修改表时删除非空约束

              ALTER TABLE table_name MODIFY column_name datatype NULL;        

        3.2、主键约束

                 一张表只能设计一个主键约束,主键约束可以由多个字段构成(联合主

                 键或复合主键),作用是确保表中每一行数据的唯一性(主键默认非空)。

           1、在创建表时设置主键约束

               1、列级设置约束

               CREATE TABLE table_name(column_name datatypePRIMARY KEY,....);

               2、表级设置约束,在所有的字段写完后设置约束,多个字段为联合主键。

               CONSTRAINT constraint_name PRIMARYKEY(column_name1,..)

                 eg:

                 CREATE TABLE table_name(

                    column_name1   datatype,

                    column_name2   datatype,

                    column_name3   datatype,

                    CONSTRAINT  constraint_name  PRIMARY KEY(column_name1,

column_name2,……));

           2、在修改表时添加主键约束(设置为主键之前,字段中的值必须是唯一非空的)

              ALTER TABLE table_name

              ADD CONSTRAINT constraint_namePRIMARY KEY(column_name1,...);

           3、更改约束名称

              ALTER TABLE table_name

              RENAME CONSTRAINT old_name TOnew_name;

           4、删除主键约束  通过user_constraints 数据字典查看STATUS状态信息

              1、禁用和启用约束

              ALTER TABLE table_nameDISABLE|ENABLE CONSTRAINT constraint_name;

              2、删除约束

              ALTER TABLE table_name DROPCONSTRAINT constraint_name;

              3、可选级联约束删除(一个表只有一个主键约束,可以直接删除。)

              DROP PRIMARY KEY [CASCADE]

        3.3、外键约束(主从表关系)

           1、创建表时创建外键约束

1、 列级设置约束(table2为引用表[主表],table1为从表),设置外键约束时,

主表的字段必须为主键,主从表中相应的字段必须是同一数据类型的,从表中外键字段的值必须来自主表中相应字段的值,或者为null值。

              CREATE  TABLE  table1(column_namedatatype REFERENCES

                             table2(column_name),……);

2、 表级设置约束:[ON DELETE CASCADE]表示级联删除,当主表一条数据

删除后,从表中使用该数据的行也被删除,确保数据的完整性。约束名一般以fk开头,约束名唯一。

              CONSTRAINT constraint_name  FOREIGN KEY(column_name) REFERENCES

                          table_name(column_name) [ON DELETECASCADE];

                 eg:

                 CREATE TABLE table1 (

                    column_name1   datatype,

                    column_name2   datatype,

                    column_name3   datatype,

                    column_name4   datatype,

                    CONSTRAINT  constraint_name  FOREIGN KEY(column_name)

                    REFERENCES   table2(column_name) ON DELETE CASCADE);

           2、修改表时添加外键约束

                 ALTER  TABLE  table_name

                ADD  CONSTRAINTconstraint_name  FOREIGN KEY(column_name)

                 REFERENCES  table_name(column_name)[ON DELETE CASCADE];

           3、删除外键约束

              1、禁用和启用约束

                 ALTER TABLE table_name DISABLE | ENABLE

CONSTRAINT constraint_name;

              2、删除约束

                 ALTER TABLE table_name DROPCONSTRAINT constraint_name;

        3.4、唯一约束(设置唯一约束的字段值保证其唯一性)

           与主键约束的区别,唯一约束允许空值,主键约束每张表只有一个,唯一约束

          可设置多个。

           1、创建表时设置唯一约束(约束名一般以un开头)

              列级设置唯一约束:

              CREATE TABLEtable_name(column_name datatype UNIQUE,...)

              表级设置唯一约束

              CONSTRAINT constraint_nameUNIQUE(column_name)  

              eg:

                       CREATE TABLE table_name(

                           column_name1  datatype;

                           column_name2  datatype;

                           column_name3  datatype;

                           CONSTRAINTconstraint_name UNIQUE(column_name)

                           );

           2、修改表时添加唯一约束

              ALTER TABLE table_name

              ADD CONSTRAINT consraint_nameUNIQUE(column_name);

           3、删除唯一约束

              1、禁止和启用唯一约束

              ALTER TABLE table_nameDISABLE|ENABLE CONSTRAINT constraint_name;

              2、删除约束

              ALTER TABLE table_name DROPCONSTRAINT constraint_name;               

        3.5、检查约束:使表中字段值更有意义满足实际的条件,一张表可有多个检查约束

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

              1、列级设置检查约束(系统自动生成检查约束名)

              CREATE TABLEtable_name(column_name datatype CHECK(expressions),...)

              2、表级设置检查约束(检查约束名一般为ck开头)

                       CREATE TABLE table_name(

                              column_name1datatype,

                              column_name2datatype,

                              column_name3datatype,

                       CONSTRAINTconstraint_name   CHECK(expressions)

          2、修改表时添加检查约束

                       ALTER TABLE table_name

                       ADD CONSTRAINTconstraint_name CHECK(expressions);

           3、删除检查约束

              1、禁用和启用检查约束

              ALTER TABLE table_nameDISABLE|ENABLE CONSTRAINT constraint_name;

              2、删除检查约束

              ALTER TABLE table_name DROPCONSTRAINT constraint_name;


猜你喜欢

转载自blog.csdn.net/yu_ge_ge/article/details/80625224