|
file:///C:\Users\57414\AppData\Local\Temp\ksohtml9780\wps1.png 软件工程实训—数据库模块测试题 一 测试目的 1.熟悉Microsoft SQL Server Management Studio的基本操作,练习在SSMS中使用T-SQL语句完成相应的数据查询操作; 2.掌握T-SQL语句的基本命令,掌握数据表的创建,数据查询等基本语句; 3.熟悉数据更新语句,掌握数据的插入、删除和修改的基本命令; 4.掌握T-SQL语句的连接查询、子查询等; 5.熟悉使用T-SQL语言编写函数、存储过程等编程对象; 6.掌握使用T-SQL语言完成数据库应用系统开发中的实际查询要求。 使用录屏软件: 打开录屏软件,不要录制声音,考试一开始就录屏,整个考试过程全程录屏,不得随意重启机器或者停止录屏软件;录屏文件保存于‘D:\’盘下,文件名为“学号_姓名_数据库模块测试录屏”(如学号为“170101010101”,则文件名为:“170101010101_张三_数据库模块测试录屏);操作命令和操作结果保存为“学号_姓名_数据库模块测试.txt”(如“170101010101_张三_数据库模块测试.txt”)的文本文件,录屏文件和文本文件一起作为考试结果提交,作为评分的依据。将这两个文件压缩,文件名为:170101010101_张三_数据库模块测试.rar,提交到指定的位置。如果录屏文件不完整,影响改卷判分,由考生自己负责。 测试过程中,不准上网,不准使用任何聊天和通信工具,不准使用U盘、移动硬盘等移动存储设备,考生必须独立完成,否则按作弊论处。 开启SSMS,使用windows身份验证登录,运行以下命令,然后把运行结果拷贝到上面要求创建的txt文件的最开始位置: SQLserver环境下运行的语句: Print '显示结果如下:'; print getdate(); print user_id( ); print user_name( ); print @@Servername; print @@spid; print host_id( ); print host_name( ); print suser_sid( ); print suser_name( ); print @@DBTS; print '下面开始答题'; MYSQL环境下运行的语句: select user(), current_user(), current_timestamp(), version(), connection_id(), session_user(), database(); 将执行后的结果全部直接拷贝到上面创建的文本文件中,不需要做任何编辑。 二 测试平台 操作系统:Windows 2003、Windows 7或者Windows 10,数据库管理系统使用SQL Server 2012以及SSMS。 三 测试内容及要求 第一大题:登录服务器并创建架构 1.使用SSMS登录本机的SQL Server数据库服务器,用Windows身份验证登录,然后创建登录stu_学号(假如学号是1700000001,那么登录名就是stu_1700000001,密码自己设置),并创建数据库test20200422_java,把stu_学号登录映射为test20200422_java数据库的拥有者,然后再用stu_学号登录本机数据库,按以下步骤依次完成各题。 2. 用stu_学号用户成功登录数据库服务器后,在服务器的test20200422_java数据里,创建架构SH_姓名(假如姓名是张三,那么架构名就是SH_张三),架构的拥有者是stu_学号用户,把用户stu_学号的默认架构改为SH_姓名,下面所有对象都在各自对应的架构下完成;假如姓名是张三,那么所有对象就放到架构SH_张三下面; 第二大题:完成创建表和查询数据的操作 1.使用SQL语句创建满足要求的数据表; 建立班级表(Class)、学生表(Stu)和学分信息表(Credit),表结构:表Class包含班级编号:Cid,班级名称:Cname这两列,其中Cid是主键;表Stu包含三个字段:学号:Sid, 姓名:Sname,班级编号:Cid,其中Sid为主键,Cid为外键;表Credit包含两个字段:Sid,学分:Credit,Sid表示“学号”,是主键,也是参照Stu表的外键;写出创建上面三个表的SQL语句,列的数据类型自己设计; 2.在上面三个表中分别插入数据,数据的内容如下,根据表的结构,要不数据分别传入到不同的表中。(为了验证查询的结果是否正确,可以插入比下面要求的更多的数据行) 记录内容如下: 学号 姓名 班级编号 班级名称 学分 1 Jack AA01 17软工 158 2 Cat AA01 17软工 145 3 Jame AA02 17计算机 180 5 John AA03 17网工 160 7 Hiton AA04 17数字媒体 null 其中Make还没有参加考试,在Credit表中没有学分,写出完成插入以上数据的SQL语句; 3.根据上面三个表的内容,分别写出完成下面查询要求的SQL语句; (1)找出姓名为Tim的学生的学分数;将此创建为视图,命名为vi_1; (2)找出学分最低的学生的学号、姓名,班级名称;将此创建为视图,命名为vi_2; (3)找出学分为前2名的学分、学号和学生姓名,将此创建为视图,命名为vi_3; (4)输出所有学生的学分信息,结果显示如下图所示;将此创建为视图,命名为vi_4; Jack 158 Cat 145 Jame 180 John 160 Hiton null (5)查询出每个班级中学分最低的学生的学号、姓名和学分;将此创建为视图,命名为vi_5; 4.创建存储过程:设计一个存储过程,可以根据学生的学号,和给定的学分值,把学分信息表中对应学号学生的学分改为给定的值,如果给定的学号的学生不存在,应该提示修改失败。创建该存储过程,命名为usp_1;并调用该存储过程,把3号学生的学分改为185; 5.修改表Calss; 在Class表中增加表示班级总人数的列Cnum,并将学生表中对应班级的学生总数填写到Cnum列上; 6.删除数据; (1)删除Credit表中Jim的学分记录,将此创建为存储过程,命名为usp_2; (2)删除Credit表中学分最低的学分记录,将此创建为存储过程,命名为usp_3; 7.创建一张新表Stu_Credit,将所有学分大于150的学生的Sid,Sname,Credit信息插入到新表Stu_Credit中。将此语句创建为存储过程,命名为usp_4; 第三大题:权限管理 假设对于数据库test20200422_java,开发人员(用户)user_d1, user_d2, user_d3, user_d4,需要该数据库上的增、删、改、查权限;测试人员user_t1, user_t2, user_t3, user_t4, user_t5只需要对该数据库的增、删、改权限;普通用户user_1, user_2, user_3, user_4, user_5对该数据库只有查询权限。假设你是DBA,根据以上要求,设计一个权限管理方案。写出实现该方案的完整脚本。 第四大题:使用递归的CTE 假设有部门信息表,表结构为Department(DeptID:部门编号、DeptName:部门名称、ParID:上级部门编号) 其中DeptID为主键;录入数据记录如下。 DeptID DeptName PartID D01 广州办事处 D08 D02 深圳办事处 D08 D03 武汉办事处 D09 D04 郑州办事处 D09 D05 第一生产科 D11 D06 第二生产科 D11 D07 华东分部 D12 D08 华南分部 D12 D09 华中分部 D12 D10 采购部 D14 D11 生产部 D14 D12 销售部 D14 D13 财务部 D14 D14 晨宇服装公司 D16 D15 晨宇贸易公司 D16 D16 晨宇集团总公司 NULL 1. 使用SQL语句,创建上面的数据表,列的数据类型自己选择,表放到上面自己创建的架构里,并录入相应的数据。 2. 请写出一个递归的CTE,显示每个部门在组织架构表中的层级,完成后的显示效果如下图所示。
作业提交说明: 把完成上面每个题目的脚本,根据题号,保存到一个文本文件中,例如: 1. …… 2. …… 3. …… …… 文本文件的名字为:学号_姓名_数据库模块测试.txt 把录屏结果文件命名为:学号_姓名_数据库模块测试录屏.exe 把上面两个文件压缩成一个rar包,命名为:学号_姓名_数据库模块测试.rar
题目下载地址:
答案下载地址: 游客,本付费内容需要支付 100金币 才能浏览 支付
|