数据库实验报告3-SQL Server 安全性验证
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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进行实验,语句编写和课本的有出入。设置触发器时,提示语法错误无法执行。后来在图形界面选择“新建触发器”,根据它的语法提示作出修改,分别定义了插入以及