数据完整性介绍
- 数据完整性:保证用户输入的数据保存到数据库中是正确的。
- 如何添加数据完整性:在创建表时在表中添加约束
- 完整性分类:实体完整性、域完整性、引用完整性
实体完整性
- 实体(entity):表中每一行的记录都代表一个实体。
- 实体完整性的作用:不重复的表示每一行数据。行极约束
- 约束类型:主键约束、唯一约束、自动增长列
主键与联合主键约束
- 特点:每个表中要有一个主键,数据唯一且不为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);
-- 实例 第二种
CREATE TABLE person(ID BIGINT PRIMARY KEY,name VARCHAR(50),age INT,PRIMARY KEY(ID));
-- 实例 第三种
CREATE TABLE student(ID BIGINT, s_num BIGINT,name VARCHAR(50),PRIMARY KEY(ID,s_num));
唯一约束
- 特点:指定列的数据不能重复,但可以为null
- 格式:
CREATE TABLE 表名(字段名1 数据类型 字段名2 数据类型 UNIQUE);
CREATE TABLE student(id INT PRIMARY KEY,name VARCHAR(50) UNIQUE);
自动增长列
- 特点:指定列的数据自动增长,即使数据删除,还是从删除的序号继续往下。
- 格式:
CREATE TABLE 表名(字段名1 数据类型 PRIMARY KEY AUTO_INCREMENT 字段名2 数据类型 UNIQUE);
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) UNIQUE
);
域完整性
- 作用:限制此单元格的数据正确,不对照此列的其他单元格比较。
- 域:当前单元格。
域完整性约束
- 数据类型约束:数值类型、日期类型、字符串类型
- 非空约束:为空即报错,无法保存
CREATE TABLE 表名(字段名1 数据类型 PRIMARY KEY AUTO_INCREMENT,字段名2 数据类型 UNIQUE NOT NULL;
- 默认值约束:
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) UNIQUE NOT NULL,
gender CHAR(1) DEFAULT '男'
);
参照完整性
简介
参照完整性
- 表与表中之间的一种对应关系;
- 通常情况下可以通过设置两表之间的主键、外键关系,或者编写两表的触发器来实现;
- 有对应参照完整性的两张表格,在对他们进行数据插入、更新、删除的过程中,系统都会将被修改的表格域另一张对应表格进行对照,从而阻止一些不正确数据的操作。
- 数据库的主键和外键类型要一致
- 两个表必须是InnoDB类型
- 设置参照完整性后,外键当中的内值必须是主键中的内容
- 一个表设置当中的字段设置为主键,设置主键的为主表
- 创建表时,设置外键,设置外键的为子表
添加
CREATE TABLE student(id INT PRIMARY KEY,name VARCHAR(50),age INT);
CREATE TABLE score(sid INT,score INT,
CONSTRAINT sc_st_fk FOREIGN KEY(sid) REFERENCES student(id) # 设置约束
);