这里是MySQL的基础内容,我将他们的链接放到下面,方便大家阅读
一、数据完整性
首先我们可以通过三个方面整体感知一下MySQL的数据完整性。
1.1 什么是数据完整性?
保证用户输入的数据保存到数据库中是正确的。
1.2 如何添加数据完整性?
在创建表时给表中添加约束
1.3 完整性分类
- 实体完整性
- 域完整性
- 引用完整性
二、实体完整性
2.1 什么是实体?
想要了解实体完整性,就首先需要知道什么是实体。表中的一行(一条记录)就代表了一个实体。
2.2 实体完整性的作用
实体完整性用来标识每一行数据,使得数据不重复,是一种行级约束。
2.3 约束分类
(1)主键约束
特点:
- 每个表中要有一个主键
- 数据唯一,且不能为null
添加方式:
- CREATE TABLE 表名(字段1 数据类型 primary key,字段2 数据类型);
- CREATE TABLE 表名(字段1 数据类型, 字段2 数据类型 , primary key(要设置主键的字段));
- CREATE TABLE 表名(字段1 数据类型,字段2 数据类型, primary key(主键1,主键2));
第三种方式也叫做联合主键,当两个或多个字段数据同时相同时,才违反联合主键约束。
而除了以上几种在创建表的时候就进行主键约束的方法除外,还可以在创建完表之后再添加主键。例如;
ALTER TABLE student
ADD CONSTRAINT PRIMARY KEY(id);
(2)唯一约束
特点:
- 指定列不能重复
- 可以为空值
添加方式:
CREATE TABLE 表名(
字段1 数据类型,
字段2 数据类型 UNIQUE
);
(3)自动增长列
特点:
- 指定列的数据自动增长
- 即使数据删除,还是从删除的序号继续往下
添加方式:
CREATE TABLE 表名(
字段1 数据类型 PRIMARY KEY AUTO_INCREMANT,
字段2 数据类型
);
三、域完整性
3.1 使用方法
域代表了当前的单元格,域完整性限制了单元格的数据正确,不对照此列的其他单元格比较。
3.2 域完整性约束
存储在单元格中的数据一共有三种数据类型:数值类型、日期类型、字符串类型
我们可以将域完整性分为两类:
- 非空约束
- 默认值约束
CREATE TABLE 表名(
字段1 数据类型 PRIMARY KEY AUTO_INCREMANT,
字段2 数据类型 UNIQUE NOT NULL,
字段3 数据类型 DEFAULT '默认值'
);
四、参照完整性
4.1 什么是参照完整性?
参照完整性时表域表之间的一种对应关系,通常情况下通过设置两表之间的主键、外键关系,或者编写两表的触发器来实现。
有对应参照完整性的两张表,在对他们进行数据插入、更新、删除操作的过程中,系统都会将被修改表格与另一张对用表格进行对照,从而组织一些不正确的数据的操作。
4.2 参照完整性的前提条件
- 两个表的搜索引擎必须都是InnoDB类型的。
- 数据库的主键和外键一定要一致。
- 设置参照完整性后,外键当中的值,必须得是主键当中的内容。
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)
);
输入数据
当我们设置完成参照完整性之后,stu表是主表,id是主键;score是子表,sid是外键。外键中的值必须是1、2、3,否则会报错,因为在主表中主键只有这三个值,外键的值一旦没有在主键中出现就会报错。
方法二:
创建一个查询
ALTER TABLE score
ADD CONSTRAINT sc_stu_fk FOREIGN KEY(sid) REFERENCES stu(id);
这种方法是在创建完表之后对表进行修改,而之前的方法是在创建表的时候直接创建约束。