内连接
是把两个表中符合条件的数据连接为一条数据,如果哪个表中存在不符合连接条件的数据,那么这些数据就会被过滤掉(不显示)
语法:
select 列名,...,列名
from a表 inner join b表 on 连接条件;
举例:
查询员工信息及他的部门信息
select e.*,d.* from emp e inner join dept d on e.deptno=d.deptno;
inner join:中的inner可以省略不写
select e.*,d.* from emp e join dept d on e.deptno=d.deptno;
让我们回顾一下我们的原表:
从上图我们可以看出来,emp表中的empno为7311的员工并没有出现在内连接后的结果集里面。因为两张表的连接条件是emp表的deptno以及dept表中的deptno,而7311这为员工的deptno为null值,故而与dept表的deptno列中的值匹配不上,所以这条数据就被过滤掉了。同理,dept表中的40
部门也没有再emp表中匹配到符合连接条件的数据,故而也被过滤掉了。
那么话说回来:什么是连接条件?
连接条件不一定是两张表中同名的字段,但必须是数据类型相同的字段。
举个列子如下:
emp表的empno字段和dept表中的deptno字段同属NUMBER
类型,那么这两个字段就可以作为连接条件,只是没有数据可以匹配而已。
如果连接条件的两个字段类型不一致的话会怎样?
如上图所示,如果数据类型不一致的话,会直接报错。
内连接除了上面的写法之外还有另外一条特殊的写法:
SELECT * FROM EMP E,DEPT D WHERE E.DEPTNO = D.DEPTNO;
以上不管哪种语法,出来的结果都是一样的。
更多推荐
【Oracle 数据库】奶妈式教程 day07 内连接
发布评论