首页 > 数据库技术 > 详细

mysql学习笔记(7)-多表查询之自然连接、外连接

时间:2020-05-16 20:53:36      阅读:52      评论:0      收藏:0      [点我收藏+]

本文将简单介绍多表查询的几种类型,包括关键字natural join、outer join等

一、自然连接

当我们在from从句中,用逗号连接不同表,且没有添加where子句时
这样的多表连接被称为是笛卡尔积
在大部分情况下,多表之间的笛卡尔积是没有意义的
因此,我们可以通过添加where子句来实现自然连接

下图是instructor表和teaches表的结构
技术分享图片
例如,我们想找出有教课的教师名字及其对应的课程ID
就可以在where子句中利用.操作符连接一个(或多个)公共属性
从而实现我们需要的自然连接

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

而在from子句中使用关键字natural join来连接两个表
同样能实现自然连接的效果

select name,course_id
from instructor natural join teaches;  

在更复杂的多表查询中,使用关键字natural join可能会出现不可预知的错误
因此,我们更推荐在where子句中用.操作符连接公共属性,从而实现自然连接的效果

二、外连接

外连接的类型有两种,分别是左外连接、右外连接

1、左外连接

用关键字 natural left outer join 来表示左外连接
对于 table1 natural left outer join table2 而言
返回的新表将会以table1的主码作为主码,并保留table1的所有数据
例如:
对 课程信息表和先修课程信息表
即 course(course_id(主码),title,dept_name,credits) 和
prereq(course_id,prereq_id(两个属性都是主码)) 进行左外连接
效果如下:
技术分享图片

2、右外连接

用关键字 natural right outer join 来表示右外连接
对于 table1 natural right outer join table2 而言
返回的新表将会以table2的主码作为主码 ,并保留table2的所有数据
例如:
对 课程信息表和先修课程表 进行右外连接
效果如下:
技术分享图片

mysql学习笔记(7)-多表查询之自然连接、外连接

原文:https://www.cnblogs.com/baebae996/p/12902060.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!