实验6 数据完整性控制
数据完整性是指数据的精确性和可靠性,它是为了防止因错误信息的输入输出造成无效操作,或数据库中存在不符合语义规定的数据而提出的,强制数据完整性可保证数据库中的数据质量。数据完整性分为实体完整性、参照完整性和用户定义的完整性。
【实验目的】
①掌握实体完整性的创建和修改。
②掌握参照完整性的创建和修改。
③掌握用户定义的完整性的创建和修改。
④掌握触发器的创建和修改。
【知识要点】
(1)实体完整性
实体完整性是指表中行的完整性,要求每一个表中的主键字段值不能为空,也不能重复。实体完整性通过 PRIMARY KEY 约束、UNIQUE 约束或UNIQUE 索引保证主键的完整性。
(2)参照完整性
参照完整性是相关联的两个表之间的完整性约束。具体地说,就是表A中每条记录外键的值或者为空值,或者必须是在参照表B中的主键已存在的值。通常把表A叫作从表,把表B叫作主表。
定义了外键以后,主表中的数据不能随便删除。在删除主表记录的时候,数据库会检查这个主键值是否被从表参照,如果有参照,则不能删除。可以为主表定义级联删除,即主表中的一条记录被删除后,则从表中凡是外键的值与主表的主键值相同的记录会被同时删除。也可以定义级联修改操作,即修改主表中主键的值,则从表中相应记录的外键值也随之被修改。
(3)用户定义的完整性(https://www.daowen.com)
用户定义的完整性是针对应用环境不同定义的一些特殊约束条件,它反映某一具体应用所涉及的数据必须满足语义要求,如学生的性别应该为“男”或“女”,年龄必须是0~150的整数等。
对于用户定义完整性约束,SQL提供了非空约束、CHECK约束、DEFAULT约束、触发器等来实现用户的各种完整性要求。
(4)数据完整性定义的命令格式
数据完整性可以在创建表时采用CREATE TABLE命令定义,也可以采用ALTER TABLE命令对表增加数据完整性定义。命令的详细格式见实验3的相关知识要点。
(5)创建触发器的命令格式
CREATE
[DEFINER = user]
TRIGGER [IF NOT EXISTS] trigger_name
trigger_time trigger_event
ON tbl_name FOR EACH ROW
[trigger_order]
trigger_body
trigger_time: {BEFORE | AFTER}
trigger_event: {INSERT | UPDATE | DELETE}
trigger_order: {FOLLOWS | PRECEDES} other_trigger_name