Um JOIN NATURAL é uma operação JOIN que cria uma cláusula de junção implícita para você com base nas colunas comuns nas duas tabelas que estão sendo unidas. Uma junção NATURAL pode ser uma junção INNER, uma junção LEFT OUTER ou uma junção RIGHT OUTER. O padrão é junção INNER. Fonte
Portanto, uma junção natural pode ser uma forma abreviada de implementar a junção interna se ambas as tabelas tiverem uma coluna comum.
Considere a seguinte tabela:
SELECT * FROM t1;
/*
ID PLANET
---------- --------
1 jupiter
2 earth
*/
Unimos a tabela a ela mesma:
SELECT first.id, first.planet FROM t1 first INNER JOIN t1 second ON first.id=second.id;
/*
ID PLANET
---------- --------
1 jupiter
2 earth
*/
Tente fazer o mesmo com a notação de junção natural:
SELECT id, planet FROM t1 NATURAL JOIN t1;
/*
ID PLANET
---------- --------
1 jupiter
1 jupiter
2 earth
2 earth
*/
Dado que a junção natural aqui é implementada usando a junção interna, por que as várias linhas?
Atualizar:
A execução da mesma junção com aliases de tabela tem uma saída diferente:
SELECT id, planet FROM t1 first NATURAL JOIN t1 second;
/*
ID PLANET
---------- --------
1 jupiter
2 earth
*/