1. 自连接
将一张表作为两张表看待进行的连接
FROM table t1 JOIN table t2 ON t1.col = t2.col
1.1 查询整个员工表select * from emp;
1.2 查询员工的姓名和他对应的管理者的姓名
select w.ename,m.ename from emp w join emp m on w.mgr = m.empno;
2. 内连接
在每个表中找出符合条件的共有记录。[x inner join y on...]
FROM table t1 INNER JOIN table t2 ON t1.col = t2.col
select ename,d.deptno,dname from emp INNER join dept d on emp.deptno = d.deptno;
3. 外连接
使用空行匹配非匹配行的连接
FROM table1 [<LEFT | RIGHT | FULL> OUTER] JOIN table2ON t1.col = t2.col
3.1 查询整个部门表select * from dept;
3.2 右外连接:右边表全部显示,左边的表用空行匹配没有匹配的行。
select ename,d.deptno,dname from emp right outer join dept d on emp.deptno = d.deptno
3.3 左外连接:左边的表全部显示,右边的表用空行匹配没有匹配的行。
select ename,d.deptno,dname from emp left outer join dept d on emp.deptno = d.deptno
3.4 完全外连接:两边的表都会用空行匹配非匹配的行。
select ename,d.deptno,dname from emp full outer join dept d on emp.deptno = d.deptno
4. 连接更多表
JOIN table3 ON t1. col= t3.col
select ename,dept.deptno,dname,grade
from emp join dept on emp.deptno = dept.deptno
join salgrade on sal BETWEEN losal AND hisal;