MySQL 笔记4 – 数据完整性
MySQL 系列笔记是笔者学习、实践MySQL数据库的笔记
参考文档:
MySQL 官方文档
一、数据完整性
作用: 保证用户输入的数据保存到数据库中是正确的
设置数据完整性: 在创建表时给表中添加约束
数据完整性分类:
- 实体完整性
- 域完整性
- 引用/参照完整性
二、实体完整性
1、实体完整性
实体: 表中的一行(一条记录)代表一个实体(entity)
作用: 标识每一行数据不重复,行级约束
2、主键约束(primary key)
特点:
- 每个表中要有一个主键
- 数据唯一,且不能为null
格式:
格式 | 说明 |
CREATE TABLE 表名(字段1 数据类型 primary key,字段2 数据类型); | 单主键,字段1为主键 |
CREATE TABLE 表名(字段1 数据类型, 字段2 数据类型,primary key(要设置主键的字段)); | 单主键 |
CREATE TABLE 表名(字段1 数据类型, 字段2 数据类型,primary key(主键1,主键2)); | 联合主键,不能都一样 |
3、唯一约束(unique)
特点:
- 指定列的数据不能重复
- 可以为null
格式:
格式 | 说明 |
CREATE TABLE 表名(字段名1 数据类型,字段2 数据类型 UNIQUE); | 字段2有唯一约束 |
4、 自动增长列
特点:
- 指定列的数据自动增长
- 数据删除,序号不会删除,还是从删除的序号继续往下
格式:
格式 | 说明 |
CREATE TABLE 表名(字段名1 数据类型 PRIMARY KEY AUTO_INCREMENT ,字段2 数据类型 UNIQUE); | 字段1 自动增长 |
三、域完整性
1、域完整性
- 域代表当前单元格
- 限制此单元格的数据正确,不对照此列的其它单元格比较
2、域完整性约束
数据类型约束 : 数值类型、日期类型、字符串类型
非空约束(not null):
格式 | 说明 |
CREATE TABLE 表名(字段1 数据类型 PRIMARY KEY AUTO_INCREMENT ,字段2 数据类型 UNIQUE not null); | 字段2不能为null |
默认值约束(default) :
格式 | 说明 |
CREATE TABLE 表名(字段1 数据类型 PRIMARY KEY AUTO_INCREMENT ,字段2 数据类型 UNIQUE not null default ‘x’); | 字段2默认值为’x’ |
四、参照完整性
1、参照完整性
- 是指表与表之间的一种对应关系
- 通常情况下可以通过设置两表之间的主键、外键关系,或者编写两表的触发器来实现
- 有对应参照完整性的两张表格,在对他们进行数据插入、更新、删除的过程中,系统都会将被修改表格与另一张对应表格进行对照,从而阻止一些不正确的数据的操作
2、主键和外键
- 数据库的主键和外键类型一定要一致
- 两个表必须得要是InnoDB类型
- 设置参照完整性后 ,外键当中的内值,必须得是主键当中的内容
- 一个表设置当中的字段设置为主键,设置主键的为主表
- 主键:PRIMARY KEY,外键:REFERENCES
格式
格式 | 说明 |
CREATE TABLE student(sid int PRIMARY KEY,name varchar(50) not null,sex varchar(10) default ‘男’); | 设置主键 |
CREATE TABLE score(sid INT,score DOUBLE,CONSTRAINT fk_stu_score_sid FOREIGN KEY(sid) REFERENCES student(sid)); | 设置外键 |
GOOD LUCK!