实验七创建和操作数据库对象

上传人:第*** 文档编号:34053323 上传时间:2018-02-20 格式:DOCX 页数:8 大小:358.65KB
返回 下载 相关 举报
实验七创建和操作数据库对象_第1页
第1页 / 共8页
实验七创建和操作数据库对象_第2页
第2页 / 共8页
实验七创建和操作数据库对象_第3页
第3页 / 共8页
实验七创建和操作数据库对象_第4页
第4页 / 共8页
实验七创建和操作数据库对象_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《实验七创建和操作数据库对象》由会员分享,可在线阅读,更多相关《实验七创建和操作数据库对象(8页珍藏版)》请在金锄头文库上搜索。

1、软件学院实 验 报 告课程: 数据库原理与实用技术实验 实验 7 创建和操作数据库对象实验 7-1 存储过程1、使用不带参数的存储过程(1)创建一个存储过程 my_proc,查询“学生表”中所有计算机系女生的学号、姓名、性别、年龄和所在院系create proc my_proc as select 学号, 姓名,性别,年龄, 所在院系 from 学生表where 所在院系 =计算机 and 性别=女(2)执行存储过程(3)修改存储过程,使其能够查询计算机系女生的所有基本信息alter proc my_proc as select * from 学生表where 所在院系 =计算机 and 性别

2、=女2、带输入参数的存储过程(1)创建一个存储过程 my_procsex,使其能够查询“学生表 ”中男学生或女学生的学号、姓名、性别、年龄和所在院系create proc my_procsex sex char(2) asselect 学号,姓名,性别,年龄, 所在院系 from 学生表 where 性别= sex(2)执行存储过程exec my_procsex sex=男3、带输入/输出参数的存储过程(1)创建一个存储过程 my_procage,使其能够根据学生姓名,查询学生年龄。 (考虑当学生不存在时给出提示信息)create proc my_procage name char(10),a

3、ge int OUTPUT asif not exists(select * from 学生表where 姓名=name) return -155select 年龄from 学生表 where 姓名=name (2)执行存储过程declare once_age int, status intexec status=my_procage name=陈忠刚 ,age=once_age output if status=-155print 对不起,您输入的名字查找失败!print the output data is:+convert(varchar(10),once_age)declare onc

4、e_age int, status intexec status=my_procage name=李涛 ,age=once_age output if status=-155print 对不起,您输入的名字查找失败!print the output data is:+convert(varchar(10),once_age)4、返回状态值的存储过程(1)创建一个存储过程 my_procstatus,使其能够根据学生姓名,查询学生的选课信息。(如果没有输入学生姓名,返回状态码 55;如果输入的学生姓名不存在,则返回状态码-155)alter proc my_procstatus name cha

5、r(10) as if name =return 55else if not exists(select * from 学生表where 姓名=name)return -155select 学号,课程号 from 成绩表 where 学号 in (select 学号 from 学生表 where 姓名=name )(2)执行存储过程:接收存储过程返回的状态码,如果返回的状态码为 55 则输出提示信息“没有输入名字!” ;如果返回的状态码为-155,则输出“没找到!” 。declare status intexec status=my_procstatus name=if status=55pr

6、int=没有输入名字!else if status=-155print没有找到!declare status intexec status=my_procstatus name=陈忠刚if status=55print=没有输入名字!else if status=-155print没有找到!(3)删除存储过程5、在存储过程中使用临时表,不指定题目,请理解全局临时表与局部临时表的区别1、局部临时表(#开头)只对当前连接有效,当前连接断开时自动删除。 2、全局临时表(#开头)对其它连接也有效,在当前连接和其他访问过它的连接都断开时自动删除。 3、不管局部临时表还是全局临时表,只要连接有访问权限,都

7、可以用 drop table #Tmp(或者 drop table #Tmp)来显式删除临时表6、使用存储过程对规则进行绑定与解除绑定操作(1)修改“学生管理数据库”中的“学生情况表” ,添加属性“入学日期” 。将规则Enter_University_date_rule 与入学日期进行绑定(2)在该表中插入数据记录学号 姓名 性别 年龄 专业 家庭地址 入学日期200803001 王艳 女 19 计算机 昆明市正义路 3号2008-8-27查看执行结果(3)解除绑定,再次插入该数据,查看执行结果。7、使用存储过程对默认进行绑定与解除绑定操作(1)将默认对象“Time_default”和“Age

8、_default ”与上表中的“入学日期”和“年龄”进行绑定,并插入数据学号 姓名 性别 年龄 专业 家庭地址 入学日期200412056 张浩 男 通信 沈阳市青年路 2号查看执行结果(2)解除绑定,再次插入该数据,查看执行结果。实验 7-2 视图的创建与使用1.创建一个名为 stud_view1 的视图,从“学生管理数据库”的学生表中查询出性别为男的所有学生的学号,姓名,性别,班级,家庭住址,入学时间和出生年月。create view stud_view1 as select 学号,姓名, 性别,班级,入学日期 from 学生 where 性别=男2创建一个名为 stud_view2 的视

9、图,查询出选修了高等数学的所有同学的选课信息,包括学号,姓名,成绩。create view stud_view2 as select 学生表.学号,学生表.姓名,成绩表. 成绩from 成绩表 join 学生表 on 成绩表.学号= 学生表.学号where 课程号 in(select 课程号 from 课程表 where 课程名= 高等数学)3从视图 stud_view1 中查询出软件 2 班肖一竹的资料。4向视图 stud_view2 中插入一行数据:学号为 9940210,姓名为钱丽,成绩为 71,结果是什么?5修改视图 stud_view1,将 9940201 号同学的性别更改为女。然后

10、再次查询学生表和视图 stud_view1,看结果有何改变,为什么?结果便是变为了显示从“学生管理数据库”的学生表中查询出性别为女的所有学生的学号,姓名,性别,班级 入学日期。应为建立视图的时候,from 后面只跟了一张表,所以可以对视图进行更新。6. 完成教科书 457 页如下习题:7.5a:三条 SQL 语句都不合法,因为它们的创建视图语句中的 from 后面都跟了多张表,所以创建的视图不是可更新视图。7.5b:create view agentview as select * from agentswhere percent=0 with check option7.5c:7.5d:cr

11、eate view vproducts as select pid,pname,city,quantity from products;7.9:违反了规则 5,不能够含有 salary1+salary2 这种列,这样的话,如果我们对视图进行更新以后就无法使原始表进行同步的更新,因为知道 salary1+salary2 的值,无法知道salary1 与 salary2 人别的值。7.12: 7.15a:7.15b:update returns set discant=10 where cid=c0017.15c:7.15d:create view profits as select ordno,cid,aid,pid,0.4*qty*price-(percent/100)*(discnt/100)*0.4*qty*price as profitsfrom returns

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号