[Database] JOIN
4929 ワード
このリリースには、データベース
...1987年にイギリスのイラストレーターマーティン・ハンフォードが描いた一世を風靡した絵本.
皆さんは
すべてのものが一致する1つの役は1つだけで、ウィリーは存在します.
データベースには、条件を満たすデータを取得するために
演算を使用します.このセクションでは、
複数のテーブルをマージしてデータを検索します.
取得するデータが
各テーブルの1つの列を複数のテーブルにインポートします.
一度に1つのデータを検索します.一般的に使用される接触点は、2つのテーブルを接続する
同じデータ型を使用して2つのカラムの接点を比較するカラムでなければなりません.
では、なぜ1つのテーブルにデータを置くのではなく、2つのテーブルに分けて、
次の表が掲示板のDB表であるとするこの場合、
著者の年齢が何らかの理由で変更された場合は、表のすべての著者の名前を変更します.
与えるべきだ.スレが10万だったら10万は修正
しかし、下記のように掲示板の表と会員の表が分かれていたらどうなるのでしょうか?
掲示板のデータ量にかかわらず、会員表に一度名前を変更すれば終了です.
伝言板に作者の年齢または氏名のデータが必要な場合は、作者IDの欄を使用してJOINを入力し、年齢と氏名のデータを取得してください.
そこで、リレーショナル・データベースでJOINを使用します.次に、JOINのタイプを1つずつ理解してみましょう.
参考までに、
最初に表示する
LEFT JOINをテストするために下のテーブルを作りました
上記で作成した2つのテーブルを使用して、次のクエリ文のようにLEFTJOINを実行しました.
従って、IDテーブルにあるが掲示板テーブルにないデータについては、IDテーブルの情報はそのまま出力され、BテーブルのカラムはNULL値で出力される.
2番目のJOINは
これは、両方のテーブルが存在する値
次に、上部のサンプル・テーブルを参照して作成したクエリー・ステートメントとクエリー・ステートメントの結果を示します.
3番目に表示する
多くのDBでは
次に、上部のサンプル・テーブルを参照して作成したクエリー・ステートメントとクエリー・ステートメントの結果を示します.
最後に、表示する
2つのテーブルが
他の
次に、上部のサンプル・テーブルを参照して作成したクエリー・ステートメントとクエリー・ステートメントの結果を示します.
以上が4種類の
テーブルを正規化してデータを分割することで、コンシステンシの問題を解決できますが、テーブル間の論理接続が必要です.
したがって、このような特定の論理関係を表す
JOIN
の内容が含まれています.[Intro]
...1987年にイギリスのイラストレーターマーティン・ハンフォードが描いた一世を風靡した絵本.
皆さんは
윌리를 찾아라
を覚えていますか?동그란 안경
、힌색과 빨간색의 스트라이프 긴팔티
、청바지
、모자
、および신발
.すべてのものが一致する1つの役は1つだけで、ウィリーは存在します.
データベースには、条件を満たすデータを取得するために
JOIN
が必要です.演算を使用します.このセクションでは、
JOIN
の概念とタイプについて説明します.[Definition]
複数のテーブルをマージしてデータを検索します.
取得するデータが
한개의 테이블
ではなく여러개의 테이블
である場合各テーブルの1つの列を複数のテーブルにインポートします.
一度に1つのデータを検索します.一般的に使用される接触点は、2つのテーブルを接続する
PK
とFK
である.同じデータ型を使用して2つのカラムの接点を比較するカラムでなければなりません.
では、なぜ1つのテーブルにデータを置くのではなく、2つのテーブルに分けて、
Join
でデータを取得しますか?次の表が掲示板のDB表であるとするこの場合、
著者の年齢が何らかの理由で変更された場合は、表のすべての著者の名前を変更します.
与えるべきだ.スレが10万だったら10万は修正
しかし、下記のように掲示板の表と会員の表が分かれていたらどうなるのでしょうか?
掲示板のデータ量にかかわらず、会員表に一度名前を変更すれば終了です.
伝言板に作者の年齢または氏名のデータが必要な場合は、作者IDの欄を使用してJOINを入力し、年齢と氏名のデータを取得してください.
そこで、リレーショナル・データベースでJOINを使用します.次に、JOINのタイプを1つずつ理解してみましょう.
参考までに、
LEFT JOIN
とINNER JOIN
の2種類は絶対的に使用されることが多く、残りの使用は少ない.[LEFT & RIGHT JOIN]
最初に表示する
JOIN
はLEFT JOIN
です.参照として、LEFT OUTER JOIN
をLEFT 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 JOIN
INNER 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番目に表示する
JOIN
はFULL 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]
最後に、表示する
JOIN
はEXCLUSIVE 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
の条件を慎重に記入しなければならない.Reference
この問題について([Database] JOIN), 我々は、より多くの情報をここで見つけました https://velog.io/@jude0124/Database-JOINテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol