资源描述:
《北京理工大学-数据库-实验_3-视图、函数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、(封皮页)北京理工大学数据库实验3主讲老师:赵晓林学生:李经2012/11/214(目录页)实验3:视图、函数13.1作业声明13.2实验目的13.2.1建立“学籍与成绩管理系统”表格13.3实验过程13.3.1计算学生的总学分、总成绩13.3.2建立适当的视图,可以直接单表查询就可以知道学生的总学分总成绩13.3.3建立适当的视图,将所有的表连接起来23.3.4建立单表的视图,练习通过视图来更新、删除数据33.3.5建立多表的视图,练习通过视图来更新、删除数据33.3.6删除视图43.3.7使用系统函数将出生日期变换为年龄输出
2、53.3.8自定义函数53.4实验结论53.5实验体会64实验3:视图、函数3.1作业声明本次作业全部由本人完成,若存在抄袭或雷同现象,本人愿意接受老师相应的处理3.2实验目的3.2.1建立“学籍与成绩管理系统”表格•不建立表之间的参照关系•输入数据,以便在表上进行各种操作;•确定要更新和删除的数据3.3实验过程建立“学籍与成绩管理系统”表格操作,输入数据操作同实验一(取消各表中的主外键)3.3.1计算学生的总学分、总成绩3.3.1.1sql代码selectxs.xmas姓名,sum(kc.xf)as总学分,sum(xk.cj)
3、as总成绩fromxs,kc,xkwherexs.xh=xk.xhandxk.kcbh=kc.kcbhgroupbyxs.xm3.3.1.2结果3.3.2建立适当的视图,可以直接单表查询就可以知道学生的总学分总成绩3.3.2.1sql代码createviewcjd(xm,zxf,zcj)asselectxs.xmas姓名,sum(kc.xf)as总学分,sum(xk.cj)as总成绩fromxs,kc,xkwherexs.xh=xk.xhandxk.kcbh=kc.kcbhgroupbyxs.xmselect*fromcjd43
4、.1.1.1结果3.1.2建立适当的视图,将所有的表连接起来3.1.2.1sql代码createviewalldataasselectxs.xmasxsxm,xs.xb,xs.xh,xs.bj,xb.xmc,kc.kcmc,kc.lx,kc.xf,xk.cj,js.xmasjsxmfromxs,xb,kc,js,xkwherexs.xh=xk.xhandxk.jsbh=js.jsbhandxk.kcbh=kc.kcbhandjs.jsbh=xk.jsbhandxs.xdh=xb.xdhselect*fromalldata3.1.
5、2.2结果43.1.1建立单表的视图,练习通过视图来更新、删除数据3.1.1.1Sql代码createviewallgirldataasselect*fromxswherexs.xb='女'updateallgirldatasetchrq='1992-04-04'select*fromallgirldataselect*fromxswherexs.xb='女'3.1.1.2结果由上图可知,视图中更新数据后,表中的数据也更新了3.1.2建立多表的视图,练习通过视图来更新、删除数据3.1.2.1Sql代码select*fromall
6、datawherexh='1120100001'--alldata为3.3.3.1中建立的多表视图updatealldatasetcj='0'wherexh='1120100001'select*fromalldatawherexh='1120100001'43.1.1.1结果数据更新成功。若在该视图中执行删除数据操作deletefromalldatawherexh='1120100001'结果为:系统显示消息4405,级别16,状态1,第1行视图或函数'alldata'不可更新,因为修改会影响多个基表。3.1.2删除视图3.1
7、.2.1Sql代码dropviewalldataselect*fromalldatawherexh='1120100001'select*fromxswherexh='1120100001'select*fromxkwherexh='1120100001'3.1.2.2结果消息208,级别16,状态1,第2行对象名'alldata'无效。表示视图已经删除成功由上图可知,删除视图并不会删除视图中对应的数据43.1.1使用系统函数将出生日期变换为年龄输出3.1.1.1Sql代码selectxs.xm,datediff(yy,xs.c
8、hrq,GETDATE())as年龄fromxs3.1.1.2结果3.1.2自定义函数函数功能:输入课程名称,返回选这门课的学生3.1.2.1sqlcreatefunctionxsxk(@kcmcchar(20))returnstableasreturn(sel