
cbolovo
(usa Debian)
Enviado em 07/05/2009 - 21:45h
Olá Iceoz,
Vamos por partes...
Dúvida #1
O "inner join" é o padrão, ele retorna a junção de duas tabelas onde a condição especificada é satisfeita. Ex: retornar os funcionários e seus respectivos gerentes(os funcionários sem gerentes não serão listados).
O "outer join" é a junção onde a relação pode ou não existir de um dos lados (left ou right). Ex: retornar todos os funcionários e seus respectivos gerentes se possuirem (todos funcionários serão listados).
Dúvida #2
Quanto à diferença entre as queries abaixo, é somente de sintaxe. A utilização cláusula JOIN é SQL ANSI e a sintaxe que utiliza somente comparações é também denominada sintaxe ORACLE (minha favorita, mais clara, mais simples, mais utilizada no mercado e também funciona em todos SGBDS).
"select p.nome as produto, f.nome as fabricante, p.quantidade from produtos p, fabricante f where f.id = p.fabricante_id" (sintaxe ORACLE)
"select p.nome as produto, f.nome as fabricante, p.quantidade from produtos p join fabricantes f on (f.id = p.fabricante_id)" (sql ANSI)
Obs: O SGBD Oracle também dá suporte ao SQL ANSI.
Dúvida #3
Sim, o "as" é opcional na definição do alias.