数据库-约束

栏目: 数据库 · 发布时间: 5年前

内容简介:约束的简介:数据的完整性是指数据的正确性和一致性,可以通过定义表时定义完整性约束,也可以通过规则,索引,触发器等。约束分为两类:行级和表级,处理机制是一样的。行级约束放在列后,表级约束放在表后,多个列共用的约束放在表后。完整性约束是一种规则,不占用任何数据库空间。完整性约束存在数据字典中,在执行SQL或PL/SQL期间使用。用户可以指明约束是启用的还是禁用的,当约束启用时,他增强了数据的完整性,否则,则反之,但约束始终存在于数据字典中。约束类型:

约束的简介:

数据的完整性是指数据的正确性和一致性,可以通过定义表时定义完整性约束,也可以通过规则,索引,触发器等。约束分为两类:行级和表级,处理机制是一样的。行级约束放在列后,表级约束放在表后,多个列共用的约束放在表后。完整性约束是一种规则,不占用任何数据库空间。完整性约束存在数据字典中,在执行 SQL 或PL/SQL期间使用。用户可以指明约束是启用的还是禁用的,当约束启用时,他增强了数据的完整性,否则,则反之,但约束始终存在于数据字典中。

约束类型:

唯一性和主键约束(UNIQUE和Primary Key)

外键约束(foreign key)

检查约束(CHECK)

空值约束(NOT NULL)

默认值约束(DEFAULT)

五种约束详细介绍:

1。唯一性和主键约束

要求某一列,或几列不能有重复的值,建立主键约束和唯一约束时,Oralce会基于约束列自动建立唯一索引;主键约束不允许为NULL,唯一约束允许为NULL,一张表只能建立一个主键约束。唯一性和主键约束类似,只是关键词不同而已,语法一致。

创建约束

CREATE TABLE TABLE_NAME

(

COL1 VARCHAR2(32) NOT NULL PRIMARY KEY,

)

            CREATE TABLE TABLE_NAME
            (
                COL1 VARCHAR2(32) NOT NULL CONSTRAINT PK_ID PRIMARY KEY,
            )

            CREATE TABLE TABLE_NAME
            (
                COL1 VARCHAR2(32) NOT NULL,
                COL2 VARCHAR2(32) NOT NULL Foreign Key,
                CONSTRAINT PK_TABLE_NAME PRIMARY KEY(COL1,COL2)
            )
    修改约束        
            ALTER TABLE Table_Name
            ADD CONSTRAINT PK_Table_Name PRIMARY KEY NONCLUSTERED(Col1)【这里表明了是聚集还是非聚集主键索引】
    如果唯一性约束保护多个数据列,那么唯一性约束要作为表约束增加。语法如下:
            CONSTRAINT CONSTRAINT_NAME (COL1,COL2) UNIQUE USING INDEX TABLESPACE (TABLESPACE_NAME) STORAGE (STORED CLAUSE)

2。外键约束

剩下的约束写法都是差不多,这里就不多举例了。

CREATE TABLE TABLE_NAME

(

COL1 VARCHAR2(32) NOT NULL REFERENCES PRIMARY_TABLE(PRIMARY_COL) ON DELETE CASCADE,

)

            CREATE TABLE TABLE_NAME
            (
                COL1 VARCHAR2(32) NOT NULL,
                CONSTRAINT FK_TABLE_NAME FOREIGN KEY REFERENCES PRIMARY_TABLE(PRIMARY_COL) ON DELETE SET NULL
            )

    这里需要注意的是ON 后面的内容。这个是关联的关键。与删除修改密切相关。
    NO ACTION:更新或删除父表中的数据时,如果会使子表中的外键违反引用完整性,该动作将被禁止执行。
    CASCADE: 当父表中被引用列的数据被更新或删除时,子表中的相应的数据也被更新或删除。
    SET NULL:当父表数据被更新或删除时,子表中的相应数据被设置成NULL值,前提是子表中的相应列允许NULL值。
    SET DEFAULT:当父表数据被更新或删除时,子表中的数据被设置成默认值。前提是子表中的相应列设置有默认值。

3。检查约束。

 检查列的类型和范围。语法:CONSTRAINT[constraint_name]CHECK(condition); 比如:check(Age >2)

4。空值约束和默认约束

    一种是默认值(default sysdate或者 default 1),一种是限制空值Not Null【NOT NULL只能在列级定义】,这也可以看成是约束,它的作用也是进行数据的完整性控制。
    修改默认约束:
            ALTER TABLE TABLENAME
            ADD CONSTRAINT DF_TABLENAME_COL1 DEFAUIT('22') FOR COL1
    修改空值约束
    修改NOT NULL是四个约束当中最特殊的,直接用Modify Col_Name NOT NULL 即可删除、禁用、启用约束、修改约束名
    ALTER TABLE table_name
    DROP CONSTRAINT constraint_name(删除约束)
    DISABLE CONSTRAINT constraint_name;(启用约束)
    ENABLE CONSTRAINT constraint_name;(禁用约束)ALTER TABLE table_name
    RENAME CONSTRAINT old_constraint_name TO new_constraint_name(修改约束名)
    select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where constraint_type='R';【禁用所有外键约束】
    select 'alter table '||table_name||' enable constraint '||constraint_name||';' from user_constraints where constraint_type='R';【启用所有外键约束】
    select 'alter table '||table_name||' drop constraint '||constraint_name||';' from user_constraints where constraint_type='R';【删除所有外键约束 】
    所有约束信息:SELECT * FROM user_constraints

以上所述就是小编给大家介绍的《数据库-约束》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序员第二步

程序员第二步

尹华山 / 人民邮电出版社 / 2013-11 / 45.00元

这本书是写给程序员和项目经理的。作者结合自身的丰富成长历程,通俗易懂地讲述了一名程序员如何才能成为一名优秀的项目经理。内容涉及职业规划、学习方法、自我修炼、团队建设、项目管理等,书中理清了项目管理领域中典型的误区及具有迷惑性的观点,并对项目中的难点问题提出了针对性的解决方法。 全书行文流畅,严谨中带着活泼,理智中透着情感,给读者带来轻松愉快的阅读感受。书中诸多富有创见的观点,让人耳目一新,引......一起来看看 《程序员第二步》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具