一、数据完整性包括:

  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. 我的代码-models

    # coding: utf-8 # In[1]: import pandas as pdimport numpy as npfrom sklearn import treefrom sklearn.s ...

  2. java post json sample

    import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; public class Te ...

  3. 缓存与数据库一致性之三:缓存穿透、缓存雪崩、key重建方案

    一.缓存穿透预防及优化 缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,但是出于容错的考虑,如果从存储层查不到数据则不写入缓存层,如图 11-3 所示整个过程分为如下 3 步: 缓存层 ...

  4. 自己动手,丰衣足食!Python3网络爬虫实战案例

    本教程是崔大大的爬虫实战教程的笔记:网易云课堂 Python3+Pip环境配置 Windows下安装Python: http://www.cnblogs.com/0bug/p/8228378.html ...

  5. sequelize的get/post方法例子

    定义两个model,一个给get的,一个给post的 var Sequelize = require('sequelize'); const DeviceNos = sequelize.define( ...

  6. Flask--(项目准备)--添加日志

    日志:记录程序运行的状态,在manage.py同级目录下创建logs文件夹 定义日志文件: import logging from logging.handlers import RotatingFi ...

  7. gradle重复依赖终极方案解决办法

    buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build: ...

  8. 搭建zookeeper伪分布式集群

    伪分布式集群的意思就是在同一台机子上部署多个zookeeoer,但是他们的端口不一样. 1.安装zookeeper 到/usr/local 2.cd /usr/local/zookeeper 3.cd ...

  9. SQL Server 2012无法连接到WMI提供程序

    这篇文章主要介绍了SQL Server 2012无法连接到WMI提供程序(Cannot connect to WMI provider)解决方案,需要的朋友可以参考下 今天一位同事在启动自己工作机的S ...

  10. Android 开发 框架系列 glide-transformations 图片处理基本使用

    首先简单的介绍一下Gilde作用范围.Gilde功能十分强大,它可以实现图片处理.图片本地加载.图片网络加载.位图加载.图片内存缓存.图片磁盘缓存.Gif图片加载.使用简单轻松,轻松的后是它强大的心, ...