普通的连接:
select e.empno, e.ename, d.deptno, d.dname
from emp e, dept d
where e.deptno = d.deptno;
在上述sql语句中先执行 from 后执行select和where 如果使用了别名的话以后引用表都要使用别名不然会报错 别名最长为30个字符 (此连接会出现一个笛卡尔乘积,如果两个表很大,那么乘积之后的另一个表会更大,占内存)
内连接
select e.empno, e.ename, d.deptno, d.dname
from emp e
join dept d
on e.deptno = d.deptno
如果使用join操作 会优先判断 是否符合 join 后所接on的条件 使生成结果不会太大
左外连接可以使某一张表或两张表的数据完全显示出来
left join 和right join还可以用(+)来代替,(+)应放在缺少相应信息的一边,左连接的主表是join左边的表 为主表 内容会全部显示
select e.empno, e.ename, d.deptno, d.dname from emp e left join dept d on e.deptno = d.deptno ;
左外链接的加号写法:
select e.empno, e.ename, d.deptno, d.dname from emp e, dept d where e.deptno = d.deptno(+);
右连接的主表是join右边的表 为主表 内容会全部显示
select e.empno, e.ename, d.deptno, d.dname from emp e right join dept d on e.deptno = d.deptno ;
右外链接的加号写法
select e.empno, e.ename, d.deptno, d.dname from emp e, dept d where e.deptno(+) = d.deptno
完全外连接:(个人理解)
相当于做左连和右连后去重值
select e.empno, e.ename, d.deptno, d.dname from emp e full join dept d on e.deptno = d.deptno ;