数据库作业7:SQL练习4 – SELECT(连接查询、嵌套查询)

  • Post author:
  • Post category:其他



【例 3.49】 查询每个学生及其选修课程的情况


SELECT Student.

, SC.


FROM Student, SC

WHERE Student.Sno = SC.Sno;

通过学生的学号将Student表与SC表连接起来。


【例 3.50】 对[例 3.49]用自然连接完成


SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade

FROM Student,SC

WHERE Student.Sno = SC.Sno;

省去了一列学号,表确实美观了许多。


【例 3.51】查询选修2号课程且成绩在90分以上的所有学生的学号和姓名


SELECT Student.Sno, Sname

FROM Student, SC

WHERE Student.Sno=SC.Sno AND

SC.Cno=’ 2 ’ AND SC.Grade>90;

在SC中找Cno=2和Grade>90组成个关系再连接Student中满足关系的元组。


【例 3.52】查询每一门课的间接先修课


SELECT FIRST.Cno, SECOND.Cpno

FROM Course FIRST, Course SECOND

WHERE FIRST.Cpno = SECOND.Cno;

表里面有3号课,它的对应先行课是2号课,2号的先行课为1号课,则1号就是3号的间接先行课。


【例 3. 53】


SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade

FROM Student LEFT OUT JOIN SC ON (Student.Sno=SC.Sno);

内容为空的数据显示出来了,这是因为外连接的关系。


【例3.54】查询每个学生的学号、姓名、选修的课程名及成绩


SELECT Student.Sno, Sname, Cname, Grade

FROM Student, SC, Course /多表连接/

WHERE Student.Sno = SC.Sno

AND SC.Cno = Course.Cno;


【例 3.55】查询与“刘晨”在同一个系学习的学生


1、SELECT Sdept

FROM Student

WHERE Sname= ’ 刘晨 ‘;

2、SELECT Sno, Sname, Sdept

FROM Student

WHERE Sdept= ’ CS ‘;

将第一步嵌入到第二步查询的条件中:

SELECT Sno, Sname, Sdept

FROM Student

WHERE Sdept IN

(SELECT Sdept

FROM Student

WHERE Sname= ’ 刘晨 ‘);


【例 3.56】查询选修了课程名为“信息系统”的学生学号和姓名


SELECT Sno,Sname

FROM Student

WHERE Sno IN

(SELECT Sno

FROM SC

WHERE Cno IN

(SELECT Cno

FROM Course

WHERE Cname= ‘信息系统’

)

);



版权声明:本文为weixin_45887276原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。