内连接方式通常包括等值连接,非等值连接,自连接。内连接的特点是连接之后的两个表等级相同,没有主副之分,匹配得到就输出,匹配不到就跳过。
先来看三张表:
员工表
部门表
薪资等级表
1、等值连接
在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复属性。
问题:我想查看员工的部门名称和工作地点,这时候我们就可以使用等值连接进行查询
select
e.ename,d.dname,d.loc
from
emp e
join
dept d
on
e.deptno = d.deptno;
结果:
2、非等值连接
在连接条件使用除等于运算符以外的其它比较运算符比较被连接的 列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>,以及between…and…。
问题:查询员工的薪资等级
select
e.ename,e.sal,s.grade
from
emp e
join
salgrade s
on
e.sal between s.losal and s.hisal;
结果:
3、自连接
顾名思义就是自己连接自己从而查询想要的信息。
我们观察一下员工表,里面有两列是上级领导编号和自己的编号,当我们想要查询员工领导的时候就可以使用自连接。
select
a.ename '员工',b.ename '领导'
from
emp a
join
emp b
on
a.mgr = b.empno;
结果:
我们可以看到只显示了13条记录,但是有14个人,这是因为KINH是大boss,没人能管他,所以匹配不到就没有输出。