SQL连接查询

本文详细介绍了SQL中的连接查询,包括等值连接、非等值连接、自身连接、复合条件连接、自然连接、JOIN...USING的用法,并通过实例解析了各种连接查询的差异。此外,还讨论了外连接,特别是左外连接和右外连接的概念,以及它们如何处理悬浮元组。
摘要由CSDN通过智能技术生成

连接查询

等值与非等值连接查询

当连接运算符为“=”时,称为等值连接。使用其他运算符称为非等值连接

select cno, grade
from s, sc
where s.sno=sc.sno and sname='zhangsan';

自身连接

一个表与自己进行连接,需要给表起别名用于区别,由于所有属性名都是同名属性,因此必须使用表别名前缀

select a.*, b.* 
from sc a, sc b
where a.sno=b.sno;

复合条件连接

where子句中含多个连接条件

select s.sno, sname
from s, sc
where s.sno=sc.sno and cno=002and grade>90;

自然连接

自然连接(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 join 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)

外连接

  • 悬浮元组:两个关系在做自然连接时被舍弃的元组
  • 外连接:把悬浮元组也保存在自然连接的结果关系中,而在其他属性上填空值
  • 左外连:只保留左边关系R中的悬浮元组
  • 右外连:只保留右边关系S中的悬浮元组

外连接:

select s.*, cno, grade
from s, sc
where s.sno=sc.sno

左外连:

select s.sno, sname, ssex, sbirth, college, cno, grade 
from s left outer join sc on (s.sno=sc.sno);

等值连接

  • inner join(等值连接) 只返回两个表中联结字段相等的元组
  • 等值连接中重复列不删除.
select * from a
inner join b 
on A.ID = B.ID
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值