1、交叉连接:cross
#交叉连接 cross
#将多条单表(员工表)和(部门表) 转化为一个表
#笛卡尔积,没有实际意义,
select
*
from
emp
cross join
dept;
2、自然连接:natural(自动匹配所有的重名列)
**#自然连接 natural
#查找emp表的empno、ename 和 dept 表的loc
#优点:简单
#缺点:没有指明各列属于那个表,效率低下**
select
empno,ename,loc
from
emp
natural
join dept;
**#解决:直接在查询的字段列前加上表名**
select
emp.empno,emp.ename,dept.loc
from
emp
natural
join dept;
**#当然,这样也有缺点 我们可以利用别名是代码更加简洁**
select
e.empno,e.ename,d.loc
from
emp e
natural
join dept d;
3、using子句 (指定查询某一列字段)
**缺点:包括了natrual的缺点,必须使用同名列**
##根据部门查找empno、ename、deptno
select
e.empno,e.ename,d.loc,e.deptno
from
emp e
join
dept d
using (deptno);# 根据部门
4、on子句
**#为了解决主键和外键不同名 使用on**
select
e.empno,e.ename,d.loc,e.deptno
from
emp e
join dept d
on (e.deptno=d.deptno);# 根据部门
问题:到底使用那种方法连接
(1)cross:不用
(2)natural 、using :必须使用相同字段列
(3)on:不管是否有没有同名的字段列,均可使用,可读性强,推荐使用!