oracle之完整性约束

oracle之完整性约束

 数据库中的完整性约束有:

  1.主键约束(Primary)
  2.唯一约束(unique)
  3.检查约束(check)
  4.非空约束(not null)   --属于检查约束
  5.外键约束(foreign key)

首先先建一个学生表:

create table t_student_con(
    f_id int,
    f_name varchar2(30),
    f_sex char(2),
    f_age int,
    f_birth date default sysdate
);
--添加一个字段
alter table t_student_con
add f_email varchar2(30);

 1、主键约束:添加了主键约束的字段不能为null,且会自动添加唯一约束。

--添加一个主键约束
alter table t_student_con
add constraint pk_std_id primary key (f_id);

 2、唯一约束:添加了唯一约束的字段的值是唯一的,不能有重复。

--添加一个唯一约束
alter table t_student_con 
add constraint uq_std_name unique(f_name);

3、检查约束:可以自定义数据的完整性,保证字段的数据不存在约束条件之外的数据。

--添加检查约束
alter table t_student_con 
add constraint ck_std_sex check(f_sex='M' or f_sex='F')

4、非空约束:有非空约束的字段,值不能为空或者插入null值。

--非空约束是检查约束的一种,这种添加方法不是很常用
alter table t_student_con
add constraint nnull_std_email check( f_email is not null);
--我们一般会以修改表字段的方法来添加非空约束
alter table t_student_con modify(f_email varchar2(30) not null);

5、外键约束:若表之间存在联系,则建立外键约束可保证数据的完整性和规范性。

首先建立一个考试信息表:

create table t_student_exam(
       e_id int,--主键
       e_subject varchar2(30),--科目
       e_score number(5,2),--分数
       f_id int--学员信息的外键
);

下面为该表添加主键和外键:

--添加主键
alter table t_student_exam add constraint pk_exam_id primary key(e_id);
--添加外键
alter table t_student_exam add constraint fk_exam_student_id foreign key (f_id)
references t_student_con(f_id)
on delete cascade; --在删除学生信息的时候,级联删除从表的成绩信息

注意:添加了外键约束的表,若主表有对应的从表记录,需在添加外键约束时加上 on delete cascade 关键字,才可直接删除,此关键字表示级联删除。否则不能直接删除。

6、约束的删除
  语法:alter table t_student_exam drop constraint 约束名;

--删除约束
alter table t_student_exam drop constraint fk_exam_student_id;

  注意!我们可以用以上方法建立表的完整性约束,同时,我们也可以在建表时就建立约束。如下

create or replace table t_student_con(
    f_id int primary key,
    f_name varchar2(30),
    f_sex char(2) check(f_sex='M' OR f_sex='F'),--1、检查性约束
    f_age int,
    f_birth date default sysdate,
    constraint ck_std_age check(f_age>=1 and f_age<=60)--2、检查性约束
);
create table t_student_exam(
       e_id int,--主键
       e_subject varchar2(30),--科目
       e_score number(5,2),--分数
       f_id int REFERENCES T_STUDENT_CON(F_ID) ON DELETE CASCADE--学员信息的外键约束
);

 

posted on 2015-10-06 14:57  阡陌丶  阅读(1476)  评论(0编辑  收藏  举报

导航