桂 林 理 工 大 学
实 验 报 告
班级 软件2班 学号 3162052051734 姓名 梁振宇 同组实验者
实验名称 数据查询 日期 2018年 06 月05 日
一、实验目的:
1. 观察查询结果, 体会SELECT语句实际应用;
2. 要求学生能够在查询分析器中使用SELECT语句进行简单查询。
3. 熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
4. 掌握子查询的表示。
5. 熟练掌握数据查询中的分组、统计、计算和组合的操作方法。
二、实验环境:
SQL Server 2017
三、实验内容:
Part 1
3. 查询选修1号 课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列;
SELECT Sno,Grade
FROM SC
WHERE Cno ='1'
ORDER BYGrade DESC, SnoASC
6. 查询缺少了成绩的学生的学号和课程号。
SELECT Sno,Cno
FROM SC
20.1 WHERE Grade IS NULL
7. 查询每个学生的学号,姓名,选修的课程名,成绩;
SELECT Student.Sno,Sname,Cname,Grade
FROM Student,SC,Course
WHERE Student.Sno= SC.Sno AND SC.Cno = Course.Cno
10. 查询每门课程的先行课程的课程名称,学分;
SELECT b.Cname,b.Ccredit
FROM Course a,Course b
WHERE b.cno= a.cpno
12. 查询每一门课的间接先行课的课程名称;
SELECT c.Cname
FROM Course a,Course b,Course c
WHERE b.cno= a.cpno AND c.cno = b.cpno
13. 查询所在系部为“MA”且选修了高等数学课程的学生姓名,年龄,性别;
select Sname,Sage,Ssex
from Student,SC,Course
where Student.Sdept='MA'and Student.Sno=SC.Sno and SC.Cno=Course.Cno and Course
.Cname='数学'
15. 查询选修了数据结构课程,且成绩在90分以上的学生姓名,年龄;
select Sname,Sage
from Student,SC,Course
where Student.Sno=SC.Sno and SC.Grade>90 and SC.Cno=Course.Cno and Course.Cname
='数据结构'
20. 查询选修了全部课程的学生的姓名;
SELECT Sname
FROM student
WHERE Sno IN(
SELECT Sno
FROM SC
GROUP BYSno
HAVING count(*)=(
SELECT count(*)
FROM course
)
20. )查询至少选修了学号为“201215121”的学生所选修的全部课程的学生学号和姓名;
SELECTDISTINCT Sno
FROM SC SCX
WHERENOT EXISETS
(
SELECT*
FROM SC SCY
WHERESCY.Sno='201215122' NOT EXISETS
(
SELECT*
FROM SC SCZ
WHERE SCZ.Sno=SCX.Sno AND SCZ.Cno=SCY.Cno
)
)
25. 查询选修了操作系统课程的学生人数;
SELECTCOUNT(*)AS OS
FROM SC,Course
WHERE SC.Cno=Course.Cno AND Course.Cname='操作系统'
29. 查询选修了数据库课程的最高分,平均分;
SELECTMAX(Grade)AS High,AVG(Grade)AS average
FROM SC,Course
WHERE SC.Cno=Course.Cno AND Course.Cname='操作系统'
33. 查询每个学生的学号,姓名,所获得的总学分(成绩大于等于60,则获得该门课程的学分);
SELECT Student.Sno,Sname,SUM(Ccredit)AS total_credit
FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno AND SC.Grade>=60
GROUP UP Student.Sno,Student.Sname
Part 2
4. 找出工程项目J2使用的各种零件的名称及其数量
SELECT PNAME,QTY
FROM P,SPJ
WHERE JNO ='J2' AND SPJ.PNO = P.PNO
6. 找出使用上海产的零件的工程名称
SELECT JNO
FROM S,SPJ
WHERE CITY ='上海' ANDSPJ.SNO = S.SNO
10. 找出供应工程J1零件为红色的供应商号码
SELECT SNO
FROM SPJ
WHERE JNO ='J1' AND PNO IN(
SELECT PNO
FROM P
WHERE COLOR ='红'
)
17. 找出没有使用天津供应商生产的红色零件的工程名称
SELECT JNAME
FROM J
WHERE JNO NOTIN(
SELECT JNO
FROM S,P,SPJ
WHERE S.SNO= SPJ.SNO AND SPJ.PNO = P.PNO AND S.CITY = '天津' ANDP.COLOR = '红'
)
22. 找出提供零件种类超过了2种的供应商号码
SELECT DISTINCTSNO
FROM SPJ
GROUP BYSNO
HAVING COUNT(JNO) >= 2
25. 找出为3个以上的工程提供零件的供应商名称
SELECT S.SNAME
FROM SPJ,S
WHERE SPJ.SNO= S.SNO
GROUP BYS.SNAME
HAVING COUNT(JNO)>=3
四、心得体会:
实际操作有助于我们对书本上的指令的理解,也能够让我们更加灵活的运用这些指令。
热门工具 换一换