sql >> データベース >  >> RDS >> Database

SQLの内部結合と外部結合の違い

    内部結合と外部結合は、データベーステーブルを結合し、複数のテーブルからデータをクエリするための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を使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日それを試してみてください!

    1. INNERJOINを使用してSQLServerの複数のテーブルを更新する

    2. MySQLで文字列内の部分文字列の位置を見つける3つの方法

    3. INNERJOINを使用してSQLServerテーブルを結合し、ASP.NETWebフォームに表示する

    4. 行が変更された場合にのみ、更新後にMySQLトリガー