外连接与内连接,左连接与有连接区别

内连接查询

  1. 从哪个表中查
  2. 查哪些字段
  3. 条件是什么

在这里插入图片描述

1. 隐式内连接

​ 使用where语句消除无用数据

示例

 SELECT * FROM emp,dept WHERE emp.dept_id=dept.id;

例题1:查询所有员工信息与对应的部门信息

 SELECT * FROM emp,dept WHERE emp.dept_id=dept.id;

例题2:查询员工表的姓名 性别 部门表的名称

 SELECT  t1.e_name,t1.gender, t2.dept_name FROM emp t1,dept t2 WHERE t1.dept_id = t2.id;

2. 显示内连接

语法

select 字段列表 from 表名1 [inner] join 表名2 on 条件

示例

1.完整写法
SELECT * FROM emp INNER JOIN dept ON emp.dept_id = dept.id;
2.省略 inner 
SELECT * FROM emp JOIN dept ON emp.dept_id = dept.id;

3. 外连接查询

1. 左外连接

语法

select 字段列表 from 表1 left [outer] join 表2 on 条件;

在这里插入图片描述

示例

1.完整格式
SELECT * FROM emp LEFT OUTER JOIN dept  ON emp.dept_id = dept.id;
2.省略格式
 SELECT * FROM emp LEFT JOIN dept ON emp.dept_id = dept.id;

​ 左外连接查询的是:在左表有的基础上,根据条件整合笛卡尔积的查询

​ 如果我们想员工表中添加新的员工信息,表示新来的员工,但是在部门表中并没有给他添加部门信息,如果我们使用内连接会产生怎样的效果?

 SELECT * FROM emp ,dept WHERE emp.dept_id = dept.id;

​ 我们会发现,并不会将新添加的员工信息显示出来,因此我们就要用到了外连接

SELECT * FROM emp LEFT JOIN dept ON emp.dept_id = dept.id;

​ 这个时候新添加的员工信息就显示出来了,但是如果我们使用右连接,发现又没有员工信息,这是因为使用右连接会以右表为基础对左表进行查询,求其交集,因为新添加的员工没有部门信息,因此也就没有交集,也就查不到员工信息。

SELECT * FROM emp RIGHT JOIN dept ON emp.dept_id = dept.id;

2. 右外连接

语法

select 字段列表 from 表1 right [outer] join 表2 on 条件;

在这里插入图片描述

示例

1.完整格式
SELECT * FROM emp RIGHT OUTER JOIN dept ON emp.dept_id = dept.id;
2.省略格式
 SELECT * FROM emp RIGHT JOIN dept ON emp.dept_id = dept.id;

​ 右外连接查询的是:在右表有的基础上,根据条件整合笛卡尔积的查询

4. 内连接和外连接区别

  1. 内连接,显示两个表中有联系的所有数据;

  2. 左链接,以左表为参照,显示所有数据;

  3. 右链接,以右表为参照显示数据;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值