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!