4.数据库完整性
数据库完整性包括三个方面的约束规则,分别是实体完整性、参照完整性和自定义完整性约束规则。
(1)实体完整性
实体完整性是指关系的主属性,即表的主键不能为NULL,也不能取重复值。
INSERT INTO students(name, specialty)
VALUES ('王一','计算机');
第1行出现错误:ORA-01400,无法将NULL插入("SYSTEM"."STUDENTS"."STUDENT_ID")。
UPDATE students SET student_id = NULL --在修改数据时主键取NULL值
WHERE students_id = 10205;
INSERT INTO students
VALUES (10205,NULL,'张三','男','26-12月-1989,'自动化'); --在插入时主键取重复值。
UPDATE students
SET student_id = 10207
WHERE student_ID = 10205; --在修改数据时主键取重复值。
(2)参照完整性
teacher表通过department_id列与departments表建立了参照完整性约束关系,这样teachers表被
称为从表,departments表称为主表。依照参照完整性约束规则,teacher表中的department_id列
取值只允许两种可能,一是空值,二是等于departments表中某个记录行的主键值;如果取其他值,
即违反参照完整性约束规则。
DELETE FROM departments WHERE department_id = 101;
UPDATE departments SET department_id = 105
WHERE department_id = 102;
INSERT INTO teachers
VALUES (10805,'李四','教授','01-9月-1990',1000,3000,108);
UPDATE teachers SET department_id = 107
WHERE teacher_id = 10106;
(3)自定义完整性
自定义完整性规则是针对某一应用环境的完整性约束条件,这类完整性规则一般在建立库表的同时进行定义,
应用编程人员不需再作考虑。如果某些约束条件没有建立在库表一级, 则编程人员应在各模块的
具体编程中通过程序进行检查和控制。
INSERT INTO students(student_id,dob,sex,specialty)
VALUES(10178,'20-12月-1989','男','计算机');
--ORA-01400:无法将NULL插入(“SYSTEM”."STUDENTS"."NAME")
UPDATE students SET sex = '南'
WHERE student_id = 10205; --本例违反了CHECK自定义完整性约束(只能取男或女)