首页 > 代码库 > mysql_数据查询_连接查询

mysql_数据查询_连接查询

连接查询

1.连接(join)

  也称θ连接,从两个关系的笛卡尔积中选择属性间满足一定条件的元组。

  等值连接:θ为“=”的连接运算称为等值连接。从关系R和S的广义笛卡尔积中选取A、B属性值相等的元组。

自然连接:一种特殊的等值连接。要求关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性去掉

外连接:把悬浮元组也保存在结果关系中,而在其他属性上填NULL。OUTER JOIN

左外连接:只保留左边R关系的悬浮元组。  LEFT OUTER JOIN

右外连接:只保留右边S关系的悬浮元组。  RIGHT OUTER JOIN

2.连接查询:

查询同时设计两个以上的表,则称之为连接查询。是数据库中最主要的查询,包括等值连接查询、自然连接查询、非等值连接查询、自身连接查询、外连接查询和复合条件连接查询。

1.等值与非等值连接查询:

SELECT Student.*,SC.* FROM Student,SC WHERE Student.Sno=SC.Sno;   等值连接

 

SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade      自然连接

FROM Student,SC WHERE Student.Sno=SC.Sno;

 

一条SQL语句可以同时完成选择和连接查询,这是WHERE子句是由连接谓词和选择谓词组成的复合条件。

SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student,SC WHERE Student.Sno=SC.Sno AND SC.Grade>90;

该查询的一种优化的执行过程,先从SC中挑选出Cno=‘2‘并且Grade>90的元组形成一个中间关系,再和Student中满足连接条件的元组进行连接得到最终的结果关系。

2.自身连接:

查询有先修课的课

SELECT FIRST.Cno,SECOND.Cno FROM Course FIRST,Course SECOND WHERE FIRST.Cpno=SECOND.Cno;

为Course取了两个别名FIST,SECOND

3.外连接:

把悬浮元组保存在结果集合中。

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

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

4.多表连接:

涉及多张表。

SELECT Student.Sno,Sname,Cname,Grade

FROM Student,SC,Course WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno;

 

mysql_数据查询_连接查询