文档库 最新最全的文档下载
当前位置:文档库 › 实验八 数据库的完整性约束

实验八 数据库的完整性约束

实验八  数据库的完整性约束
实验八  数据库的完整性约束

实验八:数据库的完整性约束

一、实验目的

1.掌握主键约束、外键约束及check约束的用法;

2.掌握默认值约束和默认值对象的应用;

3.掌握用触发器实现参照完整性的方法。

二、实验学时

2学时

三、实验要求

1.了解约束、默认值;

2.了解触发器的定义方法;

3.掌握触发器的编写和运行方法

4.完成实验报告。

四、实验内容

1. 数据完整性。以实验数据库为基础数据,请使用T-SQL语句完成以下内容,并将SQL语句写在实验报告册中:

1)将数据库stu的表course的cno字段定义为主键,约束名称为cno_pk;

alter table course

add constraint cno_pk primary key(cno)

2)为表course中的字段cname添加唯一值约束;

alter table course

add constraint cname_uk unique(cname)

3)对于数据表sc的sno、cno字段定义为外码,使之与表student的主码

sno及表course的主码cno对应,实现如下参照完整性: 删除student表中记录的同时删除sc表中与该记录sno字段值相同的记

录;

alter table sc

add constraint sc_fk

foreign key(sno)references student(sno)

on delete cascade

●修改student表某记录的sno时,若sc表中与该字段值对应的有若干条

记录,则拒绝修改;

alter table sc

add constraint sc_student_fk

foreign key(sno)references student(sno)

●修改course表cno字段值时,该字段在sc表中的对应值也应修改;

alter table sc

add constraint sc_fh

foreign key(sno)references student(sno)

on update cascade

●删除course表一条记录时,若该字段在在sc表中存在,则删除该字段

对应的记录;

alter table sc

add constraint sc_course_fh

foreign key(cno)references course(cno)

on delete cascade

向sc表添加记录时,如果该记录的sno字段的值在student中不存在,则拒绝插入;

alter table sc

add constraint sc_fl

foreign key (sno)references student(sno)

4)定义check约束,要求学生学号sno必须为9位数字字符,且不能以0开头,第二三位皆为0;

alter table student

add constraint sno_ck

check (sno like'[1-9][0][0][0-9][0-9][0-9][0-9][0-9][0-9]')

5)定义stu数据库中student表中学生年龄值在16~30范围内;

alter table student

add constraint sage_ck

check (sage>=16 and sage<=30)

6)定义stu数据库student表中学生年龄值默认值为20;

alter table student

add constraint sage_default

default 20 for sage

7)修改student表学生的年龄值约束可以为15~35范围内;

alter table student

drop constraint sage_ck

go

alter table student

add constraint sage_ck

check(sage>=15 and sage<=35)

8)删除表course中字段cname的唯一值约束;

alter table course

drop constraint cname_uk

2. 以实验数据库为基础数据,编写以下触发器并测试。

1)为表course建立一个INSERT触发器,当插入的新行中课程学分(ccredit)

的值不是1~6时,就激活该出发器,撤销该插入操作,并使用RAISERROR 语句返回一个错误信息。

create trigger credit_insert on course

for insert

as

declare@xf tinyint

select@xf=ccredit from inserted

if@xf not between 1 and 6

begin

RAISERROR('学分的取值只能是~6!',16,10)

rollback transaction

end

/*测试*/

insert into course values('11','C#程序设计',null,4)

insert into course values('12','C语言',null,8)

2)为course表再创建一个UPDATE触发器,当更新了某门课程的课程号信息时,就激活该触发器级联更新sc表中相关的课程号信息,并使用PRINT 语句返回一个提示信息。

create trigger cno_update on course

after update

as

if update (cno)--检测课程号列是否被更新

begin

declare@old_cno char(3),@new_cno char(3)--声明变量获取更新前后的课程号的值

select@old_cno=https://www.wendangku.net/doc/e011350699.html,o,@new_cno=https://www.wendangku.net/doc/e011350699.html,o from

deleted,inserted

PRINT'准备级联更新sc表中的课程号信息…'--级联更新sc表中相关成绩记录的课程号信息

update sc

set cno=@new_cno

where cno=@old_cno

PRINT'已经级联更新sc表中原课程号'+@old_cno+'为'+@new_cno

End

/*测试*/

update course

set cno='30'

where cname='大学英语'

3)为student表创建DELECT触发器,在删除中的一条记录的同时将sc表

中的相应记录也删除。

create trigger sno_delete on student

after delete

as

begin

declare@delect_sno char(9)

select@delect_sno=sno from deleted

PRINT'已经级联删除sc表中学号为'+@delect_sno+'的学生成绩信息'

delete from sc where sno in(select sno from deleted)

end

/*测试*/

delete from student

where sno='200515004'

4)创建INSTEAD OF触发器,当向sc表中插入记录时,先检查sno列上的值在student中是否存在,如果存在执行插入操作,如果不存在则提示“该学生不存在”。

create trigger sno_exists on sc

instead of insert

as

begin

declare@sno char(9)

Select@sno=sno from inserted

if(@sno in(select sno from student))

insert into sc select*from inserted

else

Print'该学生不存在'

End

--测试插入不存在的值

insert into sc values('200515036','05',78)

5)比较约束与触发器的执行顺序。(在一个表中创建CHECK约束和触发器,然后向表中插入一条不符合约束和触发器的记录,查看谁先发生作用。) alter table course

add constraint CK_xf

check (ccredit>=1 and ccredit<=6)

--测试

insert into course values('13','C#程序设计',null,8)

从这部分实验中可以看到,约束优先于FOR或AFTER触发器起作用,它在更新前就生效,对要更新的值进行规则检查。当检查到与现有规则冲突时,系统给出错误消息,并取消更新操作。如果检查没有问题,更新被执行,再激活触发器。

实验八 数据库的安全性

实验八数据库的安全 T9.1 数据库用户的管理 1、实验目的 (1)掌握Windows登录名的建立与删除方法。 (2)掌握SQL Server登录名的建立与删除方法。 (3)掌握数据库用户创建于管理的方法。 2、实验准备 (1)了解windows身份验证模式与SQL Server身份验证模式的原理。 (2)了解数据库用户的建立与删除方法。 3、实验步骤 (1)Windows登录名。 ①使用界面方式创建Windows身份模式的登录名。方法如下: 第一步以管理员身份登录到Windows,选择“开始”,打开“控制面板”中的“性能和维护”,选择其中的“管理工具”,双击“计算机管理”进入“计算机管理”窗口。 在该窗口中选择“本地用户和组”中的“用户”图标,右击,在弹出的快捷菜单中选择“新用户”菜单项,打开“新用户”窗口,新建一个用户zheng。 第二步一管理员身份登录到SQL Server Management Studio,在对象资源管理器中选择“安全性”,右击“登录名”,在弹出的快捷菜单中选择“新建登录名”菜单项。在“新建登录名”窗口中单击“搜索”按钮添加Windows用户名zheng。选择“Windows身份验证模式”,单击“确定”按钮完成。 ②使用命令方式创建Windows身份模式的登录名,语句如下: 【思考与练习】 使用用户zheng登录Windows,然后启动SQL Server Management Studio,以Windows 身份验证模式连接。看看与以系统管理员身份登录时有什么不同。 (2)SQL Server登录名。 ①使用界面方式创建SQL Server登录名。方法为:在对象资源管理器的“安全性”中,右击“登录名”,在弹出的快捷菜单中选择“新建登录名”菜单项。在“新建登录名”窗口中输入要创建的登录名“yan”,并选择“SQL Server 身份验证模式”,输入密码,取消选择“用户在下次登录时必须更改密码”选项,单击“确认”按钮。 ②以命令方式创建SQL Server登录名,语句如下:

8实验八 数据库的完整性

实验八实现数据完整性一、实验目的 (1)实现数据完整性的概念及实施数据完整性的重要性。 (2)掌握数据完整性的分类。 (3)掌握完整性约束的添加、删除方法。 (4)掌握通用默认值的创建、实施与删除方法。 (5)掌握规则的创建、实施与删除方法。 (6)掌握级联删除、级联修改方法。 二、实验内容 1、完整性约束的添加、删除 (1)通过SQL Server Management Studio实施约束 a.为表Student的Birth字段创建检查约束,使输入的生日日期小于系统日期。 ①、选择Student表,右击→设计,打开Student表 ②、选择Birth一行,右击→CHECK约束,打开界面如下图所示 ③、单击“添加” ④、在表达式中写入:Entrance_date

b.为表Student的Sdept字段,设置默认值约束,默认值取’计算机系’。选择Sdept一行,在其列属性中修改其默认值 c.为Student表的Sname字段添加唯一性约束。 选择Sname一行,右击→索引/键 出现如下界面:

单击“添加”,在类型中选择“唯一键”,在列中选择“Sname”,名称自定义 最后单击“关闭”退出

d.将SC表的Sno,cno字段设置外键约束,约束名自已取,并允许级联删除与级联更新。(此要求在SQL Server2008R2中无法做出)若已存在外键约束,请先删除。 ①、选中Sno,右击→单击“关系”,出现如下信息,可见已存在外键约束 选中键,点击删除,完成约束删除 ②、添加约束: 选中Sno,右击,选择“关系”,出现如下信息,

数据库完整性

第五章数据库完整性 一、选择题 1.有一个关系:学生(学号,姓名,系别),规定学号的值域是8个数字组成的字符串,这一规则属于__________。 A 实体完整性约束 B 参照完整性约束 C 用户自定义完整性约束 D 关键字完整性约束 【解答】C 2.完整性约束有两大类型,其中一种是静态约束,下面( c )不属于静态约束。 A.固有约束B.隐含约束C.语义约束D.显示约束 【解答】C 3.数据库的破坏一般来自四个方面,其中__________是属于完整性约束问题。 A.系统故障B.并发所引起的数据不一致C.人为的破坏 D.输入或更新数据库的数据有误,更新事务未遵守保持数据库一致性的原则 【解答】D 4. ________子句能够实现关系参照性规则。 A. PRIMARY KEY B. NOT NULL C. FOREIGN KEY D. FOREIGN KEY...REFERENCES... 【解答】D 二、填空题 1. 数据库的是指数据的正确性和相容性 【解答】完整性 2.完整性约束是指和。 【解答】实体完整性,参照完整性 3.实体完整性是指在基本表中,。 【解答】主属性不能取空值 4.参照完整性是指在基本表中,。 【解答】外码可以是空值或者另一个关系主码的有效值 5.SQL标准使用了一系列概念来描述完整性,包括关系模型的________ 、________和 ________完整性。 【解答】实体完整性参照完整性用户定义 6.数据库完整性的定义一般由SQL的________ 语句来实现。它们作为数据库模式的一部 分存入________中。

【解答】DDL 数据字典 7.关系模型的实体完整性在________ 中用________定义。 【解答】CREATE TABLE 、PRIMARY KEY 二、问答题 1.什么是数据库的完整性? DBMS的完整性子系统的功能是什么? 【解答】数据库完整性是指数据库中数据的正确性、有效性和相容性。DBMS 的完整性控制机制至少包括完整性约束的定义机制和完整性约束的检查机制。 DBMS完整性子系统的功能是: (1)监督事务的执行,并测试是否违反完整性规则; (2)如有违反,则采取恰当的操作,如拒绝、报告违反情况,改正错误等方法进行处理。2.完整性规则由哪几个部分组成?关系数据库的完整性规则有哪几类? 【解答】完整性规则由三部分组成: 触发条件:即什么时候使用规则进行检查; 约束条件:即要检查什么样的错误; ELSE子句:即查出错误后该如何处理。 完整性规则有以下三类: 域完整性规则,用于定义属性的取值范围; 域联系的规则,定义一个或多个关系中,属性值间的联系、影响和约束。 关系完整性规则,定义更新操作对数据库中值的影响和限制。 3.试详述SQL中的完整性约束机制? 【解答】SQL中的完整性约束规则有主键约束、外键约束、属性值约束和全局约束等多种形式。 △主键约束。它是数据中最重要的一种约束。在关系中主键值不允许空,也不允许出现重复,体现了关系要满足实体完整性规则。主键可用主键子句或主键短语进行定义。 △外键约束。根据参照完整性规则,依赖关系中外键或者为空值,或者是基本关系(参照关系)中的该键的某个值。外键用外键关系子句定义,并考虑删除基本关系元组或修改基本关系的主键值的影响,依赖关系可按需要采用RESTRICT、SET NULL、CASCADE方式。△属性值约束。当要求某个属性的值不允许空值时,那么可以在属性定义后加上关键字:NOT NULL ,这是非空值约束。还可以用CHECK子句对一个属性值加以限制以及使用域约束子句CREAT DOMAIN 定义新域并加以属性值检查。 △全局约束。在关系定义时,可以说明一些比较复杂的完整性约束,这些约束涉及到多个属性间的联系或不同关系间的联系,称为全局约束。主要有基于元组的检查子句和断言。前者是对单个关系的元组值加以约束,后者则可对多个关系或聚合操作有关的完整性约束进行定义。 4. DBMS的完整性控制机制应具有哪些功能?

数据库实验四作业及答案

实验4数据查询 一、实验目的 1.掌握使用Transact-SQL的SELECT语句进行基本查询的方法。 2.掌握使用SELECT语句进行条件查询的方法。 3.掌握嵌套查询的方法。 4.掌握多表查询的方法。 5.掌握SELECT语句的GROUP BY和ORDER BY子句的作业和使用方法。 6.掌握联合查询的操作方法。 7.掌握数据更新语句INSERT INTO、UPDATE、DELETE的使用方法。 二、实验准备 1.了解SELECT语句的基本语法格式和执行方法。 2.了解嵌套查询的表示方法。 3.了解UNION运算符的用法。 4.了解SELECT语句的GROUP BY和ORDER BY子句的作用。 5.了解IN、JOIN等子查询的格式。 6.了解INSERT INTO、UPDATE、DELETE的格式与作用。 三、实验内容及步骤 0. 创建studentsdb数据库及其相应表,并录入数据。 启动查询分析器,运行下面链接的代码即可。 创建数据库代码 1.在studentsdb数据库中,使用下列SQL语句将输出什么? (1)SELECT COUNT(*) FROM grade (2)SELECT SUBSTRING(姓名,1,2) FROM student_info (3)SELECT UPPER('kelly')

(4)SELECT Replicate('kelly',3) (5)SELECT SQRT(分数) FROM grade WHERE 分数>=85 (6)SELECT 2,3,POWER(2,3) (7)SELECT YEAR(GETDATE()),MONTH(GETDATE()),DAY(GETDATE()) 2.在studentsdb数据库中使用SELECT语句进行基本查询。 (1)在student_info表中,查询每个学生的学号、姓名、出生日期信息。 SELECT*FROM student_info (2)查询学号为0002的学生的姓名和家庭住址。 SELECT姓名,家庭住址FROM student_info WHERE学号=0002 (3)找出所有男同学的学号和姓名。 SELECT学号,姓名FROM student_info

数据库安全性和完整性实验

实验9:数据库安全性实验 一、实验目的 加深对数据库安全性的理解,并掌握SQL Server中有关用户、角色及操作权限的管理方法。 二、实验内容 1.数据库的安全性实验。在SQL Server企业管理器中,设置SQL Server 的安全认证模式,实现对SQL Server的用户和角色的管理,设置和管理 数据操作权限。 三、实验原理和步骤 1.设置SQL Server的安全认证模式,选择混合模式。 右键服务器属性-安全性:选择SQL Server和Windows身份验证模式。 重启服务,生效。 2.账号: sa账号登录 3.登录帐号的管理

1)将Windows帐号添加到SQL Server 2005中 创建操作系统用户- 4.数据库用户的管理 1)dbo用户; 查看banking数据库的dbo用户,查看用户权限。 2)U1用户; 创建banking数据库的U1用户,查看用户权限。 5.权限管理 1)赋予所创建的U1用户db_datareader角色,查看用户权限 2)赋予所创建的U1用户db_datawriter角色,查看用户权限 3)赋予所创建的U1用户db_owner角色,查看用户权限 4)两种方法赋予所创建的U1用户对banking数据库表customer的select 权限,验证并写出sql语句 5)两种方法赋予所创建的U1用户对banking数据库表branch的select 和对branch_name修改的权限,验证并写出sql语句 6)把对loan表的update权限授予所创建的U1用户用户,并允许将此 权限再授予其他用户,验证并写出sql语句 7)两种方法回收所创建的U1用户对banking数据库表customer的select 权限,验证并写出sql语句 8)两种方法回收所有用户对banking数据库表loan的update权限,验 证并写出sql语句 四、实验报告要求 要求写出如下设计报告: 1.用Transact-SQL写出实验操作的语句 2.实验步骤和实验结果。 3.实验中的问题和提高。 4.SQL Server中有的安全性功能。 五、注意事项 1.用户、角色和权限的职能,以及它们之间的关系。

数据库系统概论第5版(王珊、萨师煊)课后答案第5章 数据库完整性

第5章数据库完整性 1.什么是数据库的完整性? 答: 数据库的完整性是指数据的正确性和相容性。 2.数据库的完整性概念与数据库的安全性概念有什么区别和联系? 答: 数据的完整性和安全性是两个不同的概念,但是有一定的联系。 前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出(Garba : e In Garba : e out )所造成的无效操作和错误结果。 后者是保护数据库防止恶意的破坏和非法的存取。也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。 3.什么是数据库的完整性约束条件? 答:完整性约束条件是指数据库中的数据应该满足的语义约束条件。 一般可以分为六类:静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束。 常见的静态关系约束有:实体完整性约束;参照完整性约束;函数依赖约束。 4.关系DBMS 的完整性控制机制应具有哪些功能? 答: DBMS 的完整性控制机制应具有三个方面的功能: 1)定义功能,即提供定义完整性约束条件的机制; 2)检查功能,即检查用户发出的操作请求是否违背了完整性约束条件; 3)违约反应:如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定 的动作来保证数据的完整性。 5.关系DBMS 在实现参照完整性时需要考虑哪些方面? 答:关系DBMS 在实现参照完整性时需要考虑以下几个方面: 1)外码是否可以接受空值。 2)被参照关系中删除元组或修改主码时,若使参照关系在被参照关系中找不到与之 相等的属性值,系统可选择的作法有三种:拒绝执行(默认策略)、 级联操作、设置为空值。 3)参照关系中插入或修改元组时,若使参照关系在被参照关系中找不到与之相等的 属性值,系统可选择的作法有三种:拒绝执行(默认策略)、级联操作(CASCADE)、 设置为空值。 6.假设有下面两个关系模式: 职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码; 部门(部门号,名称,经理名,电话),其中部门号为主码。 用sQL语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义: 1)定义每个模式的主码; 2)定义参照完整性; 3)定义职工年龄不得超过60 岁。 CREATE TABLE 职工 (职工号CHAR(10), 姓名CHAR(10), 年龄NUMERIC (3), CONSTRAINT C1 CHECK (年龄<=60),

第6章 实现数据完整性约束复习题

第6章实现数据完整性约束 一、填空题 1.SQL Server使用声明完整性和两种方式实现数据完整性。 答案:过程完整性 2.完整性,它要求表中所有的元组都应该有一个惟一标识,即主关键字。可以使用约束实现实体完整性,也可以将约束和约束一起使用来实现实体完整性。 答案:实体PRIMARY KEY UNQIUE NOT NULL 3.完整性维护从表中的外码与主表中主码的相容关系。 答案:参照 4.为了保护数据库的实体完整性,当用户程序对主码进行更新使主码值不惟一时,DBMS 就。 答案:拒绝更新 三.简答题 1.什么是数据的完整性? 答: 数据的完整性是指数据的正确性和相容性。 2 .数据库的完整性概念与数据库的安全性概念有什么区别和联系? 答: 数据库的完整性和安全性是两个不同的概念,但是有一定的联系。前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出( Garbage In Garbage Out )所造成的无效操作和错误结果。后者是保护数据库防止恶意的破坏和非法的存取。也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。 3 .什么是数据库的完整性约束条件?可分为哪几类? 答:完整性约束条件是指数据库中的数据应该满足的语义约束条件。一般可以分为六类:静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束。静态列级约束是对一个列的取值域的说明,包括以下几个方面: ( l )对数据类型的约束,包括数据的类型、长度、单位、精度等; ( 2 )对数据格式的约束; ( 3 )对取值范围或取值集合的约束; ( 4 )对空值的约束; ( 5 )其他约束。静态元组约束就是规定组成一个元组的各个列之间的约束关系,静态元组约束只局限在单个元组上。静态关系约束是在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。 常见的静态关系约束有: ( l )实体完整性约束; ( 2 )参照完整性约束; ( 3 )函数依赖约束。 动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面: ( l )修改列定义时的约束; ( 2 )修改列值时的约束。动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。动态关系约束是加在关系变化前后状态上的限制条件,例如事务一致性、原子性等约束条件。 4 . DBMS 的完整性控制机制应具有哪些功能? 答:DBMS 的完整性控制机制应具有三个方面的功能: ( l )定义功能,即提供定义完整性约束条件的机制; ( 2 )检查功能,即检查用户发出的操作请求是否违背了完整性约束条件;( 3 )违约反应:如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定

数据库实验四(含答案)

实验四使用SQL语句创建和删除数据库、表 一. 实验目的: 1、了解SQL Server 2005数据库的逻辑结构和物理结构。 2、掌握使用SQL 语句创建和删除数据库。 3、学会使用T-SQL语句创建表。 二. 实验准备 1.明确能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。 2.了解用SQL语句创建和删除数据库的基本语法。 3.是用查询分析器,完成用SQL语句创建和删除基本表。 三. 实验要求 1、熟练使用查询分析器进行数据库的创建和删除操作。 2、用查询分析器,完成用SQL语句创建和删除基本表。 3、完成实验报告。 四. 实验内容 一、数据库 1.以下是创建数据库userdb1的SQL语句, create database userdb1 on (name=userdb4_data,--数据文件的逻辑名称,注意不能与日志逻辑同名 filename='g:\xygl\userdb4.mdf' ,--物理名称,注意路径必须存在 size=5,--数据初始长度为5M maxsize=10,--最大长度为10M filegrowth=1)--数据文件每次增长1M log on ( name=userdb4_log, filename='g:\xygl\userdb4.ldf ' , size=2 , maxsize=5 , filegrowth=1) 运行上诉语句建立数据库userdb1

句,并建立“学生信息”数据库.(.mdf的名字可以修改) 3.数据库的修改(alter database 数据库名add file),将一个大小为10MB 的数据文件mrkj添加到userdb1的数据库中,该数据文件的大小为10MB,最大的文件大小为100MB,增长速度为2MB,物理地址与原有的mdf,ldf文件放在一起。 alter database 数据库名 add file() 注括号内格式同下: ( name=userdb4_log, filename='g:\xygl\userdb4.ldf ' , size=2 , maxsize=5 ,

实验3:数据库安全性

实验3:数据库安全性 第1个实验.安全性定义——第5章实验八 使用订单数据库完成下面的实验内容: (1) 分别创建登录账号user01、user02,其密码皆为p888888,并设置为订单数据库OrderDB的用户。 sp_addlogin'user01','p888888','orderdb' sp_addlogin'user02','p888888','orderdb' (2) 创建登录账号login03,并加入到OrderDB数据库中,其用户名为user03。 sp_adduser'user03','login03' (3) 将员工表的所有权限授予全部用户。 grant all privileges on customer to public (4) 授予user03用户对Product表的查询权限,对Employee表的编号、名称的查询和更新权限。 grant select on product to login03 grant select(employeeno,employeename),update(employeeno,employeename)on employee to login03 (5) 创建角色r3、r4,将订单明细表所有列的SELECT权限、UNIT_PRICE列的UPDA TE 权限授予r3。 sp_addrole'r3' sp_addrole'r4' grant select,update(price)on orderdetail to r3 (6) 收回全部用户对员工表的所有权限。 revoke all on employee from public (7) 将user01、user02两个用户赋予r3角色。 sp_addrolemember user01,r3 sp_addrolemember user02,r3 (8) 收回user02对订单明细表所有列的SELECT权限。 sp_addrole user02 revoke select on orderdetail from user02 (9) 在当前数据库中删除角色r4。 sp_droprole r4 (10) 授予user01建表和建视图的权限,user01用户分别建立一张表和一个视图(表和视图自定),然后将该表和视图的查询权限授予user02和user03。 由于数据库中存在user01而user01的密码未知user01用user04 代替 grant create view to user04

数据库概论试题-数据库完整性

第10章数据库完整性 1.数据库的完整性是指数据的__正确性、相容性__。 2.什么是数据库的完整性? 答:数据库的完整性是指数据的正确性和相容性。 3.SQL标准使用了一系列概念来描述完整性,包括关系模型的____实体完整性、参照完整性、用户定义___完整性。 4.数据库的完整性概念与数据库的安全性概念有什么区别和联系? 答:数据的完整性和安全性是两个不同的概念,但是有一定的联系。 前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出(GarbageInGarbageOut)所造成的无效操作和错误结果。后者是保护数据库防止恶意的破坏和非法的存取。也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。 5.数据库完整性的定义一般由SQL的__DDL数据字典__语句来实现。它们作为数据库模式的一部分存入中。 6.什么是数据库的完整性约束条件?可分为哪几类? 7.关系模型的实体完整性在__CREATETABLE__中用__PRIMARYKEY___定义。 8.DBMS的完整性控制机制应具有哪些功能? 答:DBMS的完整性控制机制应具有三个方面的功能: 1.定义功能,即提供定义完整性约束条件的机制。 2.检查功能,即检查用户发出的操作请求是否违背了完整性约束条件。 3.违约反应:如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。 9.为了避免对基本表进行全表扫描,RDBMS核心一般都对__主码__自动建立一个__索引__。 10.RDBMS在实现参照完整性时需要考虑哪些方面? 11.关系模型的参照完整性在__CREATETABLE__中用___FOREIGNKEY__短语定义哪些列为外码列,用__REFERENCES__短语指明这些外码参照哪些表的主码。 12.假设有下面两个关系模式:职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码;部门(部门号,名称,经理名,电话),其中部门号为主码;用SQL语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义:定义每个模式的主码;定义参照完整性;定义职工年龄不得超过60岁。 CREATETABLEDEPT(DeptnoNUMBER(2),DeptnameV ARCHAR(10),ManagerV ARCHAR(10), PhoneNumberChar(12)CONSTRAINTPK_SCPRIMARYKEY(Deptno));CREATETABLEEMP(E mpnoNUMBER(4),EnameV ARCHAR(10),AgeNUMBER(2),CONSTRAINTC1CHECK(Aage<= 60),JobV ARCHAR(9),SalNUMBER(7,2),DeptnoNUMBER(2),CONSTRAINTFK_DEPTNOFOR EIGNKEY(Deptno)REFERENCESDEPT(Deptno)); 13.关系系统中,当操作违反实体完整性、参照完整性和用户定义的完整性约束条件时,一般是如何分别进行处理的? 答:对于违反实体完整性和用户定义的完整性的操作一般都采用拒绝执行的方式进行处理。而对于违反参照完整性的操作,并不都是简单地拒绝执行,有时要根据应用语义执行一些附加的操作,以保证数据库的正确性。具体的处理可以参见上面第5题或《概论》10.2中相应部分。

数据完整性约束-主键约束

数据完整性约束(一) —— SQL Server 2016数据库及应用

由于数据库中的数据是从外界输入的,然而数据的输入由于种种原因,会发生输入无效或错误信息,数据的完整性正是为了保证输入的数据符合规定而提出的。 数据完整性分为四类: 实体完整性、域完整性、参照完整性和用户自定义完整性。

1. 实体完整性: 实体完整性要求如果属性A是关系R的主属性,则属性A不能取空值。实体完整性用于保证关系数据库表中的每条记录都是唯一的,建立主键的目的就是为了实现实体完整性。 2. 域完整性: 用来保证数据的有效性,它可以限制录入的数据与数据类型是否一致,规定字段的默认值,设置字段是否可以为空,域完整性可以确保不会输入无效的数据。

3. 参照完整性:参照完整性是基于外键的,如果表中存在外键,则外键的值必须与主表中的某条记录的被参照列的值相同,参照完整性用于确保相关联表之间的数据保持一致。当添加、删除或修改数据表中记录时,可以借助于参照完整性来保证相关表之间数据的一致性。 ClassNo ClassName Specialty EnterYear Dno 0111801 网络3181 计算机网络技 术 2018 D01 0121901 软件3191 软件技术 2019 D01 主键 Class Sno Sname Sex Birth ClassNo s011180106 陈骏 男 2000/7/5 0111801 s012190118 陈天明 男 2000/7/18 0121901 主键 外键 Student

4. 用户自定义完整性: 用户自定义完整性约束就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。 如何实现数据完整性,可以通过为表的字段设置约束来保证表中数据完整性。

数据库实验题目和答案

按照如下方式重新定义四张表: 定义新的books表,其所拥有的属性与属性类型与原有的books表一致 以列级完整性的方式定义属性bookId为主码,同时在定义的时候必须提供约束名 定义属性category为”非空” ,同时在定义的时候必须提供约束名 create table Books( bookId number(9,0) constraint BooksKey primary key, title varchar(80), author varchar(40), year integer, category varchar(15) constraint B1 not null ); commit; 定义新的customers表,其所拥有的属性与属性类型与原有的customers表一致 以表级完整性的方式定义属性cid为主码 以列级完整性的方式定义属性cname为”唯一”,同时在定义的时候必须提供约束名 create table Customers ( cid number(9,0), cname char(40) constraint C1 unique, age integer, primary key(cid) ); commit; 定义新的purchases表,其所拥有的属性与属性类型与原有的purchases表一致 定义属性cid与bookId为主码,同时在定义的时候必须提供约束名 以列级完整性的方式定义属性bookId为外码,它参照Books表的主码,同时在定义的时候必须提供约束名。当删除Books表中的某一本书时,级联删 除与它相关的购买记录 以表级完整性的方式定义属性cid为外码,它参照customers表,同时在定义的时候必须提供约束名。当删除customers表中的某个顾客时,如果存在 与该客户相关的购买记录,拒绝删除。 create table Purchases( cid number(9,0), bookId number(9,0)

数据库实验上机答案整理-中国石油大学-龚安

实验四SQL练习2 一、实验目的 1.掌握索引的建立、删除及使用; 2.掌握单表查询、连接查询、嵌套查询和集合查询; 3.掌握插入数据、修改数据和删除数据语句的非常用形式。二、实验学时 2学时 三、实验内容 1.利用Query Analyzer完成以下操作: ⑴在预算日期、结算日期和入账日期上分别建立索引,并在查询操作中体会索引的作用。 ⑵在完成第2题的查询操作后,删除预算日期、结算日期和入账日期上的索引。 2.利用Query Analyzer完成以下操作: ⑴采油一矿二队2016-5-1到2016-5-28有哪些项目完成了预算,列出相应明细。 ⑵采油一矿二队2016-5-1到2016-5-28有哪些项目完成了结算,列出相应明细。 ⑶采油一矿二队2016-5-1到2016-5-28有哪些项目完成了结算,列出相应的材料费消耗明细。 ⑷采油一矿二队2016-5-1到2016-5-28有哪些项目完成了入账,列出相应明细。

⑸列出采油一矿二队2016-5-1到2016-5-28总的预算金额。 ⑹列出采油一矿二队2016-5-1到2016-5-28总的结算金额。 ⑺列出采油一矿二队2016-5-1到2016-5-28总的入账金额。 ⑻列出采油一矿2016-5-1到2016-5-28总的入账金额。 ⑼有哪些人员参与了入账操作。 ⑽列出2016-5-1到2016-5-28进行了结算但未入账的项目。 ⑾列出采油一矿二队的所有项目,按入账金额从高到低排列。 ⑿列出有哪些施工单位实施了项目,并计算各单位所有项目结算金额总和。 ⒀找出消耗了材料三且消耗超过了2000元的项目,列出相应消耗明细(利用子查询)。 ⒁作业公司二队参与了哪些项目。 ⒂作业公司一队和二队参与了哪些项目(利用union)。 ⒃采油一矿的油井是哪些作业队参与施工的。 3.利用Query Analyzer完成以下操作: ⑴建立数据表(包含3个属性列:★施工单位、★年月、◆结算金额)保存各个施工单位每月的结算金额总和。 ⑵用子查询将各个施工单位每月的结算金额总和插入到所建立的数据表中。 ⑶用带子查询的修改语句将采油一矿油井作业项目的结算人改为“李兵”。 ⑷用带子查询的删除语句删除采油一矿油井作业项目。

数据库的安全性实验报告

西安邮电大学 (计算机学院) 课内实验报告 实验:数据库的安全性实验 课程:数据库原理及应用B 班级:网络1203 学号: 学生姓名: 任课教师:孟彩霞

一、实验目的 (1)理解SQL Server验证用户身份的过程,掌握设置身份验证模式的方法(2)理解登录帐号的概念,掌握混合认证模式下登录帐号的建立与取消方法 (3)掌握混合认证模式下数据库用户的建立与取消方法 (4)掌握数据库用户权限的设置方法 (5)理解角色的概念,掌握管理角色技术 二、实验内容 (1)在企业管理器中打开“SQL Server属性(配置)”对话框,设置身份验证模式为“SQL Server”和“Windows”模式(即混合模式)。 (2)创建、管理数据库服务器的登录账号。 (3)创建、管理数据库用户。 (4)管理用户权限。 (5)创建、管理数据库角色。 三、实验环境 Windows7 SQL SERVER 2012 四、实验前准备 课本 上机使用代码 五、实验步骤 1.在企业管理器中打开“SQL Server属性(配置)”对话框,设置身份验证模式为“SQL Server”和“Windows”模式(即混合模式)。 2.创建、管理数据库服务器的登录账号。用T-SQL语句创建、查看、删除登录账号。 创建一个名为Student、密码为111、使用的默认数据库为JWGL的登录账号。 EXEC sp_addlogin ‘student’,’111’,’JWGL’查看登录账号EXEC sp_helplogins 删除登录账号为EXEC sp_droplogins ‘student’ 3.创建、管理数据库用户。 用T-SQL语句创建、查看、删除数据库用户。 为数据库JWGL创建一个用户user1,该用户登录SQL Server服务器的账号为wang,登录密码为secret,相应的程序代码为: EXEC sp_addlogin ‘wang’, ‘secret’, ‘JWGL’ GO EXEC sp_grantdbaccess ‘wang’, ‘user1’查看数据库用户为EXEC sp_helpuser 删除数据库中的“wang”用户为EXEC sp_revokedbaccess ‘wang’ 4.管理用户权限。 使用T-SQL语句完成第3章习题12中(1)~(3)的用户管理和用户权限管理。企业管理器: (1)允许用户李明对Orders表进行插入、删除操作。 GRANT INSERT ,DELETE ON Orders TO ‘李明’

数据库实验四(含答案)

实验四使用SQL语句创建与删除数据库、表 一、实验目的: 1、了解SQL Server 2005数据库的逻辑结构与物理结构。 2、掌握使用SQL 语句创建与删除数据库。 3、学会使用T-SQL语句创建表。 二、实验准备 1.明确能够创建数据库的用户必须就是系统管理员,或就是被授权使用CREATE DATABASE语句的用户。 2.了解用SQL语句创建与删除数据库的基本语法。 3.就是用查询分析器,完成用SQL语句创建与删除基本表。 三、实验要求 1、熟练使用查询分析器进行数据库的创建与删除操作。 2、用查询分析器,完成用SQL语句创建与删除基本表。 3、完成实验报告。 四、实验内容 一、数据库 1.以下就是创建数据库userdb1的SQL语句, create database userdb1 on (name=userdb4_data,--数据文件的逻辑名称,注意不能与日志逻辑同名 'g:\xygl\userdb4、mdf' ,--物理名称,注意路径必须存在 size=5,--数据初始长度为5M maxsize=10,--最大长度为10M )--数据文件每次增长1M log on ( name=userdb4_log, 'g:\xygl\userdb4、ldf ' , size=2 , maxsize=5 , ) 运行上诉语句建立数据库userdb1

2.根据步骤1的sql语句,写出创建实验二中“学生信息”数据库的sql语句,并建立“学生信息”数据库、(、mdf的名字可以修改) 3、数据库的修改(alter database 数据库名add file),将一个大小为10MB 的数据文件mrkj添加到userdb1的数据库中,该数据文件的大小为10MB,最大的文件大小为100MB,增长速度为2MB,物理地址与原有的mdf,ldf文件放在一起。 alter database 数据库名 add file() 注括号内格式同下: ( name=userdb4_log, 'g:\xygl\userdb4、ldf ' , size=2 , maxsize=5 ,

SQL SERVER数据完整性及约束

龙源期刊网 https://www.wendangku.net/doc/e011350699.html, SQL SERVER数据完整性及约束 作者:李浩周媛媛 来源:《科技与企业》2013年第15期 【摘要】所谓数据完整性,实际上是衡量数据库中数据质量好坏的一种标志,是确保数据库中数据一致,正确以及符合企业规则的一种思想,本文以详细的文字来介绍了什么是数据完整性及约束,以及如何在数据库建设中应用和使用这些约束。 【关键词】SQL Server;约束;数据完整性;一致性 在数据库管理系统中,保证数据库中的数据完整性是非常重要的。所谓数据完整性,就是指存储在数据库的表中数据的一致性和正确性。约束定义关于列中允许值的规则,是强制完整性的标准机制,对输入数据的取值范围和格式的限制称为约束。约束是用来保证数据完整性的。在SQL Server中有6种常设约束:空置约束(NULL)、唯一性约束(unique constraint)、主键约束(primary key constraint)、外键约束(foreign key constraint)、检查约束(check constraint)、缺省约束(default constraint)。 一、SQL Server的数据完整性 存储在数据库中的所有数据值均属正确的状态。如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。 强制数据完整性可确保数据库中的数据质量。例如,如果有一“教学管理数据库”,学生表中学号一项输入了值为20110101的学生,那么该数据库不应允许其他学生使用同一学号值。如果计划将选修表中成绩的值范围设定为0到100,则数据库不应接受121。如果学生表有一列为班级编码,该列存储的班级编码为数据库中允许的有效班级编码。 二、数据完整性分类 在SQL Server中,根据数据完整性所作用的数据库对象和范围不同,可以将数据完整性 分为实体完整性、域完整性、引用完整性、用户定义完整性四种。 1、实体完整性 实体完整性,简单来说,就是将表中的每一行看作一个实体。实体完整性要求表的标示符列或主键的完整性(主键不能为空)。可以通过建立唯一索引、PRIMARY KEY约束、UNIQUE约束来实施实体完整性。 2、域完整性

数据库试验答案

计算机与信息学院 数据库实验报告 专业班级 学生姓名及学号 课程教学班号 任课教师 实验指导教师 实验地点 2012 ~2013 学年第二学期

实验1 使用向导创建和删除数据库 一、实验目的 1.熟悉SQL Server 中SQL Server Management Studio的环境 2.了解SQL Server 数据库的逻辑结构和物理结构 3.掌握使用向导创建和删除数据库的方法 二、实验要求 1.熟练使用SSMS进行数据库的创建和删除操作。 2.完成实验报告。 三、实验内容 设有一学籍管理系统,其数据库名为“EDUC”。 初始大小为10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长; 日志文件初始为2MB,最大可增长到5MB,按1MB增长。 数据库的逻辑文件名为“student_data”, 物理文件名为“student_data.mdf,存放路径为“E:\sql_data”。 日志文件的逻辑文件名为“student_log”, 物理文件名为“student_log.ldf”,存放路径为“E:\sql_data”。 四、实验步骤

1.使用SQL Server Management Studio(简称SSMS)创建数据库。 (1)启动SSMS 在开始菜单中:所有程序-SQL Server 2005 -SQL Server Management Studio单击“连接”按钮,便可以进入【SQL Server Management Studio】窗口。如果身份验证选择的是“混合模式”,则要输入sa的密码。 (2)建立数据库 在“对象资源管理器”窗口,建立上述数据库EDUC。在数据库节点上右击选择新建。同时建立一个同样属性的数据库EDUC1。

数据库原理实验报告四(有答案)

南京晓庄学院 《数据库原理与应用》课程实验报告 实验四查询设计实验 所在院(系):数学与信息技术学院 班级: 学号: 姓名:

1.实验目的 (1)了解查询的目的,掌握SELECT语句的基本语法和查询条件的表示方法。 (2)掌握数据排序和数据联接查询的方法。 (3)掌握SQL Server查询分析器的使用方法。 2.实验要求 (1)针对“TM”数据库,在SQL Server查询分析器中,用T-SQL语句实现以下单表查询 操作,并将将调试成功的T-SQL命令,填入实验报告中。 a)查询所有课程的详细情况。 b)查询来自江苏或山东的学生学号和姓名,并以中文名称显示输出的列名。 c)查询选修了课程的学生学号(一人选了多门课程的话,学号只显示一次)。 d)查询选修课程号为07253001的学号和成绩,并要求对查询结果按成绩降 序排列,如果成绩相同则按学号升序排列。 e)查询所有学生的学号、姓名和年龄。 f)查询选修课程号为07253001的成绩在85-95之间的学生学号和成绩,并 将成绩乘以0.7输出。 g)查询数学与信息技术学院(DEPT_ID为07)或物理与电子工程学院 (DEPT_ID为09)姓张的学生的信息。。 h)查询所有核心课程(课程名中带*的)的情况。 i)查询缺少了成绩的学生的学号和课程号,查询结果按课程号升序排列。 (2)在SQL Server查询分析器中,用T-SQL语句实现下列数据联接查询操作: a)查询每个学生的情况以及他(她)所选修的课程。 b)查询学生的学号、姓名、选修的课程名及成绩。 c)查询选修C语言程序设计且成绩为85分以上的学生学号、姓名及成绩。 d)查询和学生柏文楠是同一个民族的学生(用自身联接实现)。 e)分别用等值联接和内联接查询有授课记录的老师的姓名。 f)用外联接查询所有老师的授课情况,输出老师的工号、姓名、职称、院 系、担任的课程号和授课的学期,结果按院系和职称升序排列。如果该 老师没有授课历史,在课程号和授课的学期中显示空值 (3)在SQL Server Management Studio中新建查询,完成以上查询命令的同时,熟悉SQL编 辑器工具栏中各快捷按钮的作用。 (4)按要求完成实验报告。

相关文档