MySQL中的sql99_内连接与外连接

1,内连接

内连接不是一个表内的连接,是两个及多个表的连接。内连接是多个表之间根据指定的条件进行连接,然后返回满足这些条件的行。

格式:select  查询的东西 from  表1  inner JOIN 表2  on  查询的条件 

以下是举例:

employees
namesalaryageemployee_id
张三10001910
李四36002630
王五27002340
department
department_nameemployee_idcontactxxxx
销售部30123xxxx
管理部14444xxxx
后勤部29666xxxx
管理部10xxxx
销售部65876xxxx
后勤部40xxxx

上面的表是一个公司的员工表和部门表,现在我想查询员工的薪水和联系方式,薪水在employees表,联系方式在department表,如果我想查询它们两个,就需要连接两个表。

代码为:select   e.salary, d.contact  from  employees  e inner  JOIN  department  d on e.employee_id=d.employee_id ; 

on后面的条件是连接两个表的条件,我们可以看到两个表中唯一相同的就是都有employee_id,所以也只有employee_id可以做连接条件,条件是e.employee_id=d.employee_id;

2,左右外连接

左右外连接就是在内连接的基础上,意思就是它会返回内连接的结果,也会返回不是内连接的结果,结合上面的两个表来举例子,employees中有三个人,这三个人在department表中都能找到对应的id,现在我想查询员工的薪水和联系方式,那么就要连接两个表,但是我们现在看张三和王五的联系方式在department表中没有,如果用内连接来做,那么张三和王五的就不会被查询到,但是现在我用外连接来做,那么这个代码既会返回内连接的结果,也会返回张三和王五,只不过他俩的联系方式是空值,它会返回内连接的结果,如下:

1000NULL
3600123
2700NULL

左连接格式:select   e.salary, d.contact  from  employees  e LEFT OUTER  JOIN  department  d on e.employee_id=d.employee_id ; 

右连接格式:select   e.salary, d.contact  from  employees  e RIGHT OUTER  JOIN  department  d on e.employee_id=d.employee_id ; 

左连接是返回左表的所有行(包含左表的空行),右连接是返回右表所有的行(包含右表的空行)。

3,全外连接

这个就很简单了,全外连接就是左外连接和右外连接的结合体,就是左右外连接通过union关键字结合在一起形成了全外连接,大概就像南朝鲜和北朝鲜合并成为一个完整的岛国。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值