数据库中添加表的约束(Including Constraints)

为了实现数据库中数据的完整性防止非法的数据被插入,造成数据完整性的破坏,管理员和开发人员就必须定义表的完整性规则。

首先介绍约束种类:

ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CHECK (检查)--检查在约束中指定的条件是否得到了满足. UNIQUE (唯一)--保证在指定的列中没有重复值.在该表中每一个值或者每一组值都将是唯一的. PRIMARY KEY (主键)--用来唯一的标识出表的每一行,并且防止出现NULL值,一个表只能有一个主键约束. POREIGN KEY (外部键)--通过使用公共列在表之间建立一种父子(parent-child)关系,在表上定义的外部键可以指向主键或者其他表的唯一键.

那么如何添加各种约束呢,最快的方法就是在创建表的时候就定义了约束,

例子如下:

create table key_test(

id number(10) primary key,//定义主键约束

name varchar2(10) NOT null,//定义非空约束

wife_id number(10) unipue,//定义了唯一性约束

c_id number(5) foreign key references class(id),//定义外键约束,假设表class存在,将class表中的id作为本表中的外键约束

gender varchar2(4),

constraint check_key_name check (gender in (男,女)//定义表的check约束

);

下面在students表中添加约束。

1、创建表

CREATE TABLE students

(student_id VARCHAR2(10) NOT NULL,

student_name VARCHAR2(30) NOT NULL,

college_major VARCHAR2(15) NOT NULL,

status VARCHAR2(20) NOT NULL,

state VARCHAR2(2),

license_no VARCHAR2(30)) TABLESPACE student_data;

2、创建主键

ALTER TABLE students

ADD CONSTRAINT pk_students PRIMARY KEY (student_id)

USING INDEX TABLESPACE student_index;

3、创建Unique约束

ALTER TABLE students

ADD CONSTRAINT uk_students_license

UNIQUE (state, license_no)

USING INDEX TABLESPACE student_index;

4、创建Check约束

ALTER TABLE students

ADD CONSTRAINT ck_students_st_lic

CHECK ((state IS NULL AND license_no IS NULL) OR

(state IS NOT NULL AND license_no is NOT NULL));

5、创建外键约束

ALTER TABLE students

ADD CONSTRAINT fk_students_state

FOREIGN KEY (state) REFERENCES state_lookup (state);

经验分享 程序员 微信小程序 职场和发展