<p>Selon la documentation : <a href="http://msdn.microsoft.com/en-us/library/ms177634%28SQL.90%29.aspx">FROM (Transact-SQL)</a> :</p>
<pre><code class="lang-auto"><join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
</code></pre>
<p>Le mot-clé <code>OUTER</code> est marqué comme optionnel (entre crochets). Dans ce cas précis, que vous spécifiiez <code>OUTER</code> ou non ne fait aucune différence. Notez que bien que les autres éléments de la clause de jointure soient également marqués comme optionnels, les omettre <em>fera</em> une différence.</p>
<p>Par exemple, la partie type entière de la clause <code>JOIN</code> est optionnelle, auquel cas la valeur par défaut est <code>INNER</code> si vous spécifiez simplement <code>JOIN</code>. En d’autres termes, ceci est valide :</p>
<pre><code class="lang-auto">SELECT *
FROM A JOIN B ON A.X = B.Y
</code></pre>
<p>Voici une liste de syntaxes équivalentes :</p>
<pre><code class="lang-auto">A LEFT JOIN B A LEFT OUTER JOIN B
A RIGHT JOIN B A RIGHT OUTER JOIN B
A FULL JOIN B A FULL OUTER JOIN B
A INNER JOIN B A JOIN B
</code></pre>
<p>Consultez également la réponse que j’ai laissée sur cette autre question SO : <a href="https://stackoverflow.com/a/894659/267">SQL left join vs multiple tables on FROM line?</a>.</p>