《《数据库原理及应用》实验报告(1-21).doc》由会员分享,可在线阅读,更多相关《《数据库原理及应用》实验报告(1-21).doc(34页珍藏版)》请在三一文库上搜索。
1、数据库原理及应用实验报告实验课程: 数据库原理及应用 学 号: 学生姓名: 班 级: 2014年 月 日实验一 创建和维护数据库一、实验目的(1)掌握在Windows 平台下安装与配置MySQL 5.5 的方法。(2)掌握启动服务并登录MySQL 5.5 数据库的方法和步骤。(3)了解手工配置MySQL 5.5 的方法。(4)掌握MySQL 数据库的相关概念。(5)掌握使用Navicat 工具和SQL 语句创建数据库的方法。(6)掌握使用Navicat 工具和SQL 语句删除数据库的方法。二、实验要求(1)学生提前准备好实验报告,预习并熟悉实验步骤;(2)遵守实验室纪律,在规定的时间内完成要求
2、的内容;(3)12人为1小组,实验过程中独立操作、相互学习。三、实验内容及步骤(1)在Windows 平台下安装与配置MySQL 5.5.36 版。(2)在服务对话框中,手动启动或者关闭MySQL 服务。(3)使用Net 命令启动或关闭MySQL 服务。(4)分别用Navicat 工具和命令行方式登录MySQL。(5)在my.ini 文件中将数据库的存储位置改为D:MYSQLDATA。(6)创建数据库。 使用Navicat 创建学生信息管理数据库gradem。 使用SQL 语句创建数据库MyDB。(7)查看数据库属性。 在Navicat 中查看创建后的gradem 数据库和MyDB 数据库的状
3、态,查看数据库所在的文件夹。 利用SHOW DATABASES 命令显示当前的所有数据库。(8)删除数据库。 使用Navicat 图形工具删除gradem 数据库。 使用SQL 语句删除MyDB 数据库。 利用SHOW DATABASES 命令显示当前的所有数据库。(9)使用配置向导修改当前密码,并使用新密码重新登录。(10)配置Path 变量,确保MySQL 的相关路径包含在Path 变量中。四、思考题My SQL的数据库文件有几种?扩展名分别是什么?五、实验总结1、收获2、存在的问题实验二 管理表一、实验目的(1) 掌握表的基础知识。(2) 掌握使用Navicat管理工具和SQL语句创建表
4、的方法。(3) 掌握表的修改、查看、删除等基本操作方法。二、实验要求(1)学生提前准备好实验报告,预习并熟悉实验步骤;(2)遵守实验室纪律,在规定的时间内完成要求的内容;(3)12人为1小组,实验过程中独立操作、相互学习。三、实验内容及步骤(1)在gradem数据库中创建表4.18表4.22所示结构的表。表4.18 student表的表结构字段名称数据类型长度小数位数是否允许NULL值说明snochar10否主码snamevarchar8是ssexchar2是sbirthdaydatetime是saddressvarchar50是sdeptchar16是specialityvarchar20是
5、表4.19 course表(课程名称表)的表结构字段名称数据类型长度小数位数是否允许NULL值说明cnochar5否主码cnamevarchar20否表4.20 sc表(成绩表)的表结构字段名称数据类型长度小数位数是否允许NULL值说明snochar10否组合主码、外码cnochar5否组合主码、外码degreedecimal41是1100表4.21 teacher表(教师表)的表结构字段名称数据类型长度小数位数是否允许NULL值说明tnochar3否主码tnamevarchar8是tsexchar2是tbirthdaydate是tdeptchar16是表4.22 teaching表(授课表)
6、的表结构字段名称数据类型长度小数位数是否允许NULL值说明cnochar5否组合主码、外码tnochar3否组合主码、外码ctermtinyint10是110(2) 向表4.18至表4.22输入数据记录,见表4.23表4.27。表4.23 学生关系表studentsnosnamessexsbirthdaysaddresssdeptspeciality20050101李勇男1987-01-12山东济南计算机工程系计算机应用20050201刘晨女1988-06-04山东青岛信息工程系电子商务20050301王敏女1989-12-23江苏苏州数学系数学20050202张立男1988-08-25河北唐
7、山信息工程系电子商务表4.24 课程关系表coursecnocnamecnocnameC01数据库C03信息系统C02数学C04操作系统表4.25 成绩表scsnocnodegree20050101C019220050101C028520050101C038820050201C029020050201C0380表4.26 教师表teachertnotnametsextbirthdaytdept101李新男1977-01-12计算机工程系102钱军女1968-06-04计算机工程系201王小花女1979-12-23信息工程系202张小青男1968-08-25信息工程系表4.27 授课表teach
8、ingcnotnoctermC011012C021021C032013C042024(3) 修改表结构。 向student表中增加“入学时间”列,其数据类型为日期时间型。 将student表中的sdept字段长度改为20。 将student表中的speciality字段删除。 删除student表。(4) 利用SQL命令(create table、alter table、drop table)完成对表的操作利用create talbe 命令完成student表和course表的定义。利用drop table命令实现(3)中的。四、思考题 (1) MySQL中的数据文件有几种?扩展名分别是什么?
9、(2) 在定义基本表语句时,NOT NULL参数的作用是什么?(3) 主码可以建立在“值可以为NULL”的列上吗?五、实验总结:1、收获2、存在的问题实验三 简单查询单表无条件和有条件查询一、实验目的(1) 掌握SELECT语句的基本用法。(2) 使用WHERE子句进行有条件的查询。(3) 掌握使用IN和NOT IN,BETWEENAND和NOT BETWEENAND来缩小查询范围的方法。(4) 利用LIKE子句实现字符串匹配查询。二、实验要求1、学生提前准备好实验报告,预习并熟悉实验步骤;2、遵守实验室纪律,在规定的时间内完成要求的内容;3、12人为1小组,实验过程中独立操作、相互学习。三、
10、实验内容及步骤在上次实验建立的Gradem或Gradem1数据库中完成下面查询:(1) 查询所有学生的基本信息、所有课程的基本信息和所有学生的成绩信息(用三条SQL语句)。(2) 查询所有学生的学号、姓名、性别和出生日期。(3) 查询所有课程的课程名称。(4) 查询前10门课程的课号及课程名称。(5) 查询所有学生的姓名及年龄。(6) 查询所有年龄大于18岁的女生的学号和姓名。(7) 查询所有男生的信息。(8) 查询所有任课教师的姓名(Tname)和所在系别(Tdept)。(9) 查询“电子商务”专业的学生姓名、性别和出生日期。(10) 查询Student表中的所有系名。(11) 查询“C01
11、”课程的开课学期。(12) 查询成绩在8090分之间的学生学号及课号。(13) 查询在1970年1月1日之前出生的男教师信息。(14) 输出有成绩的学生学号。(15) 查询所有姓“刘”的学生信息。(16) 查询生源地不是山东省的学生信息。(17) 查询成绩为79分、89分或99分的记录。(18) 查询名字中第二个字是“小”字的男生的学生姓名和地址。(19) 查询名称以“计算机_”开头的课程名称。(20) 查询计算机工程系和软件工程系的学生信息。四、思考题1、LIKE的通配符有哪些?分别代表什么含义?2、知道学生的出生日期,如何求出其年龄?3、IS能用“=”来代替吗?4、关键字ALL和DISTI
12、NCT有什么不同的含义?四、实验总结:1、收获2、存在的问题实验四 简单查询分组与排序一、实验目的:(1) 利用GROUP BY子句对查询结果分组。(2) 利用ORDER BY子句对查询结果排序。(3) 掌握聚集函数的使用方法。二、实验要求1、学生提前准备好实验报告,预习并熟悉实验步骤;2、遵守实验室纪律,在规定的时间内完成要求的内容;3、12人为1小组,实验过程中独立操作、相互学习。三、实验内容及步骤在Gradem或Gradem1数据库中完成下面查询:(1) 统计有学生选修的课程的门数。 (2) 计算“c01”课程的平均成绩。(3) 查询选修了“c03”课程的学生的学号及其成绩,查询结果按分
13、数降序排列。(4) 查询各个课程号及相应的选课人数。(5) 统计每门课程的选课人数和最高分。(6) 统计每个学生的选课门数和考试总成绩,并按选课门数降序排列。(7) 查询选修了3门以上课程的学生学号。(8) 查询成绩不及格的学生学号及课号,并按成绩降序排列。(9) 查询至少选修一门课程的学生学号。(10) 统计输出各系学生的人数(11) 统计各系学生人数;各系的男、女生人数。(两条命令)(12) 统计各班人数;各班男、女生人数。(两条命令)(13) 统计各系的老师人数,并按人数升序排序。(14) 统计不及格人数超过10人的课程号。统计选修人数超过10人的课程号。(15) 查询软件系的男生信息,
14、查询结果按出生日期升序排序,出生日期相同的按地址降序排序。三、思考题(1) 聚集函数能否直接使用在SELECT子句、HAVING子句、WHERE子句、GROUP BY子句中? (2) WHERE子句与HAVING子句有何不同?四、实验总结:1、收获2、存在的问题实验五、六、七 多表查询一、实验目的(1) 掌握SELECT语句在多表查询中的应用。(2) 掌握多表连接的几种连接方式及应用。二、实验要求1、学生提前准备好实验报告,预习并熟悉实验步骤;2、遵守实验室纪律,在规定的时间内完成要求的内容;3、12人为1小组,实验过程中独立操作、相互学习。三、实验内容及步骤在Gradem或Gradem1数据
15、库中完成下面查询:(1) 查询计算机工程系女学生的学生学号、姓名及考试成绩。(2) 查询“李勇”同学所选课程的成绩。(不考虑重名)(3) 查询“李新”老师所授课程的课程名称。(4) 查询女教师所授课程的课程号及课程名称。(5) 查询至少选修一门课程的女学生姓名。(6) 查询姓“王”的学生所学的课程名称。(7) 查询选修“数据库”课程且成绩在8090分之间的学生学号及成绩。查询姓名?(8) 查询课程成绩及格的男同学的学生信息及课程号与成绩。(9) 查询选修“c04”课程的学生的平均年龄。(10) 查询学习课程名为“数学”的学生学号和姓名。(11) 查询“钱军”教师任课的课程号,选修其课程的学生的
16、学号和成绩。姓名?(12) 查询在第3学期所开课程的课程名称及成绩。(13) 查询“c02”号课程不及格的学生信息。(14) 查询软件系成绩在90分以上的学生姓名、性别和课程名称。(15) 查询同时选修了“c04”和“c02”课程的学生姓名和成绩。三、思考题(1) 指定一个较短的别名有什么好处?(2) 内连接与外连接有什么区别?(3) “=”与IN在什么情况下作用相同?四、实验总结:1、收获2、存在的问题实验八、九 嵌套查询一、实验目的(1) 掌握嵌套查询的使用方法。(2) 掌握相关子查询与嵌套子查询的区别。(3) 掌握带IN谓词的子查询的使用方法。(4) 掌握带比较运算符的子查询的使用方法。
17、二、实验要求1、学生提前准备好实验报告,预习并熟悉实验步骤;2、遵守实验室纪律,在规定的时间内完成要求的内容;3、12人为1小组,实验过程中独立操作、相互学习。三、实验内容及步骤在Grademanager数据库中完成下面查询:(1) 查询计算机系(CS)女学生的学生学号、姓名及考试成绩。(2) 查询“李勇”同学所选课程的成绩。(3) 查询“李新”老师所授课程的课程名称。(4) 查询女教师所授课程的课程号及课程名称。(5) 查询姓“王”的学生所学的课程名称。(6) 查询选修“数据库”课程且成绩在8090分之间的学生学号及成绩。(7) 查询选修“C04”课程的学生的平均年龄。(8) 查询学习课程名
18、为“数学”的学生学号和姓名。(9) 查询“钱军”教师任课的课程号,选修其课程的学生的学号和成绩。(10) 查询在第3学期所开课程的课程名称及成绩。(11) 查询与“李勇”同一个系的同学姓名。(12) 查询学号比“刘晨”同学大,而出生日期比他小的学生姓名。(13) 查询出生日期大于所有女同学出生日期的男同学的姓名及系别。(14) 查询成绩比该课程平均成绩高的学生的学号及成绩。(15) 查询不讲授“C01”课的教师姓名。(16) 查询没有选修“C02”课程的学生学号及姓名。(17) 查询选修了“数据库”课程的学生学号、姓名及系别。(18) 查询“C02”号课程不及格的学生信息。三、思考题(1) 子
19、查询一般分为几种? (2) 相关子查询的执行过程是什么?四、实验总结:1、收获2、存在的问题实验十 数据更新一、实验目的:(1) 掌握利用INSERT命令实现对表数据的插入操作。(2) 掌握利用UPDATE命令实现对表数据的修改操作。(3) 掌握利用DELETE命令实现对表数据的删除操作。二、实验要求1、学生提前准备好实验报告,预习并熟悉实验步骤;2、遵守实验室纪律,在规定的时间内完成要求的内容;3、12人为1小组,实验过程中独立操作、相互学习。三、实验内容及步骤在Gradem或Gradem1数据库中完成下面操作:注意:利用SELECT INTO命令备份Student、SC、Course这3个
20、表,备份表名自定。(1) 向Student表中插入记录(20050203,张静,1981-3-21,女,CS,电子商务)。(2) 插入学号为“20050302”、姓名为“李四”的学生信息。(3) 把计算机系的学生记录保存到表TS中(TS表已存在,表结构与Student表相同)。(4) 将学号为“20050202”的学生姓名改为“张华”,系别改为“CS”,专业改为“多媒体技术”。(5) 将“李勇”同学的专业改为“计算机信息管理”。(6) 将“20050201”学生选修“C03”号课程的成绩改为该课的平均成绩。(7) 把成绩低于总平均成绩的女同学的成绩提高5%。(8) 把选修了“数据库”课程而成绩
21、不及格的学生的成绩全改为空值(NULL)。(9) 删除学号为“20050302”的学生记录。(10) 删除“计算机系”所有学生的选课记录。(11) 删除SC表中尚无成绩的选课记录。(12) 把“张晨”同学的成绩全部删除。三、思考题(1) DROP命令和DELETE命令的本质区别是什么?(2) 利用INSERT、UPDATE和DELETE命令可以同时对多个表进行操作吗?四、实验总结:1、收获2、存在的问题实验十一、十二、十三 第四章综合实验一、实验目的:(1) 进一步掌握SELECT语句的功能及使用方法。(2) 进一步掌握SELECT语句的基本语法和查询条件表示方法;(3) 进一步掌握查询条件种
22、类和表示方法;(4) 进一步掌握连接查询的表示及使用;(5) 进一步掌握嵌套查询的表示及使用;(6) 了解集合查询的表示及使用(7) 进一步掌握利用INSERT命令实现对表数据的插入操作。(8) 进一步掌握利用UPDATE命令实现对表数据的修改操作。(9) 进一步掌握利用DELETE命令实现对表数据的删除操作。二、实验要求1、学生提前准备好实验报告,预习并熟悉实验步骤;2、遵守实验室纪律,在规定的时间内完成要求的内容;3、12人为1小组,实验过程中独立操作、相互学习。三、实验内容及步骤在Grademanager数据库中完成下面操作:(1) 查询以DB_开头,且倒数第3个字符为s的课程的详细情况
23、;Select * from course where cname like db_%s_ _(2) 查询名字中第2个字为阳的学生姓名和学号及选修的课程号、课程名;思考能否用嵌套查询?(3)列出选修了数学或者大学英语的学生学号、姓名、所在院系、选修课程号及成绩; (4) 查询缺少成绩的所有学生的详细情况;(5) 查询与张力(假设姓名唯一)年龄不同的所有学生的信息; (6) 查询所选课程的平均成绩大于张力的平均成绩的学生学号、姓名及平均成绩;Select a.sno,sname,avg(degree) from student a,sc b where a.sno=b.sno group by
24、a.sno having avg(degree)(select avg(degree) from student a,sc b where a.sno=b.sno and sname=张力)(7) 列出只选修一门课程的学生的学号、姓名、院系及成绩;Select a.sno,sname,sdept,degree from student a,sc b where a.sno=b.sno group by a.sno having count(*)=1(8) 查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;Select a.sno,sname,cno from student a,
25、sc b where a.sno=b.sno and cno in (select cno from student a,sc b where a.sno=b.sno and sname=张力)(9) 只选修“数据库”和“数据结构”两门课程的学生的基本信息;Select * from student a,sc b Where a.sno=b.sno and b.sno in(select sno from sc a,course b where o=o and cname=大学英语 and sno in (select sno from sc a,course b where o=o and
26、cname=高等数学) Group by b.sno having count(cno)=2(10) 至少选修“数据库”或“数据结构”课程的学生的基本信息;(11) 列出所有课程被选修的详细情况,包括课程号、课程名、学号及成绩;(12) 查询只被一名学生选修的课程的课程号、课程名;Select cno,cname from course where cno in(select cno from sc group by cno having count(*)=1)(13) 使用嵌套查询列出选修了“数据结构”课程的学生学号和姓名;(14) 使用嵌套查询查询其它系中年龄小于计算机系的某个学生的学生姓
27、名、年龄和系别;(15) 使用ANY、ALL 查询,列出其他院系中比CS系所有学生年龄小的学生;(16) 分别使用连接查询和嵌套查询,列出与张力在一个系的学生的信息;(17) 使用集合查询列出CS系的学生以及性别为女的学生名单;四、实验总结:1、收获2、存在的问题实验十四 索引一、实验目的:(1) 理解索引的概念与类型。(2) 掌握创建、更改、删除索引的方法。(3) 掌握维护索引的方法。二、实验要求1、学生提前准备好实验报告,预习并熟悉实验步骤;2、遵守实验室纪律,在规定的时间内完成要求的内容;3、12人为1小组,实验过程中独立操作、相互学习。三、实验内容及步骤1)使用Navicat图形工具创
28、建、管理索引(1) 在数据库test下创建workinfo表。创建表的同时在id字段上创建名为index_id的唯一性索引,而且以降序的格式排列。workinfo表结构内容如下表所示:字段名字段描述数据类型主键外键非空唯一自增id编号INT(10)是否是是是sname职位名称VARCHAR(20)否否是否否Type职位类别VARCHAR(10)否否否否否Address工作地址VARCHAR(50)否否否否否Wages工资INT否否否否否Contents工作内容INTYTEXT否否否否否extra附加信息TEXT否否否否否(2) 创建索引。为name字段创建长度为10的索引index_name,
29、在type和address字段上创建名为index_t的组合索引。(3)将workinfo表的存储引擎更改为MyISAM类型。(4)删除索引。删除workinfo表的唯一性索引index_id。2) 使用SQL语句创建、管理索引(1) 利用create table语句在test数据库中创建数据表writers,其表结构内容如下表所示。在创建表的同时在w_id字段上添加名称为uniquex的唯一索引。字段名字段描述数据类型主键外键非空唯一自增id编号INT(10)是否是是是w_name作者姓名VARCHAR(20)否否是否否w_address作者地址VARCHAR(50)否否否否否w_age年龄
30、INT否否是否否w_note说明TEXT否否否否否(2)使用alter table语句在w_name字段上建立名称为nameidx的普通索引。(3)使用create index语句在w_address和w_age字段上建立名称为multiidx的组合索引。(4) 删除索引。利用alter table语句将全文索引ftidx删除,利用drop index语句将nameidx索引删除。四、思考题 (1) 数据库中索引被破坏后会产生什么结果?(2) 视图上能创建索引吗?五、实验总结:1、收获2、存在的问题实验十五 视图一、实验目的:(1) 理解视图的概念。(2) 掌握创建、更改、删除视图的方法。(3
31、) 掌握使用视图来访问数据的方法。二、实验要求1、学生提前准备好实验报告,预习并熟悉实验步骤;2、遵守实验室纪律,在规定的时间内完成要求的内容;3、12人为1小组,实验过程中独立操作、相互学习。三、实验内容及步骤1) 使用SQL语句创建、管理视图(1) 创建视图。 创建一个名为sc_view1的视图,从数据库gradem的sc表中查询出成绩大于90分的所有学生选修成绩的信息。 创建一个名为sc_view2的视图,从数据库gradem的sc表中查询出成绩小于80分的所有学生的学号、课程号、成绩等信息。 创建一个名为sc_view3的视图,由数据库gradem的student、course、sc表
32、创建一个显示“20070303”班学生选修课程(包括学生姓名、课程名称、成绩等信息)的视图。 创建一个从视图sc_view1中查询出课程号“c01”的所有学生的视图。 (2) 修改视图的定义。修改视图sc_view1,使其从数据库gradem的sc表中查询出成绩大于90分且第3学期的所有学生选修成绩的信息。(3) 视图的删除。 将视图sc_view1删除。(4) 管理视图中的数据。 从视图sc_view2中查询出学号为“2007030125”、课程号为“a01”的学生选修成绩的信息。 将视图sc_view2中学号为“2007030122”、课程号为“c02”的成绩改为87。 从视图sc_vie
33、w2中将学号为“2007030123”、课程号为“a01”的学生信息删除。2思考题(1) 向视图中插入的数据能进入到基本表中去吗?(2) 修改基本表的数据会自动反映到相应的视图中去吗?(3) 如何保证视图使用的安全性?四、实验总结:1、收获2、存在的问题实验十六 SQL编程一、实验目的:(1) 理解常量与变量的概念;(2) 掌握常量与变量的使用方法;(3) 掌握表达式的使用方法; (4) 理解Transact-SQL流程控制语句的使用;(5) 掌握常用函数的功能及使用方法;二、实验要求1、学生提前准备好实验报告,预习并熟悉实验步骤;2、遵守实验室纪律,在规定的时间内完成要求的内容;3、12人为
34、1小组,实验过程中独立操作、相互学习。三、实验内容及步骤(1) 定义一个整型局部变量iAge和可变长字符型局部变量vAddress,并分别赋值20和“中国山东”,最后输出变量的值,并要求通过注释对批处理中语句的功能进行说明。(2) 通过全局变量获得当前My SQL服务器的版本。(3) 求1100的偶数和。(4) 对于字符串“Welcome to My SQL”,进行以下操作。(查阅联机丛书) 将字符串转换为全部大写。 将字符串转换为全部小写。 去掉字符串前后的空格。 截取从第12个字符开始的10个字符。(5) 使用日期型函数,获得输出结果见表5-8。表5-8 输出结果年份月份日期星期几2009
35、1116星期一(6) 根据sc表中的成绩进行处理:成绩大于等于60分的显示“及格”,小于60分的显示“不及格”,为NULL的显示“无成绩”。(7) 利用SQL条件语句,在student表中查找“李艳”同学的信息,若找到,则显示该生的学号、姓名、班级名称及班主任,否则显示“查无此人”。3思考题(1) 全局变量与局部变量的区别是什么?(2) 使用变量的前提是什么?四、实验总结:1、收获2、存在的问题实验十七 存储过程一、实验目的:(1) 理解存储过程和函数的概念。(2) 掌握创建各种存储过程和函数的方法。(3) 掌握执行存储过程和函数的方法。(4) 掌握查看、修改、删除存储过程和函数的方法。二、实
36、验要求1、学生提前准备好实验报告,预习并熟悉实验步骤;2、遵守实验室纪律,在规定的时间内完成要求的内容;3、12人为1小组,实验过程中独立操作、相互学习。三、实验内容及步骤1) 使用Transact-SQL语句创建存储过程(1) 创建不带参数的存储过程。 创建一个从student表查询班级号为“20070301”班的学生资料的存储过程proc_1,其中包括学号、姓名、性别、出生年月等。调用proc_1存储过程,观察执行结果。 在gradem1数据库中创建存储过程proc_2,要求实现如下功能:存在不及格情况的学生选课情况列表,其中包括学号、姓名、性别、课程号、课程名、成绩、系别等。调用proc
37、_2存储过程,观察执行结果。(2) 创建带输入参数的存储过程。创建一个从student表查询学生资料的存储过程 proc_3,其中包括学号、姓名、性别、出生年月、班级等。要查询的班级号通过执行语句中的输入参数传递给存在过程。其中,“20070303”为要传递给存储过程proc_3的输入参数,也即是要查询的资料的班级号。(3) 创建带输出参数的存储过程。创建一个从sc表查询某一门课程考试成绩总分的存储过程proc_4。在以上存储过程中,要查询的课程号通过执行语句中的输入参数cno传递给存储过程,sum_degree作为输出参数用来存放查询得到的总分。执行此存储过程,观察执行结果。2) 使用Tra
38、nscant-SQL语句查看、修改和删除存储过程(1) 查看存储过程。用户的存储过程被创建以后,可以用系统存储过程来查看其有关信息。 查看存储过程的定义。使用系统存储过程sp_helptext查看存储过程proc_1、proc_3的定义。 使用系统存储过程sp_help查看存储过程proc_1的信息。(2) 修改存储过程。使用ALTER PROCEDURE语句将存储过程proc_1修改为查询班级号为“20070302”班的学生资料。(3) 删除存储过程。将存储过程 proc_1删除。四、实验总结:1、收获2、存在的问题实验十八、十九 触发器一、实验目的:(1) 理解触发器的概念与类型。(2)
39、理解触发器的功能及工作原理。(3) 掌握创建、更改、删除触发器的方法。(4) 掌握利用触发器维护数据完整性的方法。二、实验要求1、学生提前准备好实验报告,预习并熟悉实验步骤;2、遵守实验室纪律,在规定的时间内完成要求的内容;3、12人为1小组,实验过程中独立操作、相互学习。三、实验内容及步骤1) 使用Transcat-SQL语句创建触发器(1) 创建插入触发器并进行触发器的触发执行。为表sc创建一个插入触发器 student_sc_insert,当向表sc插入数据时,必须保证插入的学号有效地存在于student表中,如果插入的学号在student表中不存在,给出错误提示。向表sc中插入一行数据
40、:sno, cno,degree分别是(20070302,c01,78),该行数据插入后,观察插入触发器student_sc_insert是否触发工作,再插入一行数据,观察插入触发器是否触发工作。(2) 创建删除触发器。为表student 创建一个删除触发器student_delete,当删除表student中的一个学生的基本信息时,将表sc中该生相应的学习成绩删除。将学生“张小燕”的资料从表student中删除,观察删除触发器student_delete是否触发工作,即sc表中该生相应的学习成绩是否被删除。(3) 创建更新触发器。为student表创建一个更新触发器student_sno,当更改student表中某学号学生的学号时,同时将sc表中该学生的学号更新。将student表中“2007030112”的学号改为“2007030122”,观察触发器student_sno是否触发工作,即sc表中是否也全部改为“2007030122”。2) 查看、删除触发器(1) 查看触发器的定义、状态和语法等相关信息。 利用SHOW TRIGGERS语句查看。 在triggers表中查看触发器的相关信息。(2) 删除触发器。使用DROP TRIGGER删除student_sno触