数据完整性(一)

目录

数据完整性:

        什么是数据完整性:

数据完整性的类型

        1:实体完整性

        2:域完整性:

        3、引用完整性:

        4、自定义完整性:

完整性约束:

               数据完整性的实现方式:

                                实体完整性:

                                                        主键约束、唯一值约束

                                域完整性:

                                                        检查约束、默认值约束

                                引用完整性:

                                                        外键约束

                                用户自定义约束:

                                                        以上约束的自由组合

什么是约束:

约束的分类:

MySQL常用约束:

完整性约束

                怎样添加或修改约束?

非空约束:

唯一约束:

复合唯一约束


数据完整性:

        什么是数据完整性:

                数据完整性是指存储在数据库中的数据要能正确反映实际情况,规定输入的数据不能是无效值,错误值或者乱码等。

数据完整性的类型

        1:实体完整性

                                        标识符或者主键的完整性,使其值唯一。

        2:域完整性:

                                        限制类型、格式和取值范围等。

        3、引用完整性:

                                        保持原表和引用表数据的一致性。

        4、自定义完整性:

                                        用户自定义的业务规则

完整性约束:

               数据完整性的实现方式:

                                实体完整性:

                                                        主键约束、唯一值约束

                                域完整性:

                                                        检查约束、默认值约束

                                引用完整性:

                                                        外键约束

                                用户自定义约束:

                                                        以上约束的自由组合

什么是约束:

                                数据完整性约束也就是创建表时(create table)的约束条件,是用来限制属性或者表中数据的,也可以通过修改语句(alter table)修改约束条件。

约束的分类:

                约束又分为行级约束和表级约束,行级约束和表级约束本质上是一样的,只是约束的效力和范围不同

                非空约束、默认值约束、主键约束一般为行级约束;

                外键约束(联合主键)是表级约束;

                检查约束(check)既可以是行级约束也可以是表级约束;

MySQL常用约束:

        各种约束及其描述如下所示:

完整性约束

        MYSQL添加或修改约束的方式

                怎样添加或修改约束?

                        1:创建表时添加约束

                        2:修改表时添加或修改约束

                        3:删除表的约束

                        4:查询表的约束

非空约束:

                确保当前约束的属性不为空值,非空约束只能出现在表对象的列中,是行级约束。表示该属性的取值不能为空,如果插入的数据为空,会被系统阻止插入。

                非空约束关键字:not null

                创建非空约束的语法格式:

                create table <table_name>(

                        no int not null,

                        name varchar(20) not null);

                #创建一个表,使编号和名称不能为空

-- 非空约束not null(行级约束)
-- 非空约束使属性的取值不能为空

-- 创建一个数据表,使表中的某个属性取值不能为空
create table staff(-- 员工表
staff_id int not null, -- 工号(非空)
staff_name varchar(20), -- 员工姓名
staff_age int
);

insert into staff values(1,"张三","男",33);
insert into staff(staff_name) values("李四");
-- 以修改表结构的方式为某个属性添加非空约束
alter table staff modify column staff_name varchar(30) not null;
insert into staff(staff_id) values(2);
-- 以修改表结构的方式去掉某个属性的非空约束
alter table staff modify column staff_name varchar(30);
-- 如果属性的取值已经存在空值,那么就不允许为这个属性添加非空约束
-- 如果属性被添加了非空约束,那么这个属性的取值就不能为空。
desc staff;

唯一约束:

                指定某列或者某几列数据的取值不能重复。

                唯一约束关键字:unique

                1、创建表时添加唯一约束

                create table teacher_tb(

                        t_no int not null unique,

                        t_name varchar(20));

                2、指定列添加唯一约束:

                        alter table<表名> add 约束类型(属性名);

                #示例:可以通过constraint给约束取别名

                        alter table<表名> add constraint <约束名> unique(属性名);

                3、删除唯一约束:

                        alter table<表名> drop index <属性名/约束名>;

-- 创建一个数据表,使表中的某个属性取值不能重复
create table staff( -- 员工表
staff_id int unique,-- 工号(唯一)
staff_name varchar(30),-- 员工姓名
staff_age int
-- unique(staff_id)-- 添加唯一约束
);

-- 以修改表结构的方式为某个属性添加唯一约束
alter table staff add unique(staff_id);
insert into staff(staff_id,staff_name) values(2,"李四");
-- 以修改表结构的方式去掉某个属性的唯一约束
alter table staff drop index staff_id;
desc staff;

复合唯一约束

                创建复合唯一约束(表级约束)

                可以对多个列进行唯一约束,约束两个以上的字段(属性)不能同时一致。

                1、在创建表时添加复合唯一约束

                constraint <约束名> unique(<属性>)[,属性2] [,...属性n])

                2、在创建表后添加复合唯一约束

                alter table <表名> add constraint <约束名> unique (<属性1>[,属性2] [,...属性n]);

                # 这里也就是约束属性1、属性2到属性n中可以允许其中存在取相同值的属性,但不能同时相同,至少要有一个不同。

                #数据库默认第一个非空且唯一的属性为主属性(主键)

        

-- 复合唯一约束(表级约束)
-- 为两个或两个以上的属性添加一个唯一约束,使它们的取值不能同时重复,可以有部分重复
-- 创建一个数据表,使表中的某几个属性取值不能同时重复
create table staff( -- 员工表
staff_id int, -- 工号(唯一)
staff_name varchar (30),-- 员工姓名
staff_gender varchar(4), -- 员工性别
staff_age int,
unique(staff_id,staff_name-- 添加复合唯一约束
);

-- 以修改表结构的方式为某几个属性添加复合唯一约束
alter table staff add constraint uni_sidname unique (staff_id,staff_name);
insert into staff(staff_id,staff_name) values(2,"李四");
insert into staff(staff_id,staff_name) values(1,"张三");
-- 以修改表结构的方式为某几个属性去掉复合唯一约束
alter table staff drop index uni_sidname;

desc staff;

猜你喜欢

转载自blog.csdn.net/m0_65334415/article/details/128403026