exists语句的返回值,该怎么处理

exists语句的返回值
今天学习oracle   exists关键字的时候遇到问题了,用如下语句的时候,exists返回一个布尔值
SELECT ename,empno FROM emp 
WHERE exists( 
select * from 
emp where empno=7499);

查询结果如下
exists语句的返回值,该怎么处理
据此我认为exists返回一个布尔值,true则打印SELECT ename,empno FROM emp 查询到的内容,false则不打印,事实证明的确如此,我试过把查询条件改成一个无效的值,控制台不打印任何值,至此证实了我的假像。
然后接着,问题又来了!我在书本看到in的查询效率没有exists这么高,看到这句话我就认为这句话的潜在意思是in和exists可以互相替换,我在网上找到了如下代码
SELECT ename,empno FROM emp 
WHERE exists( 
select * from 
(select 7499 a from dual
) where empno=a);

运行结果如下:
exists语句的返回值,该怎么处理
返回结果只有一行!exists返回不是布尔值,是查询到的7499!我快搞晕了,这到底是什么原理,exists语句到底返回个什么值,求大神回答
------解决思路----------------------
第一个语句:由于你的exists返回的是true,所以返回全部值,之所以返回全部值是因为你的主查询并没有和exists的子查询关联。

第二个语句:你必须搞清楚的是子查询中的empno是主查询的empno,此时子查询和主查询进行了关联。只要当主查询empno=7499时,子查询才为ture,所以只要这条记录返回
------解决思路----------------------
告诉你一个简单的方法
你的子查询的where条件中如果包含了子查询表的字段也包含了外层表的字段
基本上可以确定进行了关联
------解决思路----------------------
第一个语句,要么返回所有行,要么返回 0 行,你可以把 7499 改成其他的值试试,123456780 这样的值 。

第二个语句, where empno=a ,这里的 empno ,是最外层的 emp 的列。