什么是数据完整性:
数据的完整性是指数据的精确性和可靠性,它的目的是为了防止数据库中存在不符合予以规定的数据或者因错误信息的输入而造成无效的操作。
数据完整性的分类:
1. 实体完整性:每一行记录在表中是唯一的
——主键约束Primary Key——主键是表中一列或者多列数据,用来唯一标识一行数据 。例如:学号、身份证
——唯一约束Unique——可以用来确保在非主键列中不存在重值,列值可以使NULL
2. 域完整性:限制向表中输入的数值的范围
——外键约束Foreign——一个表中的外键指向另一个表中的主键
——默认约束Default——向列中插入默认值
——非空约束Not Null ——强制该列不允许为Null值
3. 引用完整性:保证主关键字和外部关键字之间的参照关系,涉及到两个或者两个以上表中数据的一致性维护
——通过外键约束Foreign key实现
4.自定义完整性:根据项目实际情况设置的数据完整性要求
实现数据完整性细节问题:
1. 主键约束:主键又称为主码,是表中一列或多列的组合,主键约束要求主键列的数据唯一,并且不允许为空。主键能够唯一的标识表中的一条记录
主键分类:——单字段主键——create table student (idCard int primary key):
 ——多字段主键/联合主键——create table student (idCard int,studentNum int, sex char,primary key (idCard,studentNum);
 ——create table student(studentNum int auto_increment primary key);
2. 设置字段自动增长:(小技巧)一个表中只能有一个字段使用auto_increment 
 anto_increment只有主键能用
 设置auto_increment的字段数据类型必须为整数
3. 使用外键约束:——在多张表之间建立关系,确保多个表之间数据的一致性、完整性。一个表中可以有任意多个外键,外键值等于另一张表的主键
——创建年级表——create table grade (id auto_increment primary key);
——创建班级信息表——create table classinfo(id int auto_increment primary key,
 GradeID int,
 foreign key (GradeID) references Grade(ID)
 ---从表外键字段 ---主表主键字段);
注意:主表字段必须设置唯一约束,否则无法设置外键
4.使用非空约束:指定字段的值不能为空——create table student(name varchar(3) not null;
5.使用默认约束:指定某字段的默认值——create table student(sex char(1) default '男';
 注意:不能用于auto_increment、timestamp列
6.使用唯一约束:该列的值唯一,不出现重复值,包括null值——create table student(studentNum varchar(11) unique;