一、数据完整性包括:

  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

mysql学习笔记--数据完整性的更多相关文章

  1. MySQL学习笔记一

    MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...

  2. 一千行MySQL学习笔记 (转)

    出处:  一千行MySQL学习笔记 /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权 ...

  3. mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记

    mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...

  4. Mysql学习笔记(三)对表数据的增删改查。

    正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...

  5. Mysql学习笔记(二)数据类型 补充

    原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...

  6. Mysql学习笔记(一)数据类型

    原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型     Mysql数据类型             含义(有符号)     tinyint(m ...

  7. 初识mysql学习笔记

    使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...

  8. MySQL学习笔记-锁相关话题

    在事务相关话题中,已经提到事务隔离性依靠锁机制实现的.在本篇中围绕着InnoDB与MyISAM锁机制的不同展开,进而描述锁的实现方式,多种锁的概念,以及死锁产生的原因.   Mysql常用存储引擎的锁 ...

  9. MySQL学习笔记-事务相关话题

    事务机制 事务(Transaction)是数据库区别于文件系统的重要特性之一.事务会把数据库从一种一致状态转换为另一个种一致状态.在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都 ...

随机推荐

  1. python------面向对象进阶反射详解(重点)

    一.反射 通过字符串映射或者修改程序运行时的状态,属性,或者方法. 1.getattr(object,name,default=None) 2.hasattr(object,name) 3.setat ...

  2. Day 12 开放封闭原则,装饰器初识

    nonlocal关键字 # 作用:将 L 与 E(E中的名字需要提前定义) 的名字统一​# 应用场景:如果想在被嵌套的函数中修改外部函数变量(名字)的值​# 案例:​def outer():    n ...

  3. InnoDB存储引擎文件

    InnoDB存储引擎文件 MySQL数据库包括数据库本身的文件和存储引擎文件.数据库自身的文件由参数文件(my.cnf).错误日志文件.慢查询日志文件.查询日志文件.二进制日志文件.套接字文件.pid ...

  4. C语言小程序:除去字符串中间不需要的字符(从小引发大思考)

    #include <stdio.h>#include <conio.h> void fun(char *a, char *h, char *p){ char b[81]; ch ...

  5. Xamarin+Prism开发详解七:Plugin开发与打包测试

    有了上章[Xamarin+Prism开发详解六:DependencyService与IPlatformInitializer的关系]的基础,现在来理解Plugin开发就简单了. 本文实例代码地址:ht ...

  6. makefile或shell中的一些变量

    总是记不住,作个笔记 $@ 所有目标文件 $< 第一个依赖文件的名称 $? 所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚 $^ 所有的依赖文件,以空格分开,不包含重复的依 ...

  7. Web jsp开发学习——网上直播聊天室的简单开发

    整个界面为chat.jsp: 如果用户没有登录,就不能进行聊天. 为将发言的句子传到页面上,要设置一个<iframe></iframe>虚拟框架,将allmessage.jsp ...

  8. [UE4]Circular Throbber,圆形的、环形的动态图标

    一.就是圆形的,转动的很多小圆点. 二.Circular Throbber.Appearance.Number Of Pieces:可以通知显示的小圆点个数. 三.Circular Throbber. ...

  9. redis学习链接收藏

    1.redis命令大全--官网 2.redis命令大全--中文翻译版 3.源码(注释版):redis3.0 4.程序代码:<redis入门指南(第二版)>第五章 5.最新的redis-st ...

  10. Gitlab CI 持续集成的完整实践

    Gitlab CI 持续集成的完整实践 本着公司团队初创,又在空档期想搞点事情,搭建了私有Gitlab的契机,顺便把持续集成搭建起,实现了对Python服务端代码的单元测试.静态代码分析和接口测试的持 ...