[Database] JOIN


このリリースには、データベースJOINの内容が含まれています.

[Intro]



...1987年にイギリスのイラストレーターマーティン・ハンフォードが描いた一世を風靡した絵本.
皆さんは윌리를 찾아라を覚えていますか?동그란 안경힌색과 빨간색의 스트라이프 긴팔티청바지모자、および신발.
すべてのものが一致する1つの役は1つだけで、ウィリーは存在します.
データベースには、条件を満たすデータを取得するためにJOINが必要です.
演算を使用します.このセクションでは、JOINの概念とタイプについて説明します.

[Definition]


複数のテーブルをマージしてデータを検索します.
取得するデータが한개의 테이블ではなく여러개의 테이블である場合
各テーブルの1つの列を複数のテーブルにインポートします.
一度に1つのデータを検索します.一般的に使用される接触点は、2つのテーブルを接続するPKFKである.
同じデータ型を使用して2つのカラムの接点を比較するカラムでなければなりません.
では、なぜ1つのテーブルにデータを置くのではなく、2つのテーブルに分けて、Joinでデータを取得しますか?
次の表が掲示板のDB表であるとするこの場合、
著者の年齢が何らかの理由で変更された場合は、表のすべての著者の名前を変更します.
与えるべきだ.スレが10万だったら10万は修正

しかし、下記のように掲示板の表と会員の表が分かれていたらどうなるのでしょうか?


掲示板のデータ量にかかわらず、会員表に一度名前を変更すれば終了です.
伝言板に作者の年齢または氏名のデータが必要な場合は、作者IDの欄を使用してJOINを入力し、年齢と氏名のデータを取得してください.
そこで、リレーショナル・データベースでJOINを使用します.次に、JOINのタイプを1つずつ理解してみましょう.
参考までに、LEFT JOININNER JOINの2種類は絶対的に使用されることが多く、残りの使用は少ない.

[LEFT & RIGHT JOIN]



最初に表示するJOINLEFT JOINです.参照として、LEFT OUTER JOINLEFT JOINと略す.LEFT JOINの他にRIGHT JOINがありますが、実際には、これはLEFTJOINの方向とは異なる概念にすぎません.
LEFT JOINをテストするために下のテーブルを作りました

上記で作成した2つのテーブルを使用して、次のクエリ文のようにLEFTJOINを実行しました.
SELECT * FROM BOARD A
LEFT JOIN ID B
ON A.ID_SEQ = B.ID_SEQ;
各テーブルのid seq列はJOINであり、LEFT JOINであるため、左側に位置するIDテーブルがベースとなる.
従って、IDテーブルにあるが掲示板テーブルにないデータについては、IDテーブルの情報はそのまま出力され、BテーブルのカラムはNULL値で出力される.
WHERE조건を次のように問い合わせることもできます.
SELECT * FROM BBS A 
LEFT JOIN ID B
ON A.ID_SEQ = B.ID_SEQ
WHERE B.ID_SEQ IS NULL

[INNER JOIN]



2番目のJOINはINNER JOININNER JOINにはNULLの値はありません.
これは、両方のテーブルが存在する値JOINのみを出力するためである.LEFT JOINで確認したサンプル表を使用して、INNER JOINを行います.
次に、上部のサンプル・テーブルを参照して作成したクエリー・ステートメントとクエリー・ステートメントの結果を示します.
SELECT * FROM BBS A 
INNDER JOIN ID B
ON A.ID_SEQ = B.ID_SEQ

[FULL OUTER JOIN]



3番目に表示するJOINFULL OUTER JOINです.
多くのDBではFULL OUTER JOINがサポートされていないことに注意してください.FULL OUTER JOINをサポートしていないデータベースは、UNION関数を使用してFULL OUTER JOINを置き換えます.
次に、上部のサンプル・テーブルを参照して作成したクエリー・ステートメントとクエリー・ステートメントの結果を示します.
SELECT * FROM BOARD A 
FULL OUTER JOIN ID B
ON A.ID_SEQ = B.ID_SEQ
UNION
SELECT * FROM BOARD A
UNION
SELECT * FROM ID B;

[EXCLUSIVE JOIN]



最後に、表示するJOINEXCLUSIVE JOINです.
2つのテーブルがEXCLUSIVE JOINである場合、JOINは1つのテーブルのデータのみを取得する.
他のJOINとは異なり、単独のEXCLUSIVE JOIN関数ではなく、既存のLEFT JOINおよびWhere節の条件を使用して作成されたJOINである.
次に、上部のサンプル・テーブルを参照して作成したクエリー・ステートメントとクエリー・ステートメントの結果を示します.
SELECT * FROM BOARD A 
LEFT JOIN ID B
ON A.ID_SEQ = B.ID_SEQ
WHERE B.ID_SEQ IS NULL

[Conclusion]


以上が4種類のJoinの基本的な使い方です.JOINを必要とする基本的な理由は、以前に発表された標準化から始まる.これは、例外を回避するために正規化された分割テーブルを作成したためです.
テーブルを正規化してデータを分割することで、コンシステンシの問題を解決できますが、テーブル間の論理接続が必要です.
したがって、このような特定の論理関係を表すJOINが誤って記述されている場合、システムリソースが不足したり、応答時間が遅延したりする可能性があるため、JOINの条件を慎重に記入しなければならない.