SQLSERVER上机考试题.docx
《SQLSERVER上机考试题.docx》由会员分享,可在线阅读,更多相关《SQLSERVER上机考试题.docx(7页珍藏版)》请在冰豆网上搜索。
SQLSERVER上机考试题
SQL-SERVER上机考试题
泉州理工职业学院2015-2016学年第二学期期末考
SQLSERVER数据库管理上机操作题
班级:
学号姓名成绩
说明:
1、五答题的题目的答案直接写在相应题目后面,其余的内容直接保存在数据库中。
2、提交的内容包括数据库文件还有该WORD文档。
统一建立一个文件夹以学号+姓名方式命名。
题目:
一、在指定的服务器上创建数据库JYxxxx(其中xxxx为自己的学号,创建方法和数据库参数自定)。
二、在JYxxxx数据库中创建如下的表结构:
1.学生情况表(StudentInfos)结构
列名
说明
数据类型
长度
可否为空
默认值
说明
S_id
学号
Char
7
否
无
主键
S_name
姓名
Char
8
否
无
S_major
专业
VarChar
20
否
无
S_sex
性别
Bit
否
1
男=1,女=0
S_birth
出生日期
smalldatetime
否
无
2.课程表(CourseInfos)结构
列名
说明
数据类型
长度
可否为空
默认值
说明
C_id
课程号
Char
3
否
无
主键
C_name
课程名
Char
20
否
无
C_credit
学分
Tinyint
否
0
3.学生与课程表(StudentCourseInfos)结构
列名
说明
数据类型
长度
可否为空
默认值
说明
S_id
学号
Char
7
否
无
外键(参照学生表中的学号)
C_id
课程号
Char
3
否
无
外键(参照课程表中的课程号)
Sc_grade
成绩
Tinyint
是
0
0≤成绩≤100
三、数据完整性
1、在StudentInfos中,要求性别只能输入0或1。
2、在CourseInfos中,要求学分不能小于1,且不能大于10
3、在StudentCourseInfos中,要求成绩分数在0到100之间(包含0和100)
四、使用语句向数据库JYxxxx的StudentInfos表、CourseInfos表和StudentCourseInfos表中插入或修改成如下数据:
学生情况表(StudentInfos)
学号
姓名
性别
专业
出生日期
4102101
王林
男
计算机
1983-1-23
4102102
吴荣华
女
计算机
1984-3-28
4202103
张强
男
电子
1981-11-19
4202110
王向荣
男
电子
1980-12-9
4202221
李丽
女
电子
1982-7-30
4302101
刘明
男
自控
1982-10-18
4402130
叶凡
男
数学
1983-11-18
课程表(CourseInfos)
课程号
课程名
学分
101
计算机基础
3
102
C语言
5
103
数据库
4
201
离散数学
4
202
计算机网络
4
301
软件工程
4
学生与课程表(StudentCourseInfos)
学号
课程号
成绩
4102101
101
80
4102101
102
89
4102101
103
78
4102102
101
57
4102102
102
67
4202103
103
90
4202110
101
85
4202110
102
91
4202221
101
69
4402130
101
78
4402130
103
74
五、视图操作
1.创建视图V_SCORE1,使其显示计算机专业学生的所有基本信息(性别用中文标识,例如:
1则显示男),并保证以后对该视图的修改都要满足专业为“计算机”这个条件。
2.创建视图V_SCORE2,通过V_SCORE2查看各个专业所有课程的平均成绩,结果格式为:
专业平均成绩
…………
六、数据库关系图
创建视图D_BASE
七、以下题目均在JYxxxx(学生管理)数据库中完成。
并写出操作SQL语句
(一)简单查询
1.查询StudentInfos表中各个同学的姓名、生日和性别。
答:
selectS_name,S_birth,S_sexfromStudentInfos
2.查询StudentInfos表中所有同学的学号、姓名,结果中各列的标题分别指定为num,name。
答:
selectS_idnum,S_namename,C_creditmarkfromStudentInfos
3.查询StudentInfos表中的学生数据来自哪些专业(使用DISTINCT子句消除结果集中的重复行)。
selectDISTINCTS_majorfromStudentInfos
答“
4.查询StudentInfos表中专业为“计算机”的男学生信息。
答:
select
5.查询年龄最小的前三个同学的姓名、专业和生日。
答:
(二)数据汇总
1.求专业为“计算机”的学生的总人数。
答selectcount(*)fromXSwhere专业='计算机'
2.求选修了“101”课程的学生的人数。
答:
selectCOUNT(*)fromXS_KCwhere课程号='101'
3.统计各个专业的学生数。
(按专业分组)
答:
select专业,性别,count(*)as人数fromXSgroupby专业,性别
4.统计各个专业的男女生人数。
格式如下:
专业性别人数
………………
答:
(三)连接查询
1.查询每个学生的基本情况及选修的课程情况,格式如下:
学号姓名专业课程号成绩成绩等级(>=90A;>=80B;>=70C;>=60D;<60D)
………………………………
答:
2.查询“计算机”专业且选修了“计算机基础”课程的学生的学号、姓名及成绩。
答:
selectxs.学号,xs.姓名,xs_kc.成绩fromxsjoinxs_kconxs.学号=xs_kc.学号joinkconxs_kc.课程号=kc.课程号andxs.专业='计算机'andkc.课程名='计算机基础'
3.显示每门课程的平均成绩并显示总平均成绩。
格式如下:
课程名平均成绩
…………
总平均……
答:
selectCASEWHEN(GROUPING(a.课程名)=1)THEN'总平均'ELSEa.课程名ENDAS课程名,avg(b.成绩)as'平均成绩'fromkcajoinxs_kcbona.课程号=b.课程号groupbya.课程名WITHrollup
4.查询各个专业各门课程的平均成绩。
格式如下
专业课程名平均成绩
………………
答:
selecta.专业,c.课程名,avg(b.成绩)as'平均成绩'fromxsajoinxs_kcbona.学号=b.学号joinkcconb.课程号=c.课程号groupbya.专业,c.课程名
5.查询“计算机”专业平均成绩在85分以上的学生的学号、姓名和平均成绩。
答:
selectb.学号,a.姓名,avg(成绩)as'平均成绩'fromxsajoinxs_kcbon(a.学号=b.学号)and(a.专业='计算机')groupbyb.学号,a.姓名havingavg(成绩)>85
6.查找平均成绩在80分以上的学生的学号和平均成绩。
答:
select学号,AVG(成绩)平均成绩fromXS_KCgroupby学号havingAVG(成绩)>80
(四)子查询的使用
1.查询平均成绩高于101号课程平均分的课程号及平均成绩。
答:
select课程号,avg(成绩)'平均成绩'fromxs_kcgroupby课程号havingavg(成绩)>(selectavg(成绩)fromxs_kcgroupby课程号having课程号='101')
2.查找未选修“C语言”课程的学生的情况。
(嵌套子查询)
答:
select*fromxswhere学号notin(select学号fromxs_kcwhere课程号in(select课程号fromkcwhere课程名='C语言'))
3.查找选修了“计算机基础”课程的学生的情况。
答:
select*fromxswhere学号in(select学号fromxs_kcwhere课程号=(select课程号fromkcwhere课程名='计算机基础'))
4.查询“计算机基础”成绩及格的学生的学号、姓名、性别和专业情况。
答:
select学号,姓名,性别,专业fromxswhere学号in(select学号fromxs_kcwhere成绩>=60and课程号=(select课程号fromkcwhere课程名='计算机基础'))
5.查询至少选修了“4102102”同学选修课程的学生的基本信息。
答:
select*fromxswhere学号in(select学号fromxs_kcwhere课程号='4102102')
(五)数据的插入、删除和修改
1.在StudentInfos添加一条自己的信息,并选择数据库课程,以及给自己打分。
答:
2.将StudentCourseInfos表中学号为“4102101”的同学的“计算机基础”课程的成绩增加10分。
答:
updateStudentCourseInfosset成绩=成绩+10where学号='4102101'
3.将StudentCourseInfos表中“软件工程”课程的成绩不及格的信息删除。
答:
(六)SQL基础语法
随机求班上的一个学生的学号。
要求:
1、最终显示学生的学号格式是:
******XX
2、随机出来的学号,必须是班上存在的学生。
排除休学的学生。
答: