当前位置:文档之家› 数据库实验五 数据查询

数据库实验五 数据查询

数据库实验五 数据查询
数据库实验五 数据查询

《数据库原理及应用》上机实验

实验五数据查询

一、学时

4学时

二、实验类型

综合应用

三、实验目的

了解查询的概念和方法;

掌握查询分析器的使用方法;

掌握对数据表中数据的查询操作和SQL命令的使用,学会灵活熟练的使用SQL 语句的各种形式;

加深理解各种关系运算(尤其是关系的选择,投影,连接和除运算)

四、实验准备

1.熟悉SQL Server2012工作环境;

2.复习对表中数据进行查询操作的SQL语言命令;

五、实验方法及步骤

1.在表student,course,sc上进行简单查询;

2.在表student,course,sc上进行连接查询;

3.在表student,course,sc上进行嵌套查询;

4.使用聚合函数的查询;

5.对数据的分组查询;

6.对数据的排序查询;

7.综合查询。

六、实验内容

在表student,course,sc上完成以下查询:

1.查询学生的基本信息;

SELECT*FROM STUDENT

2.查询“CS”系学生的基本信息;

SELECT*FROM STUDENT WHERE SDEPT ='cs'

3.查询“CS”系学生年龄不在19到21之间的学生的学号、姓名;

SELECT*FROM STUDENT WHERE SDEPT ='cs'AND AGE<19 OR AGE>21

无匹配结果

4.找出最大年龄;

SELECT MAX(AGE)AS'MAX AGE'FROM STUDENT

5.找出“CS”系年龄最大的学生,显示其学号、姓名;

SELECT SNO,SNAME FROM STUDENT WHERE AGE =(SELECT MAX(AGE)FROM STUDENT WHERE SDEPT='CS')

6.查询所有姓王的学生的学号、姓名、所在系;

SELECT SNO,SNAME,SDEPT FROM STUDENT WHERE SNAME LIKE'王%'

7.统计“CS”系学生的人数;

SELECT COUNT(*)AS CS FROM STUDENT WHERE SDEPT ='CS'

8.统计各系学生的人数,结果按升序排列;

SELECT SDEPT,COUNT(*)AS'各系人数'FROM STUDENT GROUP BY SDEPT ORDER BY ASC

9.按系统计各系学生的平均年龄,结果按降序排列;

SELECT SDEPT,AVG(AGE) AVGAGE FROM STUDENT GROUP BY SDEPT ORDER BY AVGAGE DESC

10.查询每门课程的课程名;

SELECT CNAME FROM COURSE

11.统计无先修课的课程的学分总数;

SELECT SUM(CREDIT)AS无先修课总学分FROM COURSE WHERE CPNO IS NULL

12.查询选修了“1”或“2”号课程的学生学号和姓名;

SELECT DISTINCT STUDENT.SNO,SNAME FROM SC,STUDENT WHERE STUDENT.SNO=SC.SNO AND CNO IN('1','2')

13.查询选修了“1”和“2”号课程的学生学号和姓名;

SELECT STUDENT.SNO,SNAME FROM SC,STUDENT WHERE SC.SNO=STUDENT.SNO AND CNO='1'AND STUDENT.SNO IN(SELECT STUDENT.SNO FROM SC,STUDENT WHERE SC.SNO=STUDENT.SNO AND CNO='2')

14.查询选修了课程名为“数据库系统”且成绩在60分以下的学生的学号、姓名和成绩;

SELECT STUDENT.SNO,SNAME,GRADE FROM SC,STUDENT,COURSE WHERE SC.SNO=STUDENT.SNO AND CNAME='数据库系统'AND GRADE <60

15.查询每位选修了课程的学生信息(显示:学号,姓名,课程号,课程名,成绩);

SELECT STUDENT.SNO,SNAME,https://www.doczj.com/doc/6010911140.html,O,CNAME,GRADE FROM SC,STUDENT,COURSE WHERE STUDENT.SNO=SC.SNO AND https://www.doczj.com/doc/6010911140.html,O = https://www.doczj.com/doc/6010911140.html,O

16.查询每位学生的信息(显示:学号,姓名,所在系,课程号,课程名,成绩。包括没选课的学生);

SELECT STUDENT.SNO,SNAME,S DEPT,https://www.doczj.com/doc/6010911140.html,O,CNAME,GRADE FROM SC,STUDENT,COURSE WHERE SC.SNO = STUDENT.SNO AND https://www.doczj.com/doc/6010911140.html,O = https://www.doczj.com/doc/6010911140.html,O UNION

SELECT STUDENT.SNO,SNAME,SDEPT,https://www.doczj.com/doc/6010911140.html,O, CNAME,GRADE FROM STUDENT LEFT OUTER

JOIN SC ON(STUDENT.SNO =SC.SNO)LEFT OUTER JOIN COURSE ON(https://www.doczj.com/doc/6010911140.html,O =https://www.doczj.com/doc/6010911140.html,O)WHERE

https://www.doczj.com/doc/6010911140.html,o IS NULL

17.查询没有选修课程的学生的基本信息;

SELECT*FROM STUDENT WHERE SNO !=ALL(SELECT SNO FROM SC)

18.查询各系年龄最大的学生,显示其学号、姓名;

SELECT SNO, SNAME ,SDEPT FROM STUDENT WHERE AGE =(SELECT MAX(AGE)FROM STUDENT WHERE A.SDEPT = B.SDEPT)

19.查询选修了3门以上课程的学生学号;

SELECT SNO FROM SC GROUP BY SNO HAVING COUNT(*)>3

20.查询选修课程成绩至少有一门在80分以上的学生学号;

SELECT SNO,MAX(GRADE) MAXGRADE FROM SC GROUP BY SNO HAVING MAX(GRADE)>80

21.查询选修课程成绩均在80分以上的学生学号;

SELECT SNO,MIN(GRADE) MINGRADE FROM SC GROUP BY SNO HAVING MIN(GRADE)>80

22.查询选修课程平均成绩在80分以上的学生学号;

SELECT SNO,AVG(GRADE) AVGGRADE FROM SC GROUP BY SNO HAVING AVG(GRADE)> 80

23.统计每位学生选修课程的门数、学分及其平均成绩;

SELECT SNO,COUNT(https://www.doczj.com/doc/6010911140.html,O)'课程总数',AVG(GRADE)'平均成绩',SUM(CREDIT)'总分数' FROM COURSE,SC WHERE https://www.doczj.com/doc/6010911140.html,O=https://www.doczj.com/doc/6010911140.html,O GROUP BY SNO

24.统计选修每门课程的学生人数及各门课程的平均成绩;

SELECT CNO,COUNT(SNO)课程人数,AVG(GRADE)'平均成绩'FROM SC GROUP BY CNO

25.找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排列。

SELECT SC.SNO,SDEPT,AVG(GRADE)'平均成绩'FROM SC,STUDENT WHERE

STUDENT.SNO=SC.SNO GROUP BY SDEPT,SC.SNO HAVING AVG(GRADE)>85 ORDER BY AVG(GRADE) ASC

相关主题
文本预览
相关文档 最新文档