SQL自然连接(natural join)

自然连接

自然连接(natural join)运算作用于两个关系,并产生一个关系作为结果,自然连接只考虑那些在两个关系模式中都出现的属性上取值相同的元组对。

例如:

select name,course_id
from instruct,teaches
where instructor.ID = teaches.ID

两关系表中仅有同名属性ID,该查询可以用SQL的自然连接运算更简洁地写作:

select name,course_id
from instructor natural join teaches;

在一个SQL查询的from子句中,可以用自然连接将多个关系结合在一起

select A1,A2,A3,...,An
from r1 natural join r2 natural join ... natural join rm
where P;

join … using

示例1:

select name,title
from instructor natural join teaches,course
where teaches.course_id = course.course_id;

示例1中该语句先计算instruct和teaches的自然连接,再计算该结果与course的笛卡尔积

示例2:

select name,title
from instructor natural join teaches natural course;

示例2中,若instructor与teaches的自然连接包括属性(ID,name,dept_name,salary,course_id,sec_id),而course关系包含的属性为(course_id,title,dept_name,credits)这二者进行自然连接的结果要求dept_name与course_id在各自取值上相同,与上诉查询语句不同,可能会查询出空的结果关系。

因此SQL提供了一种自然连接的构造形式,允许用户指定需要哪些列相等r1 join r2 using(A1,A2)

select name,title
from (instructor natural join teaches) join course using(course_id)

你可能感兴趣的:(SQL,sql)