首页 百科知识 连接查询示例

连接查询示例

时间:2023-10-11 百科知识 版权反馈
【摘要】:或SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade我们为Course表取两个别名FIRST与SECOND,这样就可以在SELECT子句和WHERE子句中的属性名前分别用这两个别名加以区分。

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;

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈