SQL結合とはSQL結合の種類


この記事はクリスティーナKopeckyによって書かれ、もともと教育的な、株式会社で公開されました.
構造化クエリ言語(SQL)では、リレーショナルデータベース内の単一のテーブルに対して何らかの種類のアクションを実行できます.これらのアクションは、そのテーブル内のレコードを更新、作成、削除または選択できます.
私たちが同じ人についての異なった情報を持っていた2つのテーブルを持っていたならば、我々はその人の請求書に表示するためにその情報のすべてを使用したいですか?そのためにはjoin節を使う必要があります.
このチュートリアルでは、Join句がどのようなものであるかを定義し、結合句の種類について話をし、それぞれについての結合例をあげます.
  • What are SQL Joins?
  • Types of SQL Joins
  • Inner Joins
  • Right Joins
  • Left Joins
  • Full Joins
  • What to learn next
  • SQL結合とは


    SQL Joinステートメントでは、複数のテーブルから情報を一度にアクセスできます.また、データベースを正常化します.正規化により、データの冗長性を低く保つことができ、レコードの削除や更新時にアプリケーションのデータ異常量を減らすことができます.

    Simplified: A JOIN clause allows us to combine rows from two or more tables based on a related column.


    お客様とお客様のご注文をご説明の上、上記の例をご利用ください.お客様とお客様に関する情報をお持ちのお客様テーブルをお持ちの場合は、次のようにします.

    これらのテーブルでは、両方のテーブルに同じ情報がたくさんあることに注意してください.join文は、これらの複製値の必要性を大いに減らします.新しいテーブルは次のようになります.

    我々は、顧客テーブルから情報を選択するために結合句を使用してデータベースを照会することができますし、注文テーブルからの情報は、我々のアプリケーションに必要な場所を使用します.
    あなたのニーズに応じて結合ステートメントのいくつかの異なるタイプがあります.次のセクションでは、各タイプの例を見ていきます.

    結合文の型


    使用するjoinステートメントの型はユースケースによって異なります.結合演算の4種類があります.

  • ( internal ) join :両方のテーブルに対応する値を持つデータセットを返す

  • left (外部) join :左のテーブルからのレコードと、右からのレコードを返します.

  • 右(外側)結合:右のテーブルからのレコードと左からのマッチしたレコードを全て返す

  • フル(外部)結合:左テーブルまたは右テーブルのいずれかにマッチがある場合、すべてのレコードを返す

  • インナージョンズ


    あなたがVenn図で別々の円として各々のテーブルを考えるならば、内部の結合は両方の円が交差する陰影のついた地域です.
    内部結合キーワードは、結合条件が満たされる限り、テーブルからすべての行を選択します.このキーワードは、共通のフィールドが存在するテーブルからの結合された行からなる結果セットを作成します.
    以下は内部結合の構文です:
    SELECT column_name(s)
    FROM table1
    INNER JOIN table2
    ON table1.column_name = table2.column_name;
    
    この例では、null値を持つエントリをすべて削除します.ここでのコードは簡略化されています.どうぞご覧下さいoriginal post 完全なコードのために.
    create table Customers (
        customer_id INT,
        first_name VARCHAR(50),
        last_name VARCHAR(50),
        address VARCHAR(50),
        city VARCHAR(50),
        state VARCHAR(50),
        zip_code VARCHAR(50),
        email VARCHAR(50),
        PRIMARY KEY(customer_id)
    );
    
    insert into Customers (customer_id, first_name, last_name, address, city, state, zip_code, email) values (1, 'Windham', 'McKevitt', '73 Namekagon Park', 'Washington', 'DC', '20525', '[email protected]');
    
    create table Orders (
        order_id INT,
        order_date VARCHAR(50),
        amount VARCHAR(50),
        customer_id INT,
        PRIMARY KEY(order_id)
    );
    
    insert into Orders (order_id, order_date, amount, customer_id) values (34, '07-11-2020', '$56.34', 1);
    
    
    select first_name, last_name, order_date, amount
    from Customers c
    inner join Orders o
    on c.customer_id = o.customer_id
    ORDER BY order_date
    

    右外部結合


    このjoinステートメントはテーブルBからのすべてのレコードを取ります.
    右Joinは、一番右のテーブルの行と、一番左のテーブルに対応する行のすべての行を返します.右の結合は、右の外側としても知られています.以下に構文を示します:
    SELECT column_name(s)
    FROM table1
    RIGHT JOIN table2
    ON table1.column_name = table2.column_name;
    
    ここでは、お客様のテーブルはテーブルAであり、受注テーブルはテーブルBです.どうぞご覧下さいoriginal post 完全なコードのために.
    create table Customers (
        customer_id INT,
        first_name VARCHAR(50),
        last_name VARCHAR(50),
        address VARCHAR(50),
        city VARCHAR(50),
        state VARCHAR(50),
        zip_code VARCHAR(50),
        email VARCHAR(50),
        PRIMARY KEY(customer_id)
    );
    
    insert into Customers (customer_id, first_name, last_name, address, city, state, zip_code, email) values (1, 'Windham', 'McKevitt', '73 Namekagon Park', 'Washington', 'DC', '20525', '[email protected]');
    
    
    create table Orders (
        order_id INT,
        order_date VARCHAR(50),
        amount VARCHAR(50),
        customer_id INT,
        PRIMARY KEY(order_id)
    );
    
    insert into Orders (order_id, order_date, amount, customer_id) values (34, '07-11-2020', '$56.34', 1);
    
    select first_name, last_name, order_date, amount
    from Customers c
    right join Orders o
    on c.customer_id = o.customer_id
    ORDER BY order_date;
    

    左側外部結合


    left joinは右結合に似ています.left joinは、右側のテーブルの一番左のテーブルと一致する行のすべての行を返します.以下は構文です:
    SELECT column_name(s)
    FROM table1
    LEFT JOIN table2
    ON table1.column_name = table2.column_name;
    
    この例では、Customersテーブルからのすべてのレコードが(Ordersテーブルの)一致する列に沿って表示されます.ここでのコードは簡略化されています.どうぞご覧下さいoriginal post 完全なコードのために.
    create table Customers (
        customer_id INT,
        first_name VARCHAR(50),
        last_name VARCHAR(50),
        address VARCHAR(50),
        city VARCHAR(50),
        state VARCHAR(50),
        zip_code VARCHAR(50),
        email VARCHAR(50),
        PRIMARY KEY(customer_id)
    );
    
    insert into Customers (customer_id, first_name, last_name, address, city, state, zip_code, email) values (1, 'Windham', 'McKevitt', '73 Namekagon Park', 'Washington', 'DC', '20525', '[email protected]');
    
    
    create table Orders (
        order_id INT,
        order_date VARCHAR(50),
        amount VARCHAR(50),
        customer_id INT,
        PRIMARY KEY(order_id)
    );
    
    insert into Orders (order_id, order_date, amount, customer_id) values (34, '07-11-2020', '$56.34', 1);
    
    
    select first_name, last_name, order_date, amount
    from Customers c
    left join Orders o
    on c.customer_id = o.customer_id
    ORDER BY order_date;
    

    完全な結合


    完全な結合は、完全な外部結合としても知られています.これは基本的にクエリがデータと戻りレコードを両方のテーブルから結合することを意味します.
    Full Joinは、すべての行を含む左右の結合の結果を組み合わせて結果セットを作成します.を返します.結果セット(結合テーブル)はnull値を示します.構文は以下の通りです.
    SELECT column_name(s)
    FROM table1
    FULL OUTER JOIN table2
    ON table1.column_name = table2.column_name
    WHERE condition;
    

    Note: Full joins are not typically used, which may explain why MySQL doesn’t have support for one. There are some use cases, however.

    For example, with view entries where an order is not associated with a customer, or a customer that has not made any orders.


    次に学ぶこと


    SQLでの結合方法の学習に関する問題.この単純なスキルを完全に多くのあなたのSQLをコーディングすることができます.しかし、まだ学ぶことがもっとあります.次のステップは
  • クロス結合
  • ワイルドカードとの結合
  • 外部キーに結合
  • 高度SQL
  • Want more blogs? Sign up for our Blog Newsletter for bi-monthly collections of coding tips, top articles, featured writers, and more.


    ハッピーラーニング!

    SQLについての続きを読む

  • What are database schemas? 5 minute guide with examples
  • What is a Database Query? SQL and NoSQL queries explained
  • Database Design Tutorial