数据库完整性
数据库完整性
作用:保证用户输入的数据保存到数据库中的是正确的;确保数据的完整性其实就是在创建表时给表中添加约束
完整性的分类:
1、实体完整性: 实体:数据库中的一行记录。
实体完整性的作用:保证每行数据不重复。
约束类型:主键约束(primary key),唯一约束(unique),自动增长约束(auto_increment)
1.1、主键约束:
方式一:create table stu(id int primary key,name varchar(200));
方式二:create table stu(id int,name varchar(100),primary key(id));
方式三:create table stu(id int,name varchar(100)); alter table stu add primary key(id);
额外拓展:联合主键(多个主键) create table stu(id int,name varchar(100),primary key(id,name));
1.2、唯一约束,数据不重复:
create table stu(id int,name varchar(100) unique);
1.3、自动增长约束:
create table stu(id int primary key auto_increment,name varchar(100) unique);
2、域完整性: 域:代表当前单元格;
域完整性:当前单元格数据正确,不对比其它单元格。
约束完整性:not null(值不能为空)|| default(默认值);
check(mysql不支持) check(sex='男' or sex=‘女')
2.1、非空约束:
create table stu(id int primary key auto_increment,name varchar(100) not null); insert into stu (name) values (null);
2.2、默认约束:
create table stu(id int primary key auto_increment,name varchar(100) default ‘aa’); insert into stu (name) values (default);
3、引用完整性(参照完整性):外键约束
主键与外键对比来看:
3.1、定义: 主键:唯一标识一条记录,不能重复,不能为空 外键:是另一个表的键,外键可以重复,可以是空值;
作用: 主键:用来保证数据完整性 外键:用来和其他表建立关系用的;
个数: 主键:只有一个----外键:可以有多个;
创建外键:
方式一: create table stu(id int primary key,name varchar(100) default 'aa'); create table score(sid int,score int);
alter table score add constraint fk_score foreign key (sid) references stu (id);
方式二: create table course ( courseId int primary key , courseName varchar(100), scoreId int, constraint foreign key (scoreId) references score(sid) );