MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLの結合とは何ですか?


MySQL SELECTを使用して、一度に1つのテーブルから情報を取得できますが、1つのテーブルだけですべての質問に答えることはできません。したがって、上記の目的、つまり複数のテーブルに格納されている情報を利用するために、結合操作を使用できます。

基本的に、MySQL結合は、2つ以上のテーブル間の共通列の値に基づいて、2つ以上のテーブルのデータをリンクする方法であり、その結果、新しい一時テーブルが作成されます。つまり、MySQL結合を使用すると、新しい一時テーブル内の2つ以上の論理的に関連するテーブルからレコードを取得できると言えます。新しい一時テーブルは、2つのテーブルが共有する列に基づいて作成されます。これは、意味のある比較列を表します。

一般的な値は通常、結合される参加テーブルの両方に表示される同じ列名とデータ型です。これらの列は、結合キーまたは共通キーと呼ばれます。

MySQLは次のタイプの結合をサポートしています:

クロスジョイン

実際、クロスジョインはジョインの基本的な形式です。 2つのテーブルがある場合、table1の各行を取得し、それをtable2の各行に追加します。したがって、table1に3行、table2に2行がある場合、これらのテーブルを相互結合した後、合計6行になります。これを理解するために、次のデータを持つtbl_1とtbl_2という名前の2つのテーブルの例を取り上げます。

mysql> Select * from tbl_1;
+----+--------+
| Id | Name   |
+----+--------+
| 1  | Gaurav  |
| 2  | Rahul   |
| 3  | Raman   |
| 4  | Aarav   |
+----+--------+
4 rows in set (0.00 sec)

mysql> Select * from tbl_2;
+----+---------+
| Id | Name    |
+----+---------+
| A  | Aarav   |
| B  | Mohan   |
| C  | Jai     |
| D  | Harshit |
+----+---------+
4 rows in set (0.00 sec)

ここで、以下のクエリは、上記のテーブル間でCROSSJOINを実行します。

mysql> Select tbl_1.id, tbl_2.id FROM tbl_1 CROSS JOIN tbl_2;
+----+----+
| id | id |
+----+----+
| 1  | A  |
| 2  | A  |
| 3  | A  |
| 4  | A  |
| 1  | B  |
| 2  | B  |
| 3  | B  |
| 4  | B  |
| 1  | C  |
| 2  | C  |
| 3  | C  |
| 4  | C  |
| 1  | D  |
| 2  | D  |
| 3  | D  |
| 4  | D  |
+----+----+
16 rows in set (0.00 sec)

内部参加または エクイジョイン

内部結合を形成するには、join-predicateと呼ばれる特定の条件を指定する必要があります。実際には、内部結合または等結合では、2つの結合されたテーブルの行が一致する列値を持つ必要があります。それを理解するために、次のクエリは「tbl_1」と「tbl_2」という名前のテーブルを内部結合します。

mysql> SELECT tbl_1.id,tbl_2.id FROM tbl_1 INNER JOIN tbl_2 ON tbl_1.name = tbl_2.name;
+----+----+
| id | id |
+----+----+
| 4  | A  |
+----+----+
1 row in set (0.00 sec)

結果セットは、列名がtbl_1のid =4とtbl_2のid=‘A’で同じ値を持っていることを示しています。

左参加

内部結合で必要だったように、左結合にも結合述語が必要です。唯一の違いは、LEFT結合を使用して2つのテーブルを結合するときに、左テーブルと右テーブルの概念が導入されることです。これは、join-predicateを満たす行と、join-predicateを満たさない行を含む、左側のテーブルのすべての行を返します。結合述部と一致しない行の場合、結果セットの右側のテーブルの列にNULLが表示されます。これを理解するには、テーブルtbl_1とtbl_2を使用してクエリを実行すると、左結合が実行されます。

mysql> SELECT tbl_1.id,tbl_2.id FROM tbl_1 LEFT JOIN tbl_2 ON tbl_1.name = tbl_2.name;
+----+------+
| id | id   |
+----+------+
| 1  | NULL  |
| 2  | NULL  |
| 3  | NULL  |
| 4  | A     |
+----+------+
4 rows in set (0.02 sec)

右参加

テーブルの扱いが逆になることを除いて、LEFT結合に似ています。右結合を使用すると、右のテーブルのすべての行が結果セットに表示されます。左側のテーブルに一致する行がない右側のテーブルの行の場合、左側のテーブルの列にNULLが表示されます。それを理解するには、テーブルtbl_1とtbl_2を使用して次のクエリを実行し、右結合を実行します。

mysql> SELECT tbl_1.id,tbl_2.id
-> FROM tbl_1 RIGHT JOIN tbl_2 ON tbl_1.name = tbl_2.name;
+------+----+
| id   | id |
+------+----+
| 4    | A  |
| NULL | B  |
| NULL | C  |
| NULL | D  |
+------+----+
4 rows in set (0.00 sec)

  1. MySQLがサポートするプラットフォームとは何ですか?

    MySQLがサポートするさまざまなプラットフォームを見てみましょう。 MySQLは仮想環境にデプロイできます。 下記のオペレーティングシステムをサポートしています- Oracle Linux / Red Hat / CentOS Oracle Linux 8 / Red Hat Enterprise Linux 8 / CentOS 8、アーキテクチャはx86_64、ARM 64 Oracle Linux 7 / Red Hat Enterprise Linux 7 / CentOS 7、そのアーキテクチャはARM 64 Oracle Linux 7 / Red H

  2. C#での反射とは何ですか?

    リフレクションオブジェクトは、実行時にタイプ情報を取得するために使用されます。実行中のプログラムのメタデータへのアクセスを提供するクラスは、System.Reflection名前空間にあります。 システムのMemberInfoオブジェクト。クラスに関連付けられた属性を検出するには、リフレクションクラスを初期化する必要があります。 以下の例では、ターゲットクラスのオブジェクトを設定しました- System.Reflection.MemberInfo info = typeof(MyClass); これが例です- 例 using System; using System.Reflection