数据库实验报告3-SQL Server 安全性验证

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JNU本科实验报告专用纸

课程名称数据库上机实验成绩评定实验项目名称SQL Server 安全性验证指导教师

实验项目编号08060113 实验项目类型验证性实验地点C305 学生姓名学号

学院电气信息学院系专业计算机科学与技术实验时间2011年11月30日下午~月日午温度℃湿度

(一)实验目的

熟悉通过SQL对数据进行完整性控制,完成作业的上机练习。

(二)实验内容和要求

使用SQL对数据进行完整性控制(3类完整性、CHECK短语、CONSTRAIN子句、触发器)。用实验证实,当操作违反了完整性约束条件时,系统是如何处理的。根据以下要求认真填写实验报告,记录所有的实验用例。

(三)主要仪器设备

仪器:计算机

实验环境:Windows7 +SQL Server2008

(四)实验内容与完成情况

1.设计实验内容:

根据实验二的安全性内容所建立的数据库company中的职工表a、部门表b,创建以下两个关系模式,并分别插入相应的数据。

职工表w(职工号,姓名,年龄,职务,工资,部门号)其中职工号为主码;

部门表b2(部门号,名称,经理名,地址,电话号码),其中部门号为主码;

(1)使用SQL语言定义这两个关系模式,并完成以下完整性约束条件的定义;

(a)定义每个模式的主码;

(b)定义参照完整性;

(c)职工的姓名不能为空;

(d)定义职工的年龄最小为18岁,50岁后退休(即不能超过50岁);

(e)职工的工资不能为空,且不能小于1100(2011年珠海最低工作限);

(f)部门名称不能为空且不能重复,定义约束名为UK_dName;

(2)使用SQL语言分别向两个表中插入7行记录,验证上面的各种约束条件;

(3)将职工的年龄改为不能小于16岁,并且不能大于65岁;

(4)定义一个表tbl_Emp_Log(eNO, eSalary, Username, ModiDate);在职工表上定义修改和插入数据的触发器,将插入的职工号和工资数据填入到Emp_log表

中,并记录操作的用户和插入时间;如果修改了职工的工资,也把职工号和修改后的工资数据填入到Emp_log表中,并记录操作的用户和插入时间。使用SQL 语句向职工表中插入数据和修改工资,验证触发器的效果

2.实验步骤:

1).在上次实验的数据库company中创建职工表w和部门表b2。

create table w(

职工号varchar(10)primary key, --(a)定义职工号为职工表的主码;

姓名char(10)not null, --(c)职工的姓名不能为空;

年龄int

constraint w_age check (年龄>18 and年龄<50), --(d)定义职工的年龄不能小于18岁,并且不能超过50岁;

职务char(15),

工资money not null--(e)职工的工资不能为空,且不能小于1100;

constraint w_sa check(工资>1100),

部门号char(50), --(b)定义参照完整性

foreign key(职工号)references w(职工号)

)

create table b2(

部门号char(10)primary key, --定义部门号为部门表的主码;

--(f)部门名称不能为空且不能重复,定义约束名为UK_dName;

名称char(10)not null

constraint UK_dName unique,

经理名char(10),

地址char(50),

电话char(15), --(b)定义参照完整性

foreign key(部门号)references b2(部门号)

)

2)使用SQL语言分别向两个表中插入行记录,验证各种约束条件;

a)验证部门名称不能为空且不能重复,定义约束名为UK_dName;

如图可见,被提示违反约束,终止语句。

b)验证职工的工资不能为空,且不能小于1100;

c)验证职工的姓名不能为空;

d)验证职工的年龄不能小于岁,并且不能超过岁;

3).插入数据后,对部门表b2和职工表w的数据进行查询检查

(上图为部门表b2)

(上图为职员表w)

4).将职工的年龄改为不能小于16岁,并且不能大于65岁;

验证:

由上图可以看出,已成功修改约束。

5)定义一个表tbl_Emp_Log(eNO, eSalary, Username, ModiDate);在--职工表上定义修改和插入数据的触发器。

定义表:

定义插入数据和修改工资的触发器:

(上图为定义插入数据的触发器,下图为定义修改工资的触发器)

这时,我们可以在图形界面刷新后看到触发器:

e11

然后,验证触发器:

通过tbl_Emp_Log表可以看出触发器被成功设置

上图为修改职员的工资,打开职员表查看,可以发现工资被成功修改,见下图:

至此,实验已成功完成使用SQL对数据进行完整性控制并加以验证。实验证实,当操作违反了完整性约束条件时,系统会作出提示违反约束语句,并终止相应的语句。

(五)出现的问题与解决方法

本次实验采用SQL Server2008进行实验,语句编写和课本的有出入。设置触发器时,提示语法错误无法执行。后来在图形界面选择“新建触发器”,根据它的语法提示作出修改,分别定义了插入以及

相关文档
最新文档