SQL---DML---連結表のCROSS JOINとINNER JOIN


リレーショナル・テーブルの設計は、情報を複数のテーブル、1種類のデータ、1つのテーブルに分解することです.各テーブルは、リレーションシップ設計のリレーションシップとして一般的な値によって相互に関連付けられます.リレーショナル・データベースの伸縮性は、非リレーショナル・データベースよりも優れています.
ただし、データは複数のテーブルに格納されており、単一のSELECT文でデータを取得するには、結合を使用する必要があります.結合は物理エンティティではなく、実際のデータベースには存在しません.
≪完全修飾列名|Full Qualify Column Name|oem_src≫:参照する列に二義性がある場合は、完全修飾列名(ピリオドで区切られた表名と列名)を使用する必要があります.テーブル名で制限されていない二義的なカラム名を参照すると、ほとんどのDBMSはエラーを返します.
WHERE句の重要性:WHERE句はフィルタ条件として使用され、与えられた条件に一致する行のみが含まれます.WHERE句がない場合、1番目のテーブルの各ローは、論理的にペアリングできるかどうかにかかわらず、2番目のテーブルの各ローとペアリングされます.
  • フォークカップリング(CROSS JOIN)
  • ≪デカルト積|デカルト積|emdw≫:結合条件のないテーブル関係から返される結果はデカルト積であり、取得されたローの数は、最初のテーブルのロー数に2番目のテーブルのロー数を乗算します.この結合を
    フォーク連結、CROSS JOIN.
    フォーク結合の例:
    SELECT vend_name,prod_name,prod_price
    FROM Vendors,Products;

    すべての連結にWHERE句があることを保証すべきです!さもないとフォークがつながっています.
  • 内部連結、等値連結(INNER JOIN)
  • 等値結合は内部結合と呼ばれ、2つのテーブル間の等しいテストに基づいています.
    ANSI SQL仕様では、INNER JOIN構文が優先されます.
    例:
    SELECT vend_name,prod_name,prod_price
    FROM Vendors INNER JOIN Products
    on Vendors.vend_id = Products.vend_id;

    内部連結は、以下の方法で実現することもできる.
    例:
    SELECT vend_name,prod_name,prod_price
    FROM Vendors,Products
    WHERE Vendors.vend_id = Products.vend_id;

    DBMSは実行時に指定されたテーブルを関連付けて結合を処理するが、非常にリソースを消費するため、不要なテーブルを結合しないでください.結合されたテーブルが多ければ多いほど、パフォーマンスの低下が激しくなります.