实验3数据库 数据查询
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三数据查询
一、实验目的
关系数据库的查询语句是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、查询“信息系”学生的学号、姓名和出生年份(起个别名,不然查询出来的结果会很难看,不信你试试
看,是不是结果表一点规律都没有?)。
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 *
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;
16、查询选修了“数据库原理“这门课程的学生学号、姓名、性别、考试成绩。将结果按照成绩降序排列。Select student.sno,sname,ssex,grade
From student,sc,course
Where student.sno=sc.sno and cname='数据库原理' and o=o
Order by grade desc;
17、查询0905111班学生的选课情况,要求输出选课人的学号、姓名、课程号、课程名、成绩。将查询结果按照学号升序排序。
Select student.sno,sname,o,cname,grade
From student,course,sc
Where student.sno=sc.sno and o=o and left(student.sno,7)=0905111;
18、输出选修了“C5“号课程的的学生成绩单,要求输出学号,姓名,成绩。查询结果按照班级升序、成绩降序排列。
Select student.sno,sname,grade
From student,sc
Where student.sno=sc.sno and o=’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;