Mysql数据库学习笔记--多表连接查询 2020-2-9

多表连接

自然连接
找列名相同、数据类型相同的列进行等值连接
关键词: natural join
select * from emp natural join dept
等同于: select * from emp,dept where emp.deptno=dept.deptno

自身连接
通过起别名,将一张物理表抽象成多张逻辑表
例:查询emp表中每个员工的姓名和直接上级姓名(employee员工 manager经理)
select employee.ename,manager.ename
from emp employee,emp manager
where employee.mgr=manager.empno

using子句
using(列名) ( 列名是两个表中相同的列名,根据using内的列名进行等值连接)
select * from emp join dept using(deptno)
等同于:select * from emp,dept where emp.deptno=dept.deptno

on子句(解耦,降低语句的复杂度)
select * from emp,dept where emp.deptno=dept.deptno and emp.deptno=10 – 耦合性高
select * from emp join dept on (emp.deptno=dept.deptno) – 解耦

外连接
注:希望哪一个表全部显示,这个表在那一侧就是那一侧外连接
右外连接
right outer join
emp表和dept表进行外连接,将右侧(dept)表中的信息全部显示出来,即使左侧表中无对应连接数据
select * from emp right outer join dept on (emp.deptno=dept.deptno)

全外连接
full outer join (mysql 不支持全外连接)

你可能感兴趣的:(笔记)