クエリとサンプルをいじって、結合の理解を深めてください。 SQL Server 2008では、次の2つのクエリで同じ結果が得られることに気付きました。
SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name
SELECT * FROM TableA
FULL JOIN TableB
ON TableA.name = TableB.name
これらはまったく同じアクションを実行して同じ結果を生成していますか、またはより複雑な例で異なる結果に遭遇しますか?これは単に互換性のある用語ですか?
実際には同じです。 LEFT OUTER JOIN
はLEFT JOIN
と同じで、RIGHT OUTER JOIN
はRIGHT JOIN
と同じです。 INNER Join
から比較するより有益な方法です。
詳しくは Wikipediaの記事 をご覧ください。
Microsoft®SQL Server™2000は、FROM句で指定された外部結合に次のSQL-92キーワードを使用します。
LEFT OUTER JOINまたはLEFT JOIN
RIGHT OUTER JOINまたはRIGHT JOIN
FULL OUTER JOINまたはFULL JOIN
MSDN から
full outer join
またはfull join
は両方のテーブルからすべての行を返し、一致が可能な場合は行を一致させ、一致する行が存在しない場所にNULL
sを配置します。
一部のデータベースがOUTERキーワードを認識することは事実です。しない人もいます。認識される場合、通常はオプションキーワードです。ほとんどの場合、FULL JOINとFULL OUTER JOINはまったく同じことを行います。 (私は彼らがそうしない例について考えることができません。他の誰かがそれを考えることができますか?)
これにより、「意味がないのにキーワードになるのはなぜですか」と疑問に思うかもしれません。答えは、プログラミングスタイルに要約されます。
昔、プログラマはコードをできるだけコンパクトにするように努力していました。すべてのキャラクターは処理時間が長くなります。 1、2、および3文字の変数を使用しました。 2桁の年を使用しました。不要な空白をすべて削除しました。一部の人々はまだそのようにプログラムしています。もう処理時間ではありません。それは高速コーディングに関するものです。
現代のプログラマーは、より記述的な変数を使用して、コードにより多くの注釈とドキュメントを追加することを学んでいます。 OUTERのような余分な単語を使用することで、コードを読む他の人がコードを理解しやすくなります。あいまいさが少なくなります。このスタイルは、そのコードを維持する必要がある将来の人々にとって、はるかに読みやすく親切です。
TableA.name = TableB.nameを削除すると、デカルト積が表示されます。