ホームページ  >  記事  >  データベース  >  mysqlの内部結合と外部結合の違いは何ですか?

mysqlの内部結合と外部結合の違いは何ですか?

青灯夜游
青灯夜游オリジナル
2022-01-06 14:50:2617916ブラウズ

mysql の内部接続と外部接続の違い: 内部接続は接続テーブル内の一致するデータを取り出し、一致しないデータは保持されませんが、外部接続は一致するデータを取り出します。接続テーブル内のデータと一致しないデータは保持されません。また、その値は NULL です。

mysqlの内部結合と外部結合の違いは何ですか?

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

違い

  • 内部結合(内部結合): 接続テーブル内の一致するデータを取り出し、一致しないデータは保持しません
  • 外部結合(外部結合) join) : 接続テーブルから一致するデータを取り出し、一致しないデータは保持されます。値は NULL

#サンプルテーブル# #users table

mysql> select * from users;
+----+-------+
| id | name  |
+----+-------+
|  1 | john  |
|  2 | May   |
|  3 | Lucy  |
|  4 | Jack  |
|  5 | James |
+----+-------+
5 rows in set (0.00 sec)

topics table

mysql> select * from topics;
+----+---------------------------------------+---------+
| id | title                                 | user_id |
+----+---------------------------------------+---------+
|  1 |  Hello world                          |       1 |
|  2 | PHP is the best language in the world |       2 |
|  3 | Laravel artist                        |       6 |
+----+---------------------------------------+---------+
3 rows in set (0.00 sec)

Inner join

Example
  • mysql> select * from users as u inner join topics as t on u.id=t.user_id;
    +----+------+----+---------------------------------------+---------+
    | id | name | id | title                                 | user_id |
    +----+------+----+---------------------------------------+---------+
    |  1 | john |  1 |  Hello world                          |       1 |
    |  2 | May  |  2 | PHP is the best language in the world |       2 |
    +----+------+----+---------------------------------------+---------+
    2 rows in set (0.00 sec)
  • inner は省略できます。テーブルの別名。
mysql> select * from users u join topics t on u.id=t.user_id;
+----+------+----+---------------------------------------+---------+
| id | name | id | title                                 | user_id |
+----+------+----+---------------------------------------+---------+
|  1 | john |  1 |  Hello world                          |       1 |
|  2 | May  |  2 | PHP is the best language in the world |       2 |
+----+------+----+---------------------------------------+---------+
2 rows in set (0.00 sec)

を省略することもできます。上の 2 つの文は、

mysql> select * from users,topics where users.id=topics.user_id;
+----+------+----+---------------------------------------+---------+
| id | name | id | title                                 | user_id |
+----+------+----+---------------------------------------+---------+
|  1 | john |  1 |  Hello world                          |       1 |
|  2 | May  |  2 | PHP is the best language in the world |       2 |
+----+------+----+---------------------------------------+---------+
2 rows in set (0.00 sec)

outer join

left external join: take the left テーブルと同等です。はメイン テーブルです。
  • 右外部結合: 右側のテーブルをメイン テーブルとして使用します。
  • 特定のテーブルをメイン テーブルとして使用して、可能かどうかに関係なく、関連するクエリを実行します。関連がある場合はメインテーブルのデータを保持し、関連がない場合はNULLと表示されます

一般的な説明は、まずメインテーブルのデータをすべて取り出します。を選択し、関連テーブルに移動して、一致する関係があるかどうかを確認します。条件付きデータがあれば通常どおり表示されます。ない場合は、NULL

Example

と表示されます。
mysql> select * from users as u left join topics as t on u.id=t.user_id;
+----+-------+------+---------------------------------------+---------+
| id | name  | id   | title                                 | user_id |
+----+-------+------+---------------------------------------+---------+
|  1 | john  |    1 |  Hello world                          |       1 |
|  2 | May   |    2 | PHP is the best language in the world |       2 |
|  3 | Lucy  | NULL | NULL                                  |    NULL |
|  4 | Jack  | NULL | NULL                                  |    NULL |
|  5 | James | NULL | NULL                                  |    NULL |
+----+-------+------+---------------------------------------+---------+
5 rows in set (0.00 sec)

は、フィールドの位置が異なることを除いて、次と同等です

mysql> select * from topics as t right join users as u on u.id=t.user_id;
+------+---------------------------------------+---------+----+-------+
| id   | title                                 | user_id | id | name  |
+------+---------------------------------------+---------+----+-------+
|    1 |  Hello world                          |       1 |  1 | john  |
|    2 | PHP is the best language in the world |       2 |  2 | May   |
| NULL | NULL                                  |    NULL |  3 | Lucy  |
| NULL | NULL                                  |    NULL |  4 | Jack  |
| NULL | NULL                                  |    NULL |  5 | James |
+------+---------------------------------------+---------+----+-------+
5 rows in set (0.00 sec)

左外部接続と右外部接続は相対的です。主なことは、関連付けのメイン テーブルとしてどのテーブルが使用されるかです。 .

[関連する推奨事項:

mysql ビデオ チュートリアル

]

以上がmysqlの内部結合と外部結合の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。