数据库-约束

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

内容简介:约束的简介:数据的完整性是指数据的正确性和一致性,可以通过定义表时定义完整性约束,也可以通过规则,索引,触发器等。约束分为两类:行级和表级,处理机制是一样的。行级约束放在列后,表级约束放在表后,多个列共用的约束放在表后。完整性约束是一种规则,不占用任何数据库空间。完整性约束存在数据字典中,在执行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

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

查看所有标签

猜你喜欢:

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

Bulletproof Web Design

Bulletproof Web Design

Dan Cederholm / New Riders Press / 28 July, 2005 / $39.99

No matter how visually appealing or packed with content a Web site is, it isn't succeeding if it's not reaching the widest possible audience. Designers who get this guide can be assured their Web site......一起来看看 《Bulletproof Web Design》 这本书的介绍吧!

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具