数据库实验报告 数据查询

桂 林 理 工 大 学

实  验  报  告

班级   软件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

四、心得体会:

实际操作有助于我们对书本上的指令的理解,也能够让我们更加灵活的运用这些指令。


猜你喜欢

转载自blog.csdn.net/qq_40307529/article/details/80721476