在mysql 中连接类型区别_【数据库】-- 各种连接的区别

一、各种连接及其sql语言

1、自然连接:只考虑那些在两个关系模式中都出现的属性上取值相同的元组对 natural join、join...using

select A1,A2,...,An

from r1 natural join r2 natural join ... natural join rn

where P;

select name1, course_id

from instructor, teaches

where instructor.ID = teaches.ID;

等价于

select name1, course_id

from instructor natural join teaches;

### 但以下的一个例子却不等价 ###

前提:已知instructor和teaches自然连接包括属性(ID, name, dept_name, salary, course_id, sec_id)

而course关系包含的属性是(course_id, title, dept_name, credits)

select name,title

from instructor natural join teaches, course

where teaches.course_id = course.course_id;

-- 列出教师的名字以及他们所讲授课程的名称

不等价于

select name1,title

from instructor natural join teaches natural join course;

原因:instructor、teaches和course三者自然连接包括属性(course_id, dept_name)

而instructor和teaches自然连接后,再让teaches与course根据属性course_id相同选出元组的结果,会忽略掉所有(course_id, dept_name)这样的对,因此两种查询结果不同

因此,为了发扬自然连接的优点,同时避免不必要的相等的属性带来的危险,引入了下面的构造形式

select A1,A2

from r1 join r2 using (A1,A3); -- r1、r2为表名

join...using与自然连接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值