4.3.3 连接查询示例
[例5]查询计算机系(CS)选修了2门及以上课程的学生的学号。
SELECT Student.Sno
FROM Student,SC
WHERE Sdept='CS'AND Student.Sno=SC.Sno
GROUPBY Student.Sno HAVING COUNT(*)>=2;
[例6]查询Student表与SC表的广义笛卡尔积。
Select Student.*,SC.*
From Student,SC;
或Select Student.*,SC.*
From Student Cross Join SC;
[例7]查询Student表与SC表基于学号SNO的等值连接。
Select*
From Student,SC
WHERE Student.Sno=SC.Sno;
[例8]查询Student表与SC表基于学号SNO的自然连接。
SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student,SCWHERE Student.Sno=SC.Sno;
或SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student INNER JOIN SCON Student.Sno=SC.Sno;
[例9]查询性别为男、课程成绩及格的学生信息及课程号、成绩。
SELECT Student.*,Cno,Grade
FROM STUDENT INNER JOIN SCON Student.Sno=SC.Sno
WHERE SSEX=’男’AND GRADE>=60
[例10]查询课程之先修课的先修课(自身连接例)。
SELECT FIRST.Cno,SECOND.Pcno
FROM Course FIRST,Course SECOND
WHERE FIRST.Pcno=SECOND.Cno;
我们为Course表取两个别名FIRST与SECOND,这样就可以在SELECT子句和WHERE子句中的属性名前分别用这两个别名加以区分。
[例11]查询学生及其课程、成绩等情况(不管是否选课,均需列出学生信息)。
SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student LeftOuter JOIN SCON Student.Sno=SC.Sno;
[例12]查询学生及其课程成绩与课程及其学生选修成绩的明细情况(要求学生与课程均需全部列出)。
SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Course.Cno,Grade,cname,cpno,ccredit
FROM Student Left Outer JOIN SC ON Student.Sno=SC.Sno Full Outer join Course on SC.cno=Course.cno;
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。