Not exists

Bom dia a todos, eu estou com uma dúvida em relação ao comando not exists no banco de dados oracle. Esse comando traz tudo aquilo que não existe ou oque existe?

Ele é interpretado da mesma maneira que a sintaxe dele:
not -> não
exists -> existe

Logo not exists -> não existe.

Ai ele só me trás aquilo que não existe?!

Ele te trás tudo aquilo que não existe dentro da condição atual de consulta!

Vou listar um exemplo prático pra ficar mais fácil o entendimento do uso do comando, neste caso vou utilizar o modelo padrão do Oracle que no caso é o Scott. (Caso não conheça, na internet você consegue encontrá-lo para download).

Exemplo com EXISTS:
Listar os nomes de todos os empregados que são gerentes:

select ename from emp externo
where exists
    (select emp.* from emp
     inner join emp gerente on(emp.mgr = gerente.empno)
     where emp.empno = externo.empno)
order by ename asc;

Exemplo com NOT EXISTS:
Listar os nomes de todos os empregados que não são gerentes:

select ename from emp externo
where not exists
   (select emp.* from emp
    inner join emp gerente on(emp.mgr = gerente.empno)
    where emp.empno = externo.empno)
order by ename asc;
1 curtida