数据库原理单表查询实验报告.docx
《数据库原理单表查询实验报告.docx》由会员分享,可在线阅读,更多相关《数据库原理单表查询实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
数据库原理单表查询实验报告
计算机科学与信息学院
软件工程系上机实验报告
《数据库原理》实验报告
题目
实验3单表查询
姓名
***
班级
***
日期
***
实验环境:
SQLServer2000
实验内容与完成情况:
一、实验目的
本实验的目的是使学生掌握SQLServer查询分析器的使用方法,并熟练掌握单表查询、数据排序、聚集函数。
二、实验内容
本实验使用实验二中建立的基本表Student、Course、SC和Teacher中的元组。
Student
学号
Sno
姓名
Sname
性别
Ssex
年龄
Sage
所在系
Sdept
200215121
李勇
男
20
CS
200215122
刘晨
女
19
CS
200215123
王敏
女
18
MA
200215125
张立
男
19
IS
200215126
欧阳丽
女
21
FL
Course
课程号
Cno
课程名
Cname
先行课
Cpno
学分
Ccredit
1
数据库
5
4
2
数学
2
3
信息系统
1
4
4
操作系统
6
3
5
数据结构
7
4
6
数据处理
2
7
PASCAL
6
4
8
DB_Design
1
2
SC
学号
Sno
课程号
Cno
成绩
Grade
200215121
1
92
200215121
2
85
200215121
3
88
200215122
2
90
200215122
3
80
200215122
1
200215123
2
50
200215123
3
70
Teacher
教师编号
Tno
教师
姓名
Tname
性别
Tsex
年龄
Tage
所在系
Tdept
职称
Ttitles
工资
Twage
系主任
编号
Tdno
110001
钟灵
女
27
CS
讲师
2800
110005
110002
杨毅
男
42
CS
副教授
3500
110005
110003
周倩
女
25
CS
讲师
2800
110005
110005
陈文茂
男
48
CS
教授
4000
110005
120001
江南
男
30
IS
副教授
3500
120003
120002
刘洋
男
28
IS
讲师
2800
120003
120003
汪明
男
44
IS
教授
4000
120003
120004
张蕾
女
35
IS
副教授
3500
120003
130001
邹佳羽
女
25
MA
讲师
2800
130003
130002
王力
男
30
MA
讲师
2800
130003
130003
王小峰
男
35
MA
副教授
3500
130003
130004
魏昭
男
40
MA
副教授
3500
130003
140001
王力
男
32
FL
副教授
3500
140005
140002
张小梅
女
27
FL
讲师
2800
140005
140003
吴娅
女
27
FL
讲师
2800
140005
140004
陈姝
女
35
FL
副教授
3500
140005
140005
周斌
男
44
FL
教授
4000
140005
在SQLServer2000查询分析器中,完成如下查询要求:
(1)求全体学生的姓名、性别和所在系。
SELECTSname,Ssex,SdeptFROMStudent;
(2)求该校的所有系名。
SELECTDISTINCTSdeptFROMStudent;
(3)求计科系男生的学号和姓名。
SELECTSno,SnameFROMStudentWHERESsex=’男’andSdept=’CS’;
(4)求年龄在19-21岁(包含19岁和21岁)之间的学生姓名和所在系。
SLELCTSno,SdeptFROMStudentWHERESageBETWEEN19AND21;
(5)求存在先行课的课程的课程名和学分。
SELECTCname,CcreditFROMCourseWHERECpnoISnotNULL;
(6)求数学系或者信息系的学生姓名。
SELECTSnameFROMStudentwhereSdeptin('MA','IS');
(7)求以“数据”开头的所有课程的课程名和学分。
SELECTCname,CcreditFROMCourseWHERECnameLIKE'数据%';
(8)求课程DB_Design的学分。
SELECTCcreditFROMCourseWHERECnameLIKE'DB_Design';
(9)求缺考学生的学号和课程号。
SELECTSno,CnoFROMSCWHEREGradeISNULL;
(10)求选修了2号课程学生的学号和成绩。
SELECTSno,GradeFROMSCWHERECno='2';
(11)求计科系老师的姓名和工资。
SELECTTname,TwageFROMTeacherWHERETdept='CS';
(12)求姓王的老师的姓名和所在系。
SELECTTname,TaddressFROMTeacherWHERETnameLIKE'王%';
(13)求工资在2500-3500之间的老师姓名。
SELECTTname
FROMTeacher
whereTwageBETWEEN2500AND3500;
(14)求外语系所有副教授的姓名和年龄。
SELECTTname,Tage
FROMTeacher
whereTdept='FL'ANDTtitlesLIKE'副教授';
(15)求所有女老师的姓名、年龄和所在系。
SELECTTname,Tage,Tdept
FROMTeacher
WHERETsex='女';
(16)求学生的总人数。
SELECTCOUNT(*)as'学生总人数'
FROMStudent;
(17)求选修了课程的学生人数。
SELECTCno,COUNT(Sno)as'选修该课程的学生人数'
FROMSC
GROUPBYCno;
(18)求课程号和选修了该课程的学生人数。
SELECTCOUNT(DISTINCTSno)as'选修课程的学生人数'
FROMSC;
(19)求教师人数超过4人的系名。
SELECTTdeptas'教师人数超过4人的系'
FROMTeacher
GROUPBYTdept
HAVINGCOUNT(*)>4;
(20)求学生的学号及其选修课程的总成绩。
SELECTSno,sum(Grade)as'总成绩'
FROMSC
GROUPBYSno;
(21)求系名和各系老师的平均年龄。
SELECTTdept,AVG(Tage)as'平均年龄'
FROMTeacher
GROUPBYTdept;
(22)求各门课程课程号和平均成绩。
SELECTCno,AVG(Grade)as'平均成绩'
FROMSC
GROUPBYCno;
(23)求选修课程号为1的学号和成绩,并要求对查询结果按成绩的降序排列,学号的升序排列。
SELECTSno,Grade
FROMSC
WHERECno=1
ORDERBYGradeDESC,SNOASC;
(24)求选修课程号为1且成绩在80~95之间的学生学号和成绩,并且成绩乘以0.8输出,将输出的列名改成“学号”和“成绩*0.8”。
SELECTSnoas'学号',Grade*0.8as'成绩*0.8'
FROMSC
WHERECno=1ANDGradeBETWEEN80AND95
ORDERBYGradeDESC,SNOASC;
(25)求3号课程的最高分。
SELECTMAX(Grade)as'3号课程的最高分'
FROMSC
WHERECno=3;
三、出现的问题及其解决方案(列出遇到的问题和解决办法,列出没有解决的问题)
问题1:
在查询计科系男生的学号和姓名时,提示“’‘”符号处有语法错误。
分析原因:
应该是受符号的中英文输入影响;
解决办法:
将英文的“’”符号改为中文的“‘”,问题解决。