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--学员信息的外键约束 );
时间: 2024-10-05 23:48:18