数据完整性

10.1什么是数据完整性 

作用:保证 用户的输入的数据 保存到数据库 是正确的。

比如:

年龄:应该是数字,

 学号:应该是不重复的。

 成绩:不能为空

 。。。

怎么去保证数据的完整性:添加约束。 

完整性约束分类:

 实体(记录)完整性

 域完整性

引用完整性

 

 

 

10.2实体完整性(行)

实体(entity):就是表中一行的(记录)数据

实体完整性:标识 每一条数据不重复

约束类型(通过什么方式解决这个问题):

主键约束(primary key

不能为空,不重复

唯一约束(unique

不重复,可以为空

自增长列(auto_increment

序号自己会改变

10.2.1 主键约束(primary key

特点:不能为空,不重复

 

没有约束

create table stu0(

id int,

 name varchar(50)

 ) ;

insert into stu0(name) value("张三丰");

##方式一:创建表,并且添加主键约束

 create table stu1(

 id int primary key,

name varchar(50)

 )

 ##方式二:

 create table stu2(

 id int ,

name varchar(50),

 primary key(id,name)

 ) ;

成功:insert into stu1(id,name) value(2,"张三丰"); #成功

 测试一:insert into stu1(id,name) value(null,"张三丰"); #失败。提示不能为空

 ERROR 1048 (23000): Column 'id' cannot be null

测试二:

插入重复值:报错

 Duplicate entry '2' for key 'PRIMARY'

 select *from stu1;

 

 

10.2.2 唯一约束(unique

不重复,可以为空

##给名字 添加 唯一的 约束

 create table stu3(

 id int primary key,

name varchar(50) unique

) ;

insert into stu3(id,name) value(1,"张三丰");

 

insert into stu3(id,name) value(2,"张三丰");

 

 ERROR 1062 (23000): Duplicate entry '张三丰' for key 'name'

 

insert into stu3(id,name) value(2,"张三");

 

 

10.2.3自增长列(auto_increment

##实现,用户的学号,自动增长,

 create table stu4

id int primary key auto_increment,

name varchar(50)

 )

 

##插入数据

 insert into stu4(name) values("zsf");

insert into stu4(name) values("ls");

10.3

10.3.1数据类型(自己查)

 

 

10.3.2 非空约束(not null

##创建表,名字name字段非空

create table stu5(

 id int primary key,

name varchar(50) not null,

sex varchar(10)

 )

 

##成功

 insert into stu5(id,name,sex) values(1,"zsf","");

 

 insert into stu5(id,name,sex) values(2,null,"");

ERROR 1048 (23000): Column 'name' cannot be null insert into stu5(id,name,sex) values(2,"zz",null);

 

10.3.3 默认值约束(default

值没给,就使用默认值

create table stu6(

 id int primary key,

name varchar(50) not null,

 sex varchar(10)Default ""

 );

查看表结构

desc stu6;

 insert into stu6(id,name,sex) values(1,"zsf","");

 

insert into stu6(id,name) values(2,"zsf"); 

 

查询结构: select * from stu6;

 

10.4 引用完整性

主外键的关系,2个表之间建立管理关系之后,他们删除、更新操作都是受影响的

引用完整性

学生表

Id

名字

性别

 

成绩表

id

学生ID

成绩

 

 create table stu7(

    id int primary key,

    name varchar(50)

    );

 

create table score(

 id int primary key,

sid int,

score double,

constraint aa foreign key (sid) references stu7(id)

);

 

insert into stu7(id,name) values(1,"zsf");

 

insert into score(id,sid,score) value(1,1,90);

posted @ 2021-04-28 09:21  四五  阅读(355)  评论(0)    收藏  举报