zoukankan      html  css  js  c++  java
  • mysql学习笔记--数据完整性

    一、数据完整性包括:

      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

  • 相关阅读:
    《Scrum实战》第4次课【全职的Scrum Master】作业汇总
    回顾Scrum学习:《Scrum实战》第4次课【全职的Scrum Master】作业
    孙式无极桩站桩要领--林泰年
    [Android Tips] 29. 如何判断当前编译的是哪个 Flavor ?
    [Jenkins] 解决 Gradle 编译包含 SVG Drawable 出现异常
    [Android Tips] 28. 如何指定运行特定的 Android Instrumentation Test
    [Gradle] 给已存在的 task 添加依赖
    [Gradle] 针对不同的项目类型应用不同的 findbugs 配置
    [Android Tips] 27. 检查 APK 是否可调试
    [Gradle] 如何强制 Gradle 重新下载项目的依赖库
  • 原文地址:https://www.cnblogs.com/DjanFey/p/10674555.html
Copyright © 2011-2022 走看看