/* 隐式内连接(WHERE过滤)*/SELECT e.name, d.name
FROM emp e, dept d
WHERE e.dept_id = d.id;/* 显式左外连接(保留左表全部记录)*/SELECT e.*, d.name
FROM emp e
LEFTJOIN dept d ON e.dept_id = d.id;/* 全外连接实现(MySQL兼容方案)*/(SELECT*FROM emp LEFTJOIN dept ON emp.dept_id = dept.id)UNION(SELECT*FROM emp RIGHTJOIN dept ON emp.dept_id = dept.id);
3. 自连接场景实践
/* 员工-领导层级查询 */SELECT worker.name AS 员工,manager.name AS 直属领导,super_mgr.name AS 上级领导
FROM emp worker
LEFTJOIN emp manager ON worker.manager_id = manager.id
LEFTJOIN emp super_mgr ON manager.manager_id = super_mgr.id;
三、子查询深度优化
1. 四种子查询类型对比
2. 典型应用案例
/* 标量子查询(部门最高薪)*/SELECT name, salary
FROM emp
WHERE salary =(SELECTMAX(salary)FROM emp WHERE dept_id =2);/* EXISTS替代IN(存在订单的用户)*/SELECT*FROM users u
WHEREEXISTS(SELECT1FROM orders WHERE user_id = u.id
);/* 派生表联合查询(近三月数据聚合)*/SELECT d.name,COUNT(*)FROM(SELECT*FROM emp WHERE entry_date > DATE_SUB(NOW(),INTERVAL3MONTH))AS new_emp
JOIN dept d ON new_emp.dept_id = d.id
GROUPBY d.name;