内连接方式通常包括等值连接,非等值连接,自连接。内连接的特点是连接之后的两个表等级相同,没有主副之分,匹配得到就输出,匹配不到就跳过。
先来看三张表: 员工表 部门表 薪资等级表
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,没人能管他,所以匹配不到就没有输出。