实验3数据库 数据查询

更新时间:2024-01-01 08:34:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《数据库原理与应用》0905111、0905112学号_____________________姓名_____________________

实验三 数据查询

一、实验目的

关系数据库的查询语句是SQL语言中最灵活的部分,必须仔细体会,多多上机练习,才能真正体会和理解其中的奥妙和细微差别。本实验的目的就是让同学们通过练习掌握常用的查询语句和查询技巧。 请同学们反复练习,即使做对了也要抽时间再一次细细体会。

二、实验预习

1、SQL中查询语句格式:

select[all|distinct]<目标列表达式>[```] from where

group by<列名>[having<条件表达式>] order by<列名>[asc|desc]

2、连接查询有哪些不同的连接方式?有什么特点。

等值于非等值连接查询:连接运算符为=号时为等值连接,使用其他运算符称为非等值连接 自身连接:连接操作不仅可以在两个表之间进行,也可以在一个表与其自己进行连接 外连接:把舍弃的元组也保存在结果关系中,其他属性上填空值 复合条件连接:where中使用多个连接谓词 三、实验内容和要求

在实验二建立的数据库和数据表(Student、SC、Course)的基础上,用SQL语句完成下列查询,并在SQL SERVER中得以验证:

1、查询全体学生的基本信息。(请写出两种方法) select * from student; 或

select Sno,Sname,Saex,Sage,Sdept from student;

2、现需要一个“计算机系”的点名册,点名册上只要学号、姓名、性别三个方面的信息(记得给出别名,好让查询出来的结果容易识别哦)。 Select Sno 学号,Sname 姓名,Ssex 性别 From student;

3、查询“信息系”学生的学号、姓名和出生年份(起个别名,不然查询出来的结果会很难看,不信你试试

1

《数据库原理与应用》0905111、0905112学号_____________________姓名_____________________ 看,是不是结果表一点规律都没有?)。

select sno 学号,sname 姓名,2013-Sage 出生年份 from student

where sdept=’计算机’;

4、查询1号课程不及格的学生学号。查询结果按照考试成绩降序排列。 Select sno From sc

Where cno=1 and grade<60 Order by grade desc;

5、查询考试有不及格现象的学生的学号。 Select sno From sc Where grade<60;

6、查询一下尚有无考试成绩的学生的学号和相应的课程号。 Select sno,cno From sc

Where grade=null;

7、查询一下哪些学号的学生,选修了课,但还没有参加考试。 Select sno From sc

Where cno!=null and grade=null;

8、将全体学生按年龄升序排序(两种写法)。 Select * From student Order by sage desc; 或

select Sno,Sname,Saex,Sage,Sdept from student order by sage;

9、将全体学生按照系别升序排序,在系名相同的情况下再按照年龄降序排列。 Select *

2

《数据库原理与应用》0905111、0905112学号_____________________姓名_____________________ From student

Order by sdept,sage desc;

10、查询年龄在20-23岁之间的学生的学号、姓名、性别、系别。查询结果按照系别升序、年龄升序排列。 Select sno,sname,ssex,sdept From student

Where sage between 20 and 23 Order by sdept,sage;

11、查询“计算机系”姓“张”的学生的基本信息。 Select * From student

Where sname like ‘张%’and sdept=’计算机’;

12、给0905111班出一个学生点名册。要求给出学号、姓名、性别几个方面的信息。(查询结果照学号升序了吗?不然这点名册会有多么那看啊,你自己试试)。 select sno 学号,sname 姓名,ssex 性别 from student order by sno;

13、查询课程名中有“数据库“字样的课程的基本信息。

Select * From course

Where cname like ‘数据库%’;

14、查询选修过课程的学生总人数。 Select count(distinct sno) From sc;

15、查询已经选修过课程的学生学号和姓名。 Select sname,sc.sno From student,sc

Where student.sno=sc.sno;

3

《数据库原理与应用》0905111、0905112学号_____________________姓名_____________________

16、查询选修了“数据库原理“这门课程的学生学号、姓名、性别、考试成绩。将结果按照成绩降序排列。 Select student.sno,sname,ssex,grade From student,sc,course

Where student.sno=sc.sno and cname='数据库原理' and sc.cno=course.cno Order by grade desc;

17、查询0905111班学生的选课情况,要求输出选课人的学号、姓名、课程号、课程名、成绩。将查询结果按照学号升序排序。

Select student.sno,sname,sc.cno,cname,grade From student,course,sc

Where student.sno=sc.sno and sc.cno=course.cno and left(student.sno,7)=0905111;

18、输出选修了“C5“号课程的的学生成绩单,要求输出学号,姓名,成绩。查询结果按照班级升序、成绩降序排列。

Select student.sno,sname,grade From student,sc

Where student.sno=sc.sno and sc.cno=’C5’ Order by left(student.sno,7),grade desc; 19、查询每个学生的学号、对应的平均成绩。 Select student.sno,avg(grade) From student,sc

Where student.sno=sc.sno Group by student.sno;

20、查询每个课程号及其对应的选课人数、考试最高分、最低分、平均分。

Select cno 学号,count(distinct sno) 选课人数,max(grade) 最高分,min(grade) 最低分,avg(grade) 平均分 From sc Group by cno;

21、查询每个学期及其对应的开课门数、总学分。 Select semester 学期,count(cno),sum(ccredit) From course;

4

《数据库原理与应用》0905111、0905112学号_____________________姓名_____________________ 22、查询每个班的班级号及其对应的班级人数、平均年龄。

提示:可用函数left。如函数LEFT(Sno,3)表示Sno列的左面数前3个字符串) select left(sno,7),count(sno),avg(sage) from student

group by left(sno,7);

23、查询不及格门数超过3门的学生学号。 Select sno From sc Where grade<60 Group by sno Having count(*)>3;

24、查询不及格门数超过3门的学生学号、姓名、性别(2种方法,1班的可在后面嵌套讲完再补第2种方法)。 方法一:

Select student.sno,sname,ssex From student,sc

Where grade<60 and student.sno=sc.sno Group by student sno Having count(*)>3; 方法二:

Select sno,sname, From student

Where sno in( select sno From sc Group by sno

Where count(cno)>3);

25、查询平均成绩在75分以上的学生的学号、姓名、所在系。 Select sno,sname,sdept From student

Where sno in(select sno From sc Group by sno

Where avg(grade)>75);

26、只统计80分以上的选课情况,查询选修了3门以上的学生学号、选课门数。 Select sno,count(cno) From sc Where grade>80 Group by sno

Having count(sno)>3);

27、只统计0905111班的同学:查询每门课程的课程号、选修人数、平均成绩。 Select cno,count(sno),avg(grade) From sc

5

本文来源:https://www.bwwdw.com/article/rqhx.html

Top