数据库中添加表的约束(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);