内部結合と外部結合は、データベーステーブルを結合し、複数のテーブルからデータをクエリするための2つの便利な方法です。この記事では、SQLの内部結合と外部結合の違いを見ていきます。
内部参加
内部結合は、少なくとも1つの列がすべてのテーブルで同じ値を持つ2つ以上のテーブルから行を返します。共通の値がない場合、行は返されません。
内部結合の構文は次のとおりです。
select * from table1 INNER JOIN table2 on table1.column_name = table2.column_name; OR select * from table1 JOIN table2 on table1.column_name = table2.column_name;
外部参加
外部結合は、少なくとも1つの列に共通の値がある2つ以上のテーブルの行と、結合条件が失敗した行を返します。外部結合には次の3つのタイプがあります。
左アウタージョイン
この場合、左側のテーブルのすべての行が結果に保持されます。結合条件が他のテーブルと一致する場合は、それらの列の値が返されます。それ以外の場合は、それらの列にnull値が返されます。左外部結合の構文は次のとおりです。
select * from table1 LEFT OUTER JOIN table2 on table1.column_name = table2.column_name;
右外部結合
この場合、右側のテーブルのすべての行が結果に保持されます。結合条件が他のテーブルと一致する場合は、それらの列の値が返されます。それ以外の場合は、それらの列にnull値が返されます。
右外部結合の構文は次のとおりです
select * from table1 RIGHT OUTER JOIN table2 on table1.column_name = table2.column_name;
完全な外部参加
この場合、両方のテーブルのすべての行が返されます。結合条件が満たされると、両方のテーブルの値を使用して列にデータが入力されます。結合条件が失敗した場合、テーブルの1つの値が列に入力され、残りはnullとして入力されます。
SQLの内部結合と外部結合の違い
内部結合と外部結合の主な違いは次のとおりです。
内部参加
- 共通の列値を持つ行のみを返します。
- INNERJOINまたはJOIN句を使用できます。どちらも同じ効果があります
- 2つ(またはそれ以上)のテーブル間に一致する列値がない場合はnullを返します
- 内部結合は外部結合よりも高速です
- 複数のテーブル間でルックアップを実行すると便利です
- 数学的には、2つのセット(テーブル)の共通部分を返します
外部参加
- 一致する列値がない場合でも、1つ以上のテーブルから値を返します
- 一致する属性がない行の場合、残りの列に対してnullを返します
- 完全外部結合と完全結合は同じ効果があります。
- 内部結合よりも低速です
- 2つ以上のテーブルで完全な情報を取得するために使用されます
- MySQLでは完全外部結合はサポートされていません。 PostgreSQL、SQL Server、Oracle、その他の一般的なデータベースで利用できます。
MySQL用のレポートツールが必要ですか? Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日それを試してみてください!