Oracle中的约束
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle中的约束相关的知识,希望对你有一定的参考价值。
- 非空约束 NOT NULL
- 数据库表中的某一个列不能为空
- 唯一约束 UNIQUE
- 表中某一个列不允许重复
- 唯一约束所在列可以为NULL,但只能出现一次
- 代码:
CREATE TABLE MEMBER ( MID NUMBER, NAME VARCHAR2(20), EMAIL VARCHAR2(20), CONSTRAINT UK_EMAIL UNIQUE(EMAIL) ); |
- 主键约束 PRIMARY KEY
- 既非空也不能重复。
- 一般来说一张表只设置一个主键,但是也可以设置多个主键,这种叫联合主键。
- 检查约束 CHECK
- 在进行数据更新前设置一些条件,满足条件才允许插入或更新
- 检查约束会损耗掉一部分数据库的性能
CREATE TABLE MEMBER ( MID NUMBER, NAME VARCHAR2(20), EMAIL VARCHAR2(20), AGE NUMBER(3), CONSTRAINT UK_EMAIL UNIQUE(EMAIL), CONSTRAINT PK_MID PRIMARY KEY(MID), CONSTRAINT CK_AGE CHECK(AGE > 0 AND AGE < 150) ); |
- 外键约束
- 作用在两张表上
- CONSTRAINT FK_COLUMNNAME_MAINTABLENAME_COLUMNNAME FOREIGN KEY(COLUMNNAME) REFERENCES TABLENAME(COLUMNNAME)
- 删除父表前一定要先删除子表,否则父表无法删除。但若一定要删除父表,必须使用语句DROP TABLE TABLE_NAME CASCADE CONSTRAINT
- 父表中要作为子表的外键应用,则父表的该字段必须是PRIMARY KEY 或者UNIQUE KEY 约束
- 父表中的某些字段如果在子表中有关联,默认情况下,父表记录不能删除。如果希望父表数据一删除,对应的子表数据也一并删除,那么必须配置数据库的级联操作(ON DELETE CASCADE)。如果希望父表记录删除后,保留子表数据,并且把子表数据对应关联字段设置为空,这应该使用ON DELETE SET NULL
总的说来,一个表已经建立成功并且已经有数据后,不建议在该表上增加约束。
以上是关于Oracle中的约束的主要内容,如果未能解决你的问题,请参考以下文章