首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

oracle,mysql数据库多表查询:内连接,外连接

在数据库原理之中对于多表查询实际上给出了两种表连接的概念。

内连接:等值连接。只有条件判断满足了才会显示出相应的数据信息;

外连接:数据表记录的全部显示,外连接分为三种,左外连接,右外连接,全外连接。

tbl_dept表中一共有两条记录,其中“测试部”没有任何的员工,所以这个一个没有员工的部门。

在tbl_emp中添加一条没有部门的员工数据。

使用emp表与dept表进行内连接处理:

select * from tbl_emp e join tbl_dept d on e.d_id=d.dept_id;

此时是一个等值判断“e.d_id=d.dept_id”(内连接)。通过结果我们可以发现只要不满足于此条件的数据都不会显示。

左外连接是要求左表的数据全部显示:

select * from tbl_emp e left join tbl_dept d on e.d_id=d.dept_id;

右外连接是要求右表的数据全部显示:

select * from tbl_emp e right join tbl_dept d on e.d_id=d.dept_id;

下面就利用外连接来做一个自身连接的处理操作,所谓的自身连接值的是数据表自己来关联自己。emp表中有一个mgr字段表示领导编号。

通过emp表得到雇员的姓名。

通过emp表找到领导的姓名。

第一步:查询每个雇员姓名、email。

select e.emp_name,e.email from tbl_emp e ;

第二步:查询领导的姓名,领导需要再次引入emp表,所以追加一个条件删除掉笛卡尔积。

select e.emp_name,e.email,m.emp_name from tbl_emp e join tbl_emp m

on e.mgr=m.emp_id

以上的操作使用的内连接,所以只要mgr字段的数据为空的雇员那么就不再进行显示了,所以这个是有问题的,所以应该使用外连接来进行控制。

select e.emp_name,e.email,m.emp_name from tbl_emp e left join tbl_emp m

on e.mgr=m.emp_id

外连接一定要根据你具体的程序查询要求来定义。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180203A0EAZF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券