《数据库上机实验》由会员分享,可在线阅读,更多相关《数据库上机实验(5页珍藏版)》请在金锄头文库上搜索。
1、数据库上机实验附录C上机实验C、1第4章上机实验下列实验均使用SQLServer得SSMS工具实现。1。用图形化方法创建符合如下条件得数据库(创建数据库得方法可参见本书附录A):数据库名为:学生数据库主要数据文件得逻辑文件名为:Students_data存放在D:Data文件夹下(若D:盘中无此文件夹,请先建立此文件夹,然后再创建数据库。),初始大小为:5MB,增长方式为自动增长,每次增加1MB。日志文件得逻辑文件名字为:Students_log,也存放在D:Data文件夹下,初始大小为:2MB,增长方式为自动增长,每次增加10%。2。选用已建立得“学生数据库,写出创建满足表C-1到44条件得
2、表得SQL语句,并执行所写代码。(注:“说明”部分不作为表定义内容)数据类型学号普通韻码左长字粵串.长度为了主推Snaac姓名普通编码立也寒弩弗,也度宜】0Sitx性别普通弱码定长字粵申,长度為2找值范碉:曬X;Ea我年龄邀整型:tinymt)取值范帕1:15-45Sdspt所在策普通醍码不宦世字罄吕.杜度沁20默认値判”讣第机素Sid普通彖码疋长主畔串.长度沁现I不童Sdate人学日期日折列名说明数据类型Cno勰号曾逋编再定长字苻串,长反为10Cume普迪塢码不定长字符串,长度为非空Crscit学河数專值丸于DSeriester学分列名说明数揺类蛰Sr:c.晋通鋼码走长字蔚鳥长.度为7主镇.
3、引用St趾紺卜谴那程号普通霜関足长字符駁畏授海W主館弓月色1毎険得挣融trad?小雅型収值范丽为Q100引名说明塹据类型封束Tno斷号曾通編叫电长字符串,长度为客非空Inanie普通编码屯长字符串,拴度为Q耀非空Sa1Dry工资定点昴埶樟点前4龜小数点后2拉3在Teacher表中添加一个职称列,列名为:Title,类型为nchar(4).(2)为Teacher表中得Title列增加取值范围约束,取值范围为:教授,副教授,讲师。(3)将Course表中Credit列得类型改为:tinyint.(4)删除Student表中得Sid与Sdate列。(5)为Teacher表添加主键约束,其主键为:Tn
4、o0C、2第5章上机实验本实验均在SQLServer得SSMS工具中实现首先在已创建得“学生数据库”中创建本章表5153所示得Student、Course与SC表,并插入表5456所示数据,然后编写实现如下操作得SQL语句,执行所写得语句,并查瞧执行结果.1查询SC表中得全部数据。2查询计算机系学生得姓名与年龄。3查询成绩在7080分得学生得学号、课程号与成绩。4查询计算机系年龄在1820岁得男生姓名与年龄。5查询C001课程得最高分。6查询计算机系学生得最大年龄与最小年龄。7统计每个系得学生人数。8统计每门课程得选课人数与最高成绩。9统计每个学生得选课门数与考试总成绩,并按选课门数升序显示结
5、果。10列出总成绩超过200得学生得学号与总成绩。11查询选了C002课程得学生姓名与所在系。12查询考试成绩80分以上得学生姓名、课程号与成绩,并按成绩降序排列结果。13. 查询与VB在同一学期开设得课程得课程名与开课学期。14. 查询与李勇年龄相同得学生得姓名、所在系与年龄。15. 查询哪些课程没有学生选修,列出课程号与课程名。16. 查询每个学生得选课情况,包括未选课得学生,列出学生得学号、姓名、选得课程号17. 查询计算机系哪些学生没有选课,列出学生姓名。18查询计算机系年龄最大得三个学生得姓名与年龄。19. 列出“VB”课程考试成绩前三名得学生得学号、姓名、所在系与VB成绩20. 查
6、询选课门数最多得前2位学生,列出学号与选课门数.21. 查询计算机系学生姓名、年龄与年龄情况,其中年龄情况为如果年龄小于18,则显示“偏小”;如果年龄在18-22,则显示“合适”;如果年龄大于22,则显示“偏大”。22.统计每门课程得选课人数,包括有人选得课程与没有人选得课程,列出课程号,选课人数及选课情况,其中选课情况为:如果此门课程得选课人数超过100人,则显示“人多”;如果此门课程得选课人数在40100,则显示“一般”;如果此门课程得选课人数在140,则显示“人少;如果此门课程没有人选,则显示“无人选”。23查询计算机系选了VB课程得学生姓名、所在系与考试成绩并将结果保存到新表VB_Gr
7、ade中。24. 统计每个系得女生人数,并将结果保存到新表Girls中.25. 用子查询实现如下查询:(1)查询选了“C001”课程得学生姓名与所在系.(2) 查询通信工程系成绩80分以上得学生得学号与姓名0(3) 查询计算机系考试成绩最高得学生得姓名0(4) 查询年龄最大得男生得姓名、所在系与年龄。26. 查询C001课程得考试成绩高于该课程平均成绩得学生得学号与成绩.27. 查询计算机系学生考试成绩高于计算机系学生平均成绩得学生得姓名、考试得课程名与考试成绩。28查询VB课程考试成绩高于VB平均成绩得学生姓名与VB成绩。29. 查询没选VB得学生姓名与所在系。30. 查询每个学期学分最高得
8、课程信息,列出开课学期、课程名与学分.31. 查询每门课程考试成绩最高得学生信息,列出课程号、学生姓名与最高成绩,结果按课程号升序排序,不包括没考试得课程。32. 创建一个新表,表名为test,其结构为(COL1,COL2,COL3),其中,COL1:整型,允许空值。COL2:普通编码定长字符型,长度为10,不允许空值.COL3:普通编码定长字符型,长度为10,允许空值。试写出按行插入如下数据得语句(空白处表示就是空值)。20L1CDL2C0L3BL1C?213333. 利用23题建立得VB_Grade表,将信息管理系选了VB课程得学生姓名、所在系与考试成绩插入到VB_Grade表中。34.
9、将所有选修C001课程得学生得成绩加10分。35. 将计算机系所有学生得“计算机文化学得考试成绩加10分。36. 修改“VB”课程得考试成绩,如果就是通信工程系得学生,则增加10分;如果就是信息管理系得学生则增加5分,其她系得学生不加分。37删除成绩小于50分得学生得选课记录.38.删除计算机系VB考试成绩不及格学生得VB选课记录。39删除“VB”考试成绩最低得学生得VB修课记录.40删除没人选得课程得基本信息。C、3第6章上机实验下列实验均使用SQLServer得SSMS工具实现。利用第4章上机实验创建得“学生数据库”中Student、Course与SC表,完成下列实验。1写出实现下列操作得
10、SQL语句,并执行所写代码。(1) 在Student表上为Sname列建立一个聚集索引,索引名为:IdxSno。(提示:若执行创建索引得代码,请先删除该表得主键约束)(2) 在Course表上为Cname列建立一个唯一得非聚集索引,索引名为:IdxCN(3) 在SC表上为Sno与Cno建立一个组合得聚集索引,索引名为:ldxSnoCno.(提示:若执行创建索引得代码,请先删除该表得主键约束)(4) 删除Sname列上建立得IdxSno索引。2写出创建满足下述要求得视图得SQL语句,并执行所写代码。(1) 查询学生得学号、姓名、所在系、课程号、课程名、课程学分.(2) 查询学生得学号、姓名、选修
11、得课程名与考试成绩。(3) 统计每个学生得选课门数,要求列出学生学号与选课门数(4) 统计每个学生得修课总学分,要求列出学生学号与总学分(说明:考试成绩大于等于60才可获得此门课程得学分)。3利用第2题建立得视图,完成如下查询。(1) 查询考试成绩大于等于90分得学生得姓名、课程名与成绩。(2) 查询选课门数超过3门得学生得学号与选课门数。(3) 查询计算机系选课门数超过3门得学生得姓名与选课门数。(4) 查询修课总学分超过10分得学生得学号、姓名、所在系与修课总学分。(5) 查询年龄大于等于20岁得学生中,修课总学分超过10分得学生得姓名、年龄、所在系与修课总学分。4修改第3题(4)定义得视
12、图,使其查询每个学生得学号、总学分以及总得选课门数C、4第7章上机实验利用第5章建立得学生数据库以及Student、Coures与SC表,完成下列操作。1创建满足如下要求得后触发型触发器。(1) 限制学生得考试成绩必须在0100之间.(2) 限制不能删除成绩不及格得考试记录。(3) 限制每个学期开设得课程总学分不能超过20.(4) 限制每个学生每学期选得课程不能超过5门。2创建满足如下要求得存储过程。(1)查询每个学生得修课总学分,要求列出学生学号及总学分。(2) 查询学生得学号、姓名、修得课程号、课程名、课程学分,将学生所在得系作为输入参数执行此存储过程,并分别指定一些不同得输入参数值.(3
13、) 查询指定系得男生人数,其中系为输入参数,人数为输出参数。(4) 删除指定学生得修课记录,其中学号为输入参数。(5) 修改指定课程得开课学期输入参数为:课程号与修改后得开课学期。C、5第11章上机实验利用第4、5章建立得学生数据库与其中得Student、Course、SC表,并利用SSMS工具完成下列操作。1.用SSMS工具建立SQLServer身份验证模式得登录名:Iog1、丨og2与log3.2用丨og1建立一个新得数据库引擎查询,在“可用数据库”下列列表框中就是否能选中学生数据库?为什么?3用系统管理员身份建立一个新得数据库引擎查询,将og1、Iog2与Iog3映射为学生数据库中得用户
14、,用户名同登录名4在logl建立得数据库引擎查询中,现在在,可用数据库”下列列表框中就是否能选中学生数据库?为什么?5在log1建立得数据库引擎查询中,选中学生数据库,执行下述语句,能否成功?为什么?SELECT*FROMCourse6在系统管理员得数据库引擎查询中,执行合适得授权语句,授予logl具有对Course表得查询权限,授予丨og2具有对Course表得插入权限。7用log2建立一个新得数据库引擎查询,执行下述语句,能否成功?为什么?INSERTINTOCourseVALUES(C1001,数据库基础,4,5)再执行下述语句,能否成功?为什么?SELECT*FROMCourse8在丨og1建立得数据库引擎查询中,再次执行下述语句:SELECT*FROMCourse这次能否成功?但如果执行下述语句:INSERTINTOCourseVALUES(C103,软件工程,4,5)能否成功?为什么?9og3建立一个新得数据库引擎查询,执行下述语句,能否成功?为什么?CREATETABLENewTable(C1int,C2char(4)10. 授予log3在学生数据库中具有创建表得权限。11. 在系统管理员得数据库引擎查询中,执行下述语句:GRANTCREATETABLETOlog3GOCREATESCHEMAlog3AUTHORIZATIONlo