武汉轻工大学数据库1508090003实验4报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
武汉轻工大学
经济与管理学院实验报告
实验课程名称
实验起止日期至实验指导教师程红莉
实验学生姓名郑万芳学生班级学号物流管理1501 1508090003
实
验
评
语
实验
评分
教师
签名
年月日
实验项目名称数据完整性实验日期
学生姓名郑万芳班级学号1508090003
一、预习报告(请阐述本次实验的目的及意义)
1.熟悉通过SQL对数据进行完整性控制。
2.完成书本上习题的上机练习。
二、实验方案(请说明本次实验的步骤和进程)
1.用Constraint和Check建立完整性约束条件
教材164页例[7]
Student表的ssex 只允许取‘男’或‘女’
create table student1
(sno char(9) primary key,
sname char(8) not null,
sex char(2) check(sex in('男','女')),
sage smallint,
sdept char(20)
);
教材164页例[8]
create table sc1
(sno char(9),
cno char(4),
grade smallint check(grade>=0 and grade<=100),
primary key(sno,cno),
foreign key(sno)references student1(sno),
foreign key(cno)references course(cno)
);
教材164页例[7]、例[8](给学生表的性别增加约束条件,即只允许“男”或“女”。可用语句: alter table student add constraint course1 check(sex in('男','女'))
alter table sc add constraint course2 check (score>=0 and score<=100)
go
2.建立规则,并绑定到表的字段上
①建立规则gender,该规则限定变量值(如性别)只能取“男”或“女”,然后绑定到student表的sex 字段上
create rule gender as @value in('男','女')
sp_bindrule gender,'student.sex';
②建立规则r_score,该规则规定变量值(如分数)在0到100之间,并将该规则绑定到SC表的score 字段上。
Create rule r_score as @score》=0 and @score<=100
sp_bindrule r_score,'sc.score'
3.建立触发器
建立一个“班级信息表”,该表有“班级编号”,“班级人数”“所属系别”“班主任”等列,并在“学生表”中增加一列“班级编号”,利用触发器使学生表中某班级增加一名学生时,“班级信息表”中该班级的“班级人数”自动增加1。
create table 班级信息
(班级编号 char(4),
班级人数 smallint,
所属系别 char(20),
班主任 char (12))
create trigger T_addnum on student for insert
as update 班级信息 set 班级人数=班级人数+1
where 班级编号=(select 班级编号 from inserted);
三、实验结果分析、改进建议
出现的问题及解决方案:
1.问题:写触发器的时候按照书本的SQL语句来写出现错误。
解决方案:因为书上用的数据库软件和我们现在用的软件不一样所以按老师上课教的稍微改动一下就可以运行了
实验总结:
本次实验主要了解了数据的三类完整性约束(包括实体、参照和用户定义完整性),学会了利用SQL语句对数据进行完整性控制,掌握了触发器的使用。实验中遇到了一些问题,但都在老师和同学的帮助下顺利的解决了,以后要多多练习,争取更熟练的使用SQL SERVER 进行各种操作。
(1)关于规则,需要知道:规则是作为单独的对象创建,然后绑定到列上。一个列只能应用一个规则,但可以应用多个CHECK 约束。
(2)建好表后先把标识列设置了,以免后续出现问题。
(3)使用TSQL语句时,要注意函数中指定的返回表的列中列数据类型和后面SELECT中的数据类型要保持一样,不然会造成某个字段的长度比要插入给该字段的值的长度短。
(4)学会使用触发器
(5)知道了如何分别用菜单命令法和T-SQL语句法来定义主键约束、唯一键约束、检查约束以及外键约束。
(6)学会了如何创建、删除默认值约束,创建、册除规则。
这次实验练习的是数据库完整性,由于有了之前T-SQL语言的学习经验,理解起来好很多,在老师的演示下,我对数据库的完整性有了更深刻的理解,同时对约束、默认值、规则的相关定义有了更深入的认识,和数据库完整性的目的:确保数据库中的数据的一致性和完整性。并能较熟练的使用T-SQL语句进行有关方面的操作。
通过该实验,对于触发器的实现不是很熟悉,对数据库数据完整性验证有了比较熟悉的了解。虽然mssql语法好多和书上不同,但通过查阅资料还是能解决问题。
学生签名:
年月日