这里是MySQL的基础内容,我将他们的链接放到下面,方便大家阅读

一、数据完整性

首先我们可以通过三个方面整体感知一下MySQL的数据完整性。

1.1 什么是数据完整性?

保证用户输入的数据保存到数据库中是正确的。

1.2 如何添加数据完整性?

在创建表时给表中添加约束

1.3 完整性分类

  • 实体完整性
  • 域完整性
  • 引用完整性

二、实体完整性

2.1 什么是实体?

想要了解实体完整性,就首先需要知道什么是实体。表中的一行(一条记录)就代表了一个实体。

2.2 实体完整性的作用

实体完整性用来标识每一行数据,使得数据不重复,是一种行级约束。

2.3 约束分类

(1)主键约束

特点:

  1. 每个表中要有一个主键
  2. 数据唯一,且不能为null

添加方式:

  1. CREATE TABLE 表名(字段1 数据类型 primary key,字段2 数据类型);
  2. CREATE TABLE 表名(字段1 数据类型, 字段2 数据类型 , primary key(要设置主键的字段));
  3. CREATE TABLE 表名(字段1 数据类型,字段2 数据类型, primary key(主键1,主键2));

第三种方式也叫做联合主键,当两个或多个字段数据同时相同时,才违反联合主键约束。

而除了以上几种在创建表的时候就进行主键约束的方法除外,还可以在创建完表之后再添加主键。例如;

ALTER TABLE student 
ADD CONSTRAINT PRIMARY KEY(id);
(2)唯一约束

特点:

  1. 指定列不能重复
  2. 可以为空值

添加方式:

CREATE TABLE 表名(
	字段1 数据类型, 
	字段2 数据类型 UNIQUE
);
(3)自动增长列

特点:

  1. 指定列的数据自动增长
  2. 即使数据删除,还是从删除的序号继续往下

添加方式:

CREATE TABLE 表名(
	字段1 数据类型 PRIMARY KEY AUTO_INCREMANT,
	字段2 数据类型
);

三、域完整性

3.1 使用方法

域代表了当前的单元格,域完整性限制了单元格的数据正确,不对照此列的其他单元格比较。

3.2 域完整性约束

存储在单元格中的数据一共有三种数据类型:数值类型、日期类型、字符串类型

我们可以将域完整性分为两类:

  1. 非空约束
  2. 默认值约束
CREATE TABLE 表名(
	字段1 数据类型 PRIMARY KEY AUTO_INCREMANT,
	字段2 数据类型 UNIQUE NOT NULL,
	字段3 数据类型 DEFAULT '默认值'
);

四、参照完整性

4.1 什么是参照完整性?

参照完整性时表域表之间的一种对应关系,通常情况下通过设置两表之间的主键、外键关系,或者编写两表的触发器来实现。

有对应参照完整性的两张表,在对他们进行数据插入、更新、删除操作的过程中,系统都会将被修改表格与另一张对用表格进行对照,从而组织一些不正确的数据的操作。

4.2 参照完整性的前提条件

  1. 两个表的搜索引擎必须都是InnoDB类型的。
  2. 数据库的主键和外键一定要一致。
  3. 设置参照完整性后,外键当中的值,必须得是主键当中的内容。

4.3 参照完整性的添加

方法一:
//创建学生基本信息表
CREATE TABLE stu(id int PRIMARY KEY,name varchar(50),age int);
//创建学生成绩表
CREATE TABLE score(
	sid int, score int,
	CONSTRAINT sc_stu_fk FOREIGN KEY(sid) REFERENCES stu(id)
);

输入数据

MySQL的完整性约束有哪些 mysql数据的完整性_数据类型

当我们设置完成参照完整性之后,stu表是主表,id是主键;score是子表,sid是外键。外键中的值必须是1、2、3,否则会报错,因为在主表中主键只有这三个值,外键的值一旦没有在主键中出现就会报错。

方法二:

创建一个查询

ALTER TABLE score
ADD CONSTRAINT sc_stu_fk FOREIGN KEY(sid) REFERENCES stu(id);

这种方法是在创建完表之后对表进行修改,而之前的方法是在创建表的时候直接创建约束。