10.接続テーブル

2452 ワード

接続テーブル


せつぞく

  • は、複数のテーブルに格納データを取得するために接続されている
  • .
  • 接続は、1つのSELECT文でテーブルを関連付けるためのメカニズムであり、複数のテーブルを接続して出力
  • のセットを返すことができる.

    ないぶせつぞく

  • は、2つのテーブル間の等しいテストに基づいて、イントラジョイン(inter join)または等値ジョイン(equijoin)
  • と呼ばれる.
    -- ANSI  INTER JOIN  
    SELECT column_name1,column_name2,column_name3
    FROM table1 INTER JOIN table2 INTER JOIN table3
    ON table1.column_name1 = table2.column_name1;
    
    --  
    
    SELECT column_name1,column_name2,column_name3
    FROM table1,table2
    WHERE table1.column_name1 = table2.column_name1;
    
  • WHERE句によりテーブルの接続
  • を実現する.
  • は、2つのテーブルを接続する際に、実際には、第1のテーブルの各行と第2のテーブルの各行とをペア
  • とする.
  • で参照するカラムに曖昧性が生じる場合は、完全限定カラム名
  • を使用する必要があります.
  • SQLは、1つのSELECT文で接続できるテーブルの数を制限しませんが、接続するテーブルが多ければ多いほど、パフォーマンスが低下します.
    デカルト積
    接続条件のないテーブル関係から返される結果はデカルト積であり、取得されたローの数は、最初のテーブルのロー数に2番目のテーブルのロー数を乗算します.フォーク接続とも呼ばれるデカルト積の接続を返します.

    テーブル別名の使用

  • SQLでは、カラム名と計算フィールドに別名を使用できるほか、テーブル名に別名
  • を付けることもできます.
  • テーブル別名はクエリ実行でのみ使用され、カラム別名とは異なるテーブル別名はクライアント
  • に返されない.
  • テーブルエイリアスを使用すると、SQL文が短縮され、同じテーブル
  • が1つのSELECT文で複数回使用できるようになります.
    SELECT column_name1,column_name2
    FROM table1 AS T1, table2 AS T2
    WHERE T1.column_name3 = T2.column_name3;
    

    セルフジョイン

  • 自己接続は、通常、同じテーブルからデータを取得するサブクエリ文
  • の代わりに外部文として使用される.
  • 多くのDBMS処理接続の速度は、処理サブクエリよりも
  • 速いことが多い.
    SELECT T1.column_name1,T1.column_name2
    FROM table1 AS T1,table2 AS T2
    WHERE T1.column_name1 = T2.column_name1
      AND T2.column_name = 'str';
    

    ナチュラルジョイン

  • 標準の接続(すなわち、内部接続)はすべてのデータを返し、同じ列は
  • まで複数回現れる.
  • 自然接続は複数回の出現を排除し、各列の値を
  • に戻す.
  • 自然接続は、一般に1つのテーブルにワイルドカード(SELECT*)を使用することによって行われ、他のテーブルに対して明確なサブセットを使用することによって
  • が完了する.

    外部ジョイン

  • 外部ジョインは、関連テーブルに関連するロー
  • を含む.
  • SELECT文OUTER JOIN文を使用して外部接続タイプ
  • を指定する.
  • OUTER JOIN構文を使用する場合、そのすべての行を含むテーブル
  • をLEFTまたはRIGHTキーワードで指定する必要があります.
  • 左外部接続(LEFTOUTER JOIN)はOUTER JOIN左の表を示し、右外部接続は逆
  • である.
  • FROMまたはWHERE句の中の表の順序を調整し、左右の外部接続
  • を「交換」することができる.
    SELECT table1.column_name1,table1.column_name2,table2.column_name3
    FROM table1 LEFT OUTER JOIN table2
      ON table1.column_name1 = table2.column_name1;
    

    集計関数付き接続の使用

    SELECT table1.column_name1,
           COUNT(table2.column_name2) AS num
    FROM table1 LEFT OUTER JOIN table2
      ON table1.column_name1 = table2.column_name1
    --  GROUP BY, 
    GROUP BY table1.column_name1;