为什么要使用数据完整性?
防止垃圾数据的产生
数据完整性的分类
1.实体完整性
.保证一行数据是有效的
2.域完整性
.保证一列数据是有效的
3.引用完整性
.保证引用1编号是有效的
4.用户自定义完整性
.保证自定义规则
实体完整性
1.为什么要保证实体完整性
.保证每行所代表的实体能互相区别
2.什么是实体完整
.表中的一行数据如果与它所代表的实体完全一致,则具备实体完整性。
3.实现方法
主键约束
.主键是表中的一到多个列,主键列不能为空,也不能重复
4.唯一约束
.唯一约束是只给定列的所有值必须唯一,该列在表中每一行的值必须唯一。
它和主键约束区别在于该列可以为空,并且可以再一张表中给多个列设置唯一约束。
域完整性
1.为什么要域完整性
.保证指定列的数据的有效性
2.什么叫域完整性
域完整性是指定列的输入有效性
3.实现方法
非空约束:NOT NULL
默认约束:default
受检查约束(SQL不支持)
引用完整性—外键约束
.为什么要引用完整性约束
—例如:在录入学生成绩时,所使用的学号必须是在学生表中作为主键存在的编号
.什么叫引用完整性
—参照完整性是指分布在两个表中的列所满足的具有主从性质的约束关系
.方法
—外键约束
代码演示
CREATE DATABASE day03_32;
USE day03_32;
CREATE TABKE t_student(
s_id INT PRIMARY KEY, //PRIMARY KEY(添加主键)
s_name VARCHAR(20),
s_age INT,
s_phone BIGINT UNIQUE //UNIQUE(添加唯一性)
PRIMARY KEY (s_id) //单独设置主键
);
INSERT INTO t_student(1,'tang',19,18280435331);
SELECT * FROM t_student;
域完整性
DROP TABLE t_student;
CREATE TABKE t_student(
s_id INT PRIMARY KEY, //PRIMARY KEY(添加主键)
s_name VARCHAR(20) NOT NULL,
s_age INT NOT NULL UNIQUE,
s_phone BIGINT DEFAULT 132, //UNIQUE(添加唯一性)
PRIMARY KEY (s_id) //单独设置主键
);
INSERT t_student(s_id,s_name,s_age,s_phone)VALUES(1,'tang',21,13);
INSERT t_student(s_id,s_name,s_age)VALUES(2,'li',21);
INSERT t_student(s_id,s_name,s_age,s_phone)VALUES(2,'li',21,NULL);
SELECT * FROM t_student;
CREATE TABKE t_student(
s_id INT NOT NULL,
s_name VARCHAR(20) NOT NULL,
s_age INT NOT NULL UNIQUE, //UNIQUE(添加唯一性)
s_phone BIGINT DEFAULT 132,
s_t_id INT,
PRIMARY KEY (s_id) , //单独设置主键
CONSTRAINT teaKey FOREIGN KEY (s_t_id) REFERENCES t_tea(t_id)
);
CREATE TABLE t_tea(
t_id INT PRIMARY KEY,
t_name VARCHAR(20),
t_age INT
);
DROP TABLE t_student;
防止垃圾数据的产生
数据完整性的分类
1.实体完整性
.保证一行数据是有效的
2.域完整性
.保证一列数据是有效的
3.引用完整性
.保证引用1编号是有效的
4.用户自定义完整性
.保证自定义规则
实体完整性
1.为什么要保证实体完整性
.保证每行所代表的实体能互相区别
2.什么是实体完整
.表中的一行数据如果与它所代表的实体完全一致,则具备实体完整性。
3.实现方法
主键约束
.主键是表中的一到多个列,主键列不能为空,也不能重复
4.唯一约束
.唯一约束是只给定列的所有值必须唯一,该列在表中每一行的值必须唯一。
它和主键约束区别在于该列可以为空,并且可以再一张表中给多个列设置唯一约束。
域完整性
1.为什么要域完整性
.保证指定列的数据的有效性
2.什么叫域完整性
域完整性是指定列的输入有效性
3.实现方法
非空约束:NOT NULL
默认约束:default
受检查约束(SQL不支持)
引用完整性—外键约束
.为什么要引用完整性约束
—例如:在录入学生成绩时,所使用的学号必须是在学生表中作为主键存在的编号
.什么叫引用完整性
—参照完整性是指分布在两个表中的列所满足的具有主从性质的约束关系
.方法
—外键约束
代码演示
CREATE DATABASE day03_32;
USE day03_32;
CREATE TABKE t_student(
s_id INT PRIMARY KEY, //PRIMARY KEY(添加主键)
s_name VARCHAR(20),
s_age INT,
s_phone BIGINT UNIQUE //UNIQUE(添加唯一性)
PRIMARY KEY (s_id) //单独设置主键
);
INSERT INTO t_student(1,'tang',19,18280435331);
SELECT * FROM t_student;
域完整性
DROP TABLE t_student;
CREATE TABKE t_student(
s_id INT PRIMARY KEY, //PRIMARY KEY(添加主键)
s_name VARCHAR(20) NOT NULL,
s_age INT NOT NULL UNIQUE,
s_phone BIGINT DEFAULT 132, //UNIQUE(添加唯一性)
PRIMARY KEY (s_id) //单独设置主键
);
INSERT t_student(s_id,s_name,s_age,s_phone)VALUES(1,'tang',21,13);
INSERT t_student(s_id,s_name,s_age)VALUES(2,'li',21);
INSERT t_student(s_id,s_name,s_age,s_phone)VALUES(2,'li',21,NULL);
SELECT * FROM t_student;
CREATE TABKE t_student(
s_id INT NOT NULL,
s_name VARCHAR(20) NOT NULL,
s_age INT NOT NULL UNIQUE, //UNIQUE(添加唯一性)
s_phone BIGINT DEFAULT 132,
s_t_id INT,
PRIMARY KEY (s_id) , //单独设置主键
CONSTRAINT teaKey FOREIGN KEY (s_t_id) REFERENCES t_tea(t_id)
);
CREATE TABLE t_tea(
t_id INT PRIMARY KEY,
t_name VARCHAR(20),
t_age INT
);
DROP TABLE t_student;