数据库的内连接和外连接
内连接:
两个或两个以上的表进行关联查询时,查询的结果集中 返回所有满足连接条件的行。
外连接:
两个或两个以上的表进行关联查询时,查询的结果集中 除了返回满足连接条件的行以外,还返回左(或右)表中不满足条件的行,这种连接称为左(或右) 外连接。
如果是左外连接,则连接条件中左边的表也称为 主表 ,右边的表称为 从表 。
如果是右外连接,则连接条件中右边的表也称为 主表 ,左边的表称为 从表 。
====================================================================
以员工表(employee)和部门表(department)表进行实验:
员工表(employee)
id | name | dept_id | |
---|---|---|---|
1 | tom | tom@qq.com | 1 |
2 | jerry | jerry@163.com | 2 |
3 | lucy | lucy@qq.com | |
4 | jack | jack@gmail.com | 1 |
部门表(department)
id | dept_name |
---|---|
1 | 开发部 |
2 | 测试部 |
3 | 销售部 |
内连接语法:
select e.name, d.dept_name from employee e
inner join department d
on e.dept_id = d.id`
使用上述的内连接语句查询后,左边的员工表作为主表,右边的部门表作为辅表,展示效果为:列出所有有部门的员工的信息。
使用上述的内连接语句查询后,没有部门的员工未显示在结果集中。
左外连接语法:
select e.name, d.dept_name from employee e
left join department d
on e.dept_id = d.id
使用上述的左外连接语句查询后,没有部门的员工显示在结果集中。
使用上述的左外连接后,左边的员工表作为主表,右边的部门表作为辅表,展示效果为:列出所有员工的部门信息
右外连接语法:
select e.name, d.dept_name from employee e
right join department d
on e.dept_id = d.id
使用上述的右外连接后,右边的部门表作为主表,左边的员工表作为辅表,展示效果为:列出所有部门中的员工信息