数据完整性(一)

目录

数据完整性:

        什么是数据完整性:

数据完整性的类型

        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;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
数据库系统原理上机实验 实验1数据库系统及数据库基础操作 1、实验目的 1) 熟练掌握SQL Server的使用方法。 2) 理解和掌握数据库DDL语言,能够熟练地使用SQL DDL语句创建、修改和删除数据库、模式和基本。 2、实验主要内容 1) 安装SQL Server集成环境。 2) 理解和掌握SQL DDL语句的语法,特别是各种参数的具体含义和使用方法;使用SQL语句创建、 修改和删除数据库基本。掌握SQL语句常见语法错误的调试方法。 3、设备要求 1) PC一台 实验2 SQL语言—SELECT查询操作 1、实验目的要求 1) 掌握SQL程序设计基本规范,熟练运用SQL语言实现数据基本查询,包括单查询 、分组统计查询和连接查询。 2) 掌握SQL嵌套查询和集合查询等各种高级查询的设计方法等。 2、实验主要内容 1) 针对SQL Server数据库设计各种单查询语句、分组统计查询语句;设计单个针对自 身的连接查询,设计多个的连接查询。理解和掌握SQL查询语句各个子句的 特点和作用,按照SQL程序设计规范写出具体的SQL查询语句,并调试通过。 2) 针对SQL Server数据库,正确分析用户查询要求,设计各种嵌套查询和集合查询。 3、实验仪器设备 1) 学生每个一台PC机 2) 已安装SQL Server环境 实验3 SQL语言—更新操作、视图、索引等操作 1、实验目的要求 1) 熟悉数据库的数据更新操作,能够使用SQL语句对数据库进行数据的插入、修改 、删除操作。 2) 熟悉SQL语言有关视图的操作,能够熟练使用SQL语句来创建需要的视图,定义数 据库外模式,并能使用所创建的视图实现数据管理。 3) 掌握索引设计原则和技巧,能够创建合适的索引以提高数据库查询。 2、实验主要内容 1) 针对SQL Server数据库设计单元组插入、批量数据插入、修改数据和删除数据等SQL语 句。理解和掌握INSERT、UPDATE和DELETE语法结构的各个组成成分,结合嵌套 SQL子查询,分别设计几种不同形式的插入、修改和删除数据的语句,并调试 成功。 2) 针对给定的数据库模式,以及相应的应用需求,创建视图、创建带WITH CHECK OPTION的视图,并验证视图WITH CHECK OPTION选项的有效性。理解和掌握视图消解执行原理,掌握可更新视图和不可 更新视图的区别 对视图的操作: a) 创建由地点在上海的供应商组成的可更新视图SS_View; b) 创建一个包括各个工程项目及其使用的各种零件总数量的不可更新视图JP Num_View; c) 利用SQL语句对上述a)视图进行更新操作; d) 利用SQL语句对上述a)、b)视图进行更新操作; e) 利用Management Studio创建和删除视图。 对索引的操作: 同上 3) 针对给定的数据库模式和具体应用需求,创建唯一索引、函数索引、复合索引等 ;修改索引;删除索引。设计相应的SQL查询验证索引有效性。 3、实验仪器设备 1) 学生每个一台PC机 2) 已安装SQL Server环境 实验4数据库的安全性、完整性 1、实验目的要求 1) 掌握自主存取控制权限的定义和维护方法; 2) 掌握实体完整性的定义和维护方法; 3) 掌握参照完整性的定义和维护方法; 4) 掌握用户自定义完整性的定义和维护方法。 2、实验主要内容 1) 定义用户、角色,分配权限给用户、角色,回收权限,以相应的用户名登录数据 库验证权限分配是否正确。选择一个应用场景,使用自主存取控制机制设计权 限分配。可以采用两种方案。方案一:采用sa超级用户登录数据库,完成所有 权限分配工作,然后用相应用户名登陆数据库以验证权限分配正确性;方案二 :采用sa用户登陆数据库创建三个部门经理用户,并分配相应的权限,然后分 别用三个经理用户名登陆数据库,创建相应部门的USER, ROLE,并分配相应权限。验证权限分配之前,请备份好数据库;针对不同用户 所具有的权限,分别设计相应的SQL语句加以验证。 2) 定义实体完整性,删除实体完整性。能够写出两种方式定义实体完整性的SQL语 句:创建时定义实体完整性、创建后定义实体完整性。设计SQL语句验证 完整性约束是否起作用。 3) 定义参照完整性,定义参照完整性的违约处理,删除参照完整性。写出两种方式 定义参照完整性的SQL语句:创建时定义参照完整性、创建后定义参照完 整性。 4) 针对具体应用语义,选择NULL/NOT NULL、DEFAULT,UNIQUE、CHECK等,定义属性上的约束条件。 3、实验仪器设备 1) 学生每个一台PC机 2) 已安装SQL Server环境 实验5数据库设计与应用开发大作业 1、实验目的要求 1) 掌握数据库设计

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翘指

创作不易,一分也是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值