一、数据完整性包括:

  1. 域完整性

  2. 实体完整性

  3. 引用完整性

二、保证实体完整性

  1. 主键约束

  2. 唯一约束

  3. 自动增长列

三、保证域完整性

  1. 数据类型约束

  2. 非空约束

  3. 默认值约束

四、保证引用完整性

  1. 外键约束:从表的公共字段是主表的外键

五、保证自定义完整性

六、引用完整性

  1. 主表和从表

    两个表建立关系(两个表只要有公共字段就有关系),一个称为主表,一个称为从表。

  2. 外键约束可以实现:

    a. 主表中没有的,从表中不允许插入

    b. 从表中有的,主表中不允许删除

    c. 不能更改主表中的值而导致从表中的记录孤立存在

    d. 先删从表,再删主表

  3. 外键(foreign key)

    a. 外键:从表中的公共字段,公共字段的名字可以不一样,但数据类型必须一样。

    b. 外键约束用来保证引用完整性。

  4. 添加外键

    a. 创建表时添加外键

      create table t1(

        id int primary key,

        name varchar(10) not null

      );

      create table t2(

        stuNo int primary key,

        marks tinyint unsigned,

        foreign key(stuNo) reference t1(id)

      );

    b. 修改表时创建外键

      alter table t7 add foreign key(stuNo) references t6(id);

    c. 注意:要创建外键必须是innodb引擎,myisam不支持外键

  5. 删除外键

    alter table t1 drop foreign key 外键名;

  6. 外键操作

    a. 严格操作(上面讲的操作)

    b.置空操作(set null):如果主表记录删除或更新,从表置空

    c. 级联操作(cascade):如果主表记录删除或更新,从表级联

    d. 一般来说:主表删除的时候,从表置空操作,主表更新的时候,从表级联操作。

    e. 语法:foreign  key(外键)  references  主表(关键字段)[主表删除时候的动作][主表更新时候的动作]

      foreign key(stuNo) references t1(id) on delete set null on update cascade

05-04 08:05