实验二 数据查询

一. 实验目的

1.观察查询结果, 体会SELECT语句实际应用;

2.要求学生能够在查询分析器中使用SELECT语句进行简单查询。

3. 熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。

4. 掌握子查询的表示。

5. 熟练掌握数据查询中的分组、统计、计算和组合的操作方法。

 

二. 实验准备

完成数据库的创建,在数据库中建立教材3.2节的三个表,并为每个表输入一定数量的记录。

 

三.实验内容

用SQL语句完成以下查询

3. 查询选修1号课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列;

select Student.Sno,Grade

from Student,Sc

where Student.Sno=Sc.SnoandCno='1'

ORDER BY GradeDESC

 

 6.查询缺少了成绩的学生的学号和课程号。

select Student.Sno,Cno

from Student,Sc

where Student.Sno=Sc.SnoandGrade=null

 

7.查询每个学生的学号,姓名,选修的课程名,成绩;

select Student.Sno,Course.Cno,Sname,Cname,Grade

from Student,Sc,Course

where Student.Sno=Sc.SnoandCourse.Cno=Sc.Cno 

 

 

10.查询每门课程的先行课程的课程名称,学分;

select Cname,Ccredit

from Course

 

 

12. 查询每一门课的间接先行课的课程名称;

select First.Cno,Second.Cpno

from CourseFirst,CourseSecond

Where First.Cpno=Second.Cno

 

13. 查询所在系部为“MA”且选修了高等数学课程的学生姓名,年龄,性别;

select Sname,Sage,Ssex

from Student

Where Sdept='MA'andExists(

select *

from course,sc

where cname='数学' and course.cno=sc.cno

)

 

15. 查询选修了数据结构课程,且成绩在90分以上的学生姓名,年龄;

select Sname,Sage

from Student,course,sc

Where Sc.cno=course.cnoandStudent.sno=Sc.snoandcname='数据结构'and grade>90

 

 

20. 查询选修了全部课程的学生的姓名;

select sname

from student

where not exists

     (select *

    from course

    where not exists

    (select *

    from sc

    where sno=student.sno

    and cno=course.cno));

 

 

 

 

21. 查询至少选修了学号为“201215121”的学生所选修的全部课程的学生学号和姓名;

select sno,sname

from student

where snoin(selectscx.sno

from scscx

where not exists(select *

from scscy

where scy.sno='201215121'and

not exists(select *

from scscz

where scz.sno=scx.snoand

scz.cno=scy.cno)))

 

 

25. 查询选修了操作系统课程的学生人数;

select count(distinct sc.sno)

from student,course,sc

where course.cno=sc.cno

and student.sno=sc.sno

and cname='操作系统'

 

 

29. 查询选修了数据库课程的最高分,平均分;

select max(grade),avg(grade)

from sc,course

where cname='数据库'and

course.cno=sc.cno

 

 

33. 查询每个学生的学号,姓名,所获得的总学分(成绩大于等于60,则获得该门课程的学分);

select student.sno,sname,sum(grade)

from student,sc

where student.sno=sc.snoandgrade>60

group by student.sno,sname

 

 

Part2:

4.找出工程项目J2使用的各种零件的名称及其数量;

selectPname,QTY

from P,SPJ

WHEREP.PNO=SPJ.PNO AND JNO='J2';

查询结果:

 

 

6.找出使用上海产的零件的工程名称;

SELECTDISTINCT JNAME

FROM S,J,SPJ

WHERES.CITY='上海' AND S.SNO=SPJ.SNO

ANDJ.JNO=SPJ.JNO;

查询结果:

 

 

 

 

10.找出供应工程J1零件为红色的供应商号码;

SELECT sno

FROM P,SPJ

WHEREP.COLOR='红' AND SPJ.JNO='J1'

ANDP.PNO=SPJ.PNO;

查询结果:

 

 

17.找出没有使用天津供应商生产的红色零件的工程名称;

selectDISTINCT JNAME

FROM J

WHERE JNAMENOT IN(

SELECT JNAME

FROM SPJ,P,S

WHEREP.COLOR='红'AND S.CITY='天津' ANDS.SNO=SPJ.SNO

ANDP.PNO=SPJ.PNO AND J.JNO=SPJ.JNO );

查询结果:

 

 

22.找出提供零件种类超过了2种的供应商号码;

SELECT DISTINCTSPJ.SNO

FROM S,P,SPJ

WHERE SPJ.SNOIN (

SELECT S.SNO

FROM SPJ

GROUP BYSPJ.PNO

HAVINGCOUNT(*)>=2);

查询结果:

 

 

25.找出为3个以上的工程提供零件的供应商名称;

SELECTDISTINCT S.SNAME

FROM S,SPJ,J

WHERE SPJ.JNOIN(

SELECTSPJ.JNO

FROM J

GROUP BY JNO

HAVINGCOUNT(*)>=3)


 

 

猜你喜欢

转载自blog.csdn.net/sinat_40959511/article/details/80946867
今日推荐