首页 > 其他 > 详细

十、数据完整性

时间:2021-04-21 16:15:31      阅读:21      评论:0      收藏:0      [点我收藏+]

十、数据完整性

10.1什么是数据完整性

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

比如:年龄,应该是数字

学号:应该是不重复的

成绩:不能为空

 

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

完整性约束分类:

实体(记录)完整性

域完整性

引用完整性

10.2实体完整性(行)

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

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

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

主键约束(primay 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)

)

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id    | int(11)     | NO   | PRI | NULL    |       |

| name  | varchar(50) | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

成功: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唯一约束(uniqe)

不重复,可以为空

##唯一约束(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)

#自增长列(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域完整性(单元格,字段,列)

域完整性:用来限制单元格的数据的正确性

         性别: 只能填写 男/女

         名字:必须填写,非空

域完整性包含:

数据类型

非空约束(not null)

默认值约束(default)

10.3.1数据类型

10.3.2非空约束(not null)

##非空约束(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) values(1,1,90);

 

ERROR 1452 (23000): Cannot add or update a child

row: a foreign key constraint fails (`db_0402`.`score`,

 CONSTRAINT `aa` FOREIGN KEY (`sid`) REFERENCES `stu7` (`id`))

十、数据完整性

原文:https://www.cnblogs.com/1799923076z/p/14683697.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!