数据库实验报告--数据查询.doc
《数据库实验报告--数据查询.doc》由会员分享,可在线阅读,更多相关《数据库实验报告--数据查询.doc(6页珍藏版)》请在冰点文库上搜索。
![数据库实验报告--数据查询.doc](https://file1.bingdoc.com/fileroot1/2023-6/27/719bc512-63b9-4abf-81b5-7a549c721ee7/719bc512-63b9-4abf-81b5-7a549c721ee71.gif)
计算机与通信工程学院
实验报告
(软件实验用)
课程名称数据库原理与技术
实验项目名称数据查询
年级大三班级信计
学号姓名
同组姓名
实验日期
指导教师签字
一、实验目的:
熟悉和掌握对数据表中数据的查询操作和SQL命令的使用,学会灵活熟练地使用SQL语句的各种形式;
二、实验内容:
1、简单查询操作
(1)列出所有教授的姓名和工资:
SELECT姓名,工资
FROM教工
WHERE职称='教授'
(2)列出教授的所有信息。
SELECT*
FROM教工
WHERE职称='教授'
(3)列出教工表中的系编号并消除重复的元组。
SELECTDISTINCT系编号
FROM教工
(4)已知学分=学时/17,计算每一门课程的学分数。
SELECT课程名称,学时/17AS学分
FROM课程
(5)显示教授的工资和提高10%的工资额。
SELECT姓名,工资,工资*1.1AS'工资*1.1'
FROM教工WHERE职称='教授'
(6)显示田平平同学出生100天的日期。
SELECT姓名,出生年月+100AS'出生年月+100'
FROM学生
WHERE姓名='田平平'
(7)列出教工表中工资在3000元以上的名单。
SELECT姓名
FROM教工
WHERE工资>=3000
(8)列出学生表中1980年1月1日之后出生的学生名单。
SELECT姓名
FROM学生
WHERE出生年月>='1980-1-1'
(9)列出学生表中在1980年1月1日之后出生的男同学名单。
SELECT姓名
FROM学生
WHERE出生年月>='1980-1-1'AND性别='男'
(10)列出教工表中教授或副教授中工资低于3000元的名单。
SELECT姓名
FROM教工
WHERE(职称='教授'OR职称='副教授')AND工资<3000
(11)显示男学生的姓名和所在的系名称。
SELECT姓名,系名称
FROM学生,系
WHERE学生.系编号=系.系编号AND性别='男'
或
SELECT姓名,系名称
FROM学生R,系S
WHERER.系编号=S.系编号AND性别='男'
(12)列出教工中比姜立伟工资低的姓名和工资。
SELECTR.姓名,R.工资
FROM教工R,教工S
WHERER.工资(13)查出所有不是教授的教工姓名。
SELECT姓名
FROM教工
WHERE职称NOTLIKE'教授'
(14)检索工资在1000元到2000元范围内的职工信息。
SELECT*FROM职工
WHERE工资BETWEEN1000AND2000
等价于
SELECT*FROM职工
WHERE工资>=1000AND工资<=2000
(15)按学号的升序,显示系编号等于101的学生信息:
SELECT*
FROM学生
WHERE系编号=101
ORDERBY学号
(16)求教工表中教授工资的平均值。
SELECTAVG(工资)AS平均工资
FROM教工
WHERE职称='教授'
(17)求所有教工的工资总和。
SELECTSUM(工资)AS工资总和
FROM教工
(18)找出教工中最高工资和最低工资。
SELECTMAX(工资),MIN(工资)
FROM教工
(19)显示学生中最早和最晚的出生日期。
SELECTMIN(出生日期),MAX(出生日期)
FROM学生
(20)查询学生的总人数。
SELECTCOUNT(*)AS人数
FROM学生
2、复杂查询
(21)如果要统计成绩表中所有选课的学生人数,即不管一名学生选了几门课程,都只计算一次
SELECTCOUNT(DISTINCT(学号))AS人数
FROM成绩
(22)统计学生表中男生和女生的人数。
SELECT性别,COUNT(*)
FROM学生
GROUPBY性别
(23)统计成绩表中,每一门课程的平均成绩。
SELECT课程编号,AVG(分数)
FROM成绩
GROUPBY课程编号
(24)查询教工表中每一种职称的最高工资和最低工资。
SELECT职称,MAX(工资),MIN(工资)
FROM教工
GROUPBY职称
(25)统计成绩表中选修人数超过2以上的课程编号和人数。
SELECT课程编号,COUNT(*)
FROM成绩
GROUPBY课程编号
HAVINGCOUNT(*)>2
(26)列出成绩表中分数在60以上、选课数大于2且平均分超过70的学号、选课数目和平均分。
SELECT学号,COUNT(课程编号),AVG(分数)
FROM成绩
WHERE分数>=60
GROUPBY学号
HAVINGCOUNT(课程编号)>2ANDAVG(分数)>70
(27)统计“CS”系学生的人数;
(28)统计各系学生的人数,结果按升序排列;
(29)按系统计各系学生的平均年龄,结果按降序排列;
(30)查询每门课程的课程名;
(31)查询无先修课的课程的课程名和学时数;
(32)统计无先修课的课程的学时总数;
(33)统计每位学生选修课程的门数、学分及其平均成绩;
(34)统计选修每门课程的学生人数及各门课程的平均成绩;
(35)找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排
列;
(36)查询选修了“1”或“2”号课程的学生学号和姓名;
(37)查询选修了“1”和“2”号课程的学生学号和姓名;
(38)查询选修了课程名为“数据库系统”且成绩在60分以下的学生的学号、姓名和成绩;
(39)查询每位学生选修了课程的学生信息(显示:
学号,姓名,课程号,课程名,成绩);
(40)查询没有选修课程的学生的基本信息;
(41)查询选修了3门以上课程的学生学号;
(42)查询选修课程成绩至少有一门在80分以上的学生学号;
(43)查询选修课程成绩均在80分以上的学生学号;
(44)查询选修课程平均成绩在80分以上的学生学号;
三、实验平台:
MicrosoftSQLSever
四、设计流程:
1、进入查询分析器,参见进入查询分析器演示。
在查询分析器的命令编辑窗口输入SQL语句,点击执行键►,将执行SQL语句。
参见执行SQL语句的演示。
2、在调试程序过程中,可以用鼠标选择某些要执行的SQL语句,再点击执行键,执行选择的语句。
参见执行SQL语句的演示。
3、注意:
在各个表中插入数据的顺序,首先在父表中插入数据,然后在子表中插入数据。
另外,由于表的定义中包含完整性约束的定义,所以,当主码重复,或者外码不是被参照表的有效值时,系统将拒绝插入的数据。
4、保存调试通过的SQL程序。
五、程序清单:
六、调试和测试结果:
七、教师评语与成绩评定:
5