显式内连接: SELECT 字段列表 FROM 表1 [ INNER ] JOIN 表2 ON 连接条件 ...;
-- 查询员工姓名,及关联的部门的名称-- 隐式select e.name, d.name from employee as e, dept as d where e.dept = d.id;-- 显式select e.name, d.name from employee as e innerjoin dept as d on e.dept = d.id;
外连接
左外连接:查询左表所有数据,以及两张表交集部分数据 SELECT 字段列表 FROM 表1 LEFT [ OUTER ] JOIN 表2 ON 条件 ...;
右外连接:查询右表所有数据,以及两张表交集部分数据 SELECT 字段列表 FROM 表1 RIGHT [ OUTER ] JOIN 表2 ON 条件 ...;
-- 左select e.*, d.name from employee as e leftouterjoin dept as d on e.dept = d.id;select d.name, e.*from dept d leftouterjoin emp e on e.dept = d.id;-- 这条语句与下面的语句效果一样-- 右select d.name, e.*from employee as e rightouterjoin dept as d on e.dept = d.id;
自连接:当前表与自身的连接查询,自连接必须使用表别名
语法: SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件 ...;
自连接查询,可以是内连接查询,也可以是外连接查询
-- 查询员工及其所属领导的名字select a.name, b.name from employee a, employee b where a.manager = b.id;-- 没有领导的也查询出来select a.name, b.name from employee a leftjoin employee b on a.manager = b.id;