MySQL 結合クエリ構文と例

MySQL 結合クエリ構文と例

接続クエリ:

これは、2 つのクエリ (またはテーブル) の各行をペアで接続した結果です。つまり、1 つのテーブルの行と別のテーブルの行を接続した結果です。新しい行を取得するには、「水平ドッキング」を実行します。

接続クエリには、次のさまざまな形式と接続方法が含まれます。

クロス結合、内部結合、外部結合(左外部結合、右外部結合に分かれています)

結合クエリ構文:

select * from テーブル名 [接続方法] join テーブル名 [接続条件] where ...;

テストデータ:

mysql> テストから * を選択します。
+----+--------+------+------+
| ID | 名前 | 性別 | 年齢 |
+----+--------+------+------+
| 1 | name1 | 女性 | 15 |
| 2 | name1 | 女性 | 15 |
| 4 | name2 | 男性 | 30 |
| 5 | name50 | 男性 | 12 |
+----+--------+------+------+

mysql> ユーザーから * を選択します。
+----+-------+------+
| ID | 名前 | 年齢 |
+----+-------+------+
| 1 | 名前1 | 18 |
| 2 | 名前2 | 15 |
| 3 | 名前3 | 20 |
| 4 | 名前4 | 30 |
+----+-------+------+

クロス結合

1. クロス結合は、実際には結合クエリの「完全バージョン」と見なすことができます。つまり、すべての行が無条件に接続されます。

2. キーワード「cross」は省略できます。

3. クロス結合は「直積」とも呼ばれますが、通常は応用価値がほとんどありません。

構文:

テーブル名、テーブル名から*を選択します。
テーブル名から*を選択し、テーブル名を結合します。
テーブル名から*を選択し、テーブル名をクロス結合します。

標準クロスコネクション書き込み

mysql> テストから * を選択して、クロス結合ユーザーを選択します。
+----+--------+------+------+-------+------+------+
| ID | 名前 | 性別 | 年齢 | ID | 名前 | 年齢 |
+----+--------+------+------+-------+------+------+
| 1 | name1 | 女性 | 15 | 1 | name1 | 18 |
| 2 | name1 | 女性 | 15 | 1 | name1 | 18 |
| 4 | name2 | 男性 | 30 | 1 | name1 | 18 |
| 5 | name50 | 男性 | 12 | 1 | name1 | 18 |
| 1 | name1 | 女性 | 15 | 2 | name2 | 15 |
| 2 | name1 | 女性 | 15 | 2 | name2 | 15 |
| 4 | name2 | 男性 | 30 | 2 | name2 | 15 |
| 5 | name50 | 男性 | 12 | 2 | name2 | 15 |
| 1 | name1 | 女性 | 15 | 3 | name3 | 20 |
| 2 | name1 | 女性 | 15 | 3 | name3 | 20 |
| 4 | name2 | 男性 | 30 | 3 | name3 | 20 |
| 5 | name50 | 男性 | 12 | 3 | name3 | 20 |
| 1 | name1 | 女性 | 15 | 4 | name4 | 30 |
| 2 | name1 | 女性 | 15 | 4 | name4 | 30 |
| 4 | name2 | 男性 | 30 | 4 | name4 | 30 |
| 5 | name50 | 男性 | 12 | 4 | name4 | 30 |
+----+--------+------+------+-------+------+------+

接続するには、直接 join を使用します。これは、cross join と同等です。デフォルトは cross join です。

mysql> テストから * を選択してユーザーに参加します。

クエリの結果は上記と一致しています!!!

テーブルから直接テーブルに接続することもできます...クロス接続と同等です

mysql> テスト、ユーザーから * を選択します。

クエリの結果は上記と一致しています!!!

内部結合

1. 内部結合は実際にはクロス結合に基づいており、一部のデータは条件によって除外されます。

2. キーワード「inner」は省略できますが、含めることをお勧めします。重要なのは、結合条件です。

3. 内部結合は最も広く使用されている結合クエリであり、その本質は条件に基づいて「意味のあるデータ」をフィルタリングすることです。

構文:

select * from table name join table name on join condition;
select * from table name inner join table name on join condition;

2つのテーブルで同じ名前のフィールドを持つデータを検索する

mysql> test.name=user.name のテスト内部結合ユーザーから * を選択します。
+----+-------+------+------+-------+------+------+
| ID | 名前 | 性別 | 年齢 | ID | 名前 | 年齢 |
+----+-------+------+------+-------+------+------+
| 1 | name1 | 女性 | 15 | 1 | name1 | 18 |
| 2 | name1 | 女性 | 15 | 1 | name1 | 18 |
| 4 | name2 | 男性 | 30 | 2 | name2 | 15 |
+----+-------+------+------+-------+------+------+

2つのテーブルで同じ名前のフィールドを持つデータを検索し、asを使用してテーブルに別の名前を付けます。

mysql> select * from test as t inner join user as u on t.name=u.name;

クエリの結果は上記と一致しています!!!

2つのテーブルの名前フィールドが等しく、テストテーブルでは age>15、ユーザーテーブルでは age>10 であるデータを検索します。

テーブル内に重複フィールドがある場合は、[テーブル名.フィールド名] を使用する必要があります (例: age)。

mysql> select * from test inner join user on test.name=user.name where test.age>15 and user.age>10;
+----+-------+------+------+-------+------+------+
| ID | 名前 | 性別 | 年齢 | ID | 名前 | 年齢 |
+----+-------+------+------+-------+------+------+
| 4 | name2 | 男性 | 30 | 2 | name2 | 15 |
+----+-------+------+------+-------+------+------+

2 つのテーブルで、名前フィールドが等しく、性別が「男性」であるデータを見つけます。

テーブル内に重複するフィールドがない場合は、[テーブル名.フィールド名] を使用するか、[フィールド名] を直接使用できます (例: 性別)。

mysql> select * from test as t inner join user as u on t.name=u.name where t.sex='男';
mysql> select * from test as t inner join user as u on t.name=u.name where sex='男';
+----+-------+------+------+-------+------+------+
| ID | 名前 | 性別 | 年齢 | ID | 名前 | 年齢 |
+----+-------+------+------+-------+------+------+
| 4 | name2 | 男性 | 30 | 2 | name2 | 15 |
+----+-------+------+------+-------+------+------+

外部結合 - 左外部結合

1. 左外部結合は、実際には左側のテーブル内のすべてのデータを取得できることを保証する結合の一種です。

2. 左外部結合は実際には内部結合に基づいており、条件を満たさない左のテーブルのすべてのデータが追加されます。

3. キーワード「outer」は省略できます。

構文:

テーブル名から * を選択し、結合条件で [外部] 結合を選択します (...);

左側の表を基準として、左側の表のすべてのデータが表示され、一致しないデータはNULLであることを確認します。

mysql> select * from test left join user on test.name=user.name;
+----+--------+------+------+------+------+------+
| ID | 名前 | 性別 | 年齢 | ID | 名前 | 年齢 |
+----+--------+------+------+------+------+------+
| 1 | name1 | 女性 | 15 | 1 | name1 | 18 |
| 2 | name1 | 女性 | 15 | 1 | name1 | 18 |
| 4 | name2 | 男性 | 30 | 2 | name2 | 15 |
| 5 | name50 | 男性 | 12 | NULL | NULL | NULL |
+----+--------+------+------+------+------+------+

外部結合 - 右外部結合

1. 右外部結合は、実際には、右側のテーブル内のすべてのデータを取得できることを保証する結合の一種です。

2. 右外部結合は実際には内部結合に基づいており、条件を満たさない右テーブルのすべてのデータが加えられます。

3. キーワード「outer」は省略できます。

構文:

テーブル名から * を選択し、結合条件で [外部] 結合を選択します (...);

右側の表をベンチマークとして、右側の表のすべてのデータが表示され、一致しないデータはNULLであることを確認します。

mysql> test から * を選択し、test.name=user.name のユーザーを結合します。
+------+-------+------+------+------+------+------+
| ID | 名前 | 性別 | 年齢 | ID | 名前 | 年齢 |
+------+-------+------+------+------+------+------+
| 1 | name1 | 女性 | 15 | 1 | name1 | 18 |
| 2 | name1 | 女性 | 15 | 1 | name1 | 18 |
| 4 | name2 | 男性 | 30 | 2 | name2 | 15 |
| NULL | NULL | NULL | NULL | 3 | 名前3 | 20 |
| NULL | NULL | NULL | NULL | 4 | name4 | 30 |
+------+-------+------+------+-------+------+------+

要約する

これで、MySQL 結合クエリの構文と例に関するこの記事は終了です。MySQL 結合クエリの関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL の結合クエリとサブクエリの問題
  • MySQL マルチテーブル結合クエリの詳細な説明
  • どのような種類の MYSQL 接続クエリを知っていますか?
  • MySQL接続クエリの原理と応用
  • MySQLの結合クエリ、ユニオンクエリ、サブクエリの原理と使用例の詳細な説明
  • Mysql 自己結合クエリ例の詳細な説明
  • MySQL マルチテーブル結合クエリ例の説明
  • MySQL接続クエリの詳細な説明

<<:  Vueのカスタムディレクティブの詳細なガイド

>>:  Linux システム (Centos6.5 以上) のインストール JDK チュートリアル分析

推薦する

MySQL における explain の役割の詳細な説明

1. MYSQLインデックスインデックス: MySQL がデータを効率的に取得するのに役立つデータ構...

テキストの展開と折りたたみの効果を実現するJavaScript

リスト形式のテキストの展開と折りたたみの実装は参考までに。具体的な内容は以下のとおりです。必要: 1...

TypescriptとAxiosに基づくインターフェースリクエスト管理の詳細な説明

目次アイデア傍受を要求するレスポンスインターセプションhttpClient.tsを使用してリクエスト...

CSSメディアクエリのアスペクト比を小さくする方法

CSS メディア クエリには非常に便利なアスペクト比、aspect-ratio があり、幅と高さを直...

XHTML コードで Marquee タグを使用する方法

フォーラムで、ネットユーザーの jeanjean20 が、Marquee を標準に適合させる方法につ...

Tencent Cloud 上で Hadoop 3.x 疑似クラスターを構築する方法を説明します

1. 環境整備CentOS Linux リリース 7.5.1804 (コア)インストールフォルダを作...

HTML割引価格計算の実装原理とスクリプトコード

コードをコピーコードは次のとおりです。 <!DOCTYPE HTML PUBLIC "...

カルーセルカルーセルケースのJS実装

この記事の例では、カルーセルカルーセルを実装するためのJSの具体的なコードを参考までに共有しています...

MySQLクエリのパフォーマンスを分析する方法

目次スロークエリの基礎: データ取得の最適化データベースから不要なデータが要求されていないか確認する...

Nginx+ModSecurity セキュリティモジュールの導入

目次1. ダウンロード2. 展開1.Nginxのデプロイメント2. ModSecurityの展開3....

Reactでのこのリファレンスの詳細な説明

目次原因:以下を実行します: 1. コンストラクター2.レンダリング機能3.bind関数とarrow...

MYSQL8.0.13 無料インストール版 設定チュートリアル例 詳細説明

1. ダウンロード、例として8.0を取り上げますダウンロードアドレス: https://dev.my...

Docker で nginx のログレベルを調整する方法

目次はじめにNginx Dockerファイル新しい会議もっと参考文献はじめに最近、アプリケーションの...

マインドマップを使って4つの側面からWeb標準の価値を議論する

このアイデアを改善し、より良い意見を得られることを期待して、議論を刺激するためにいくつかの値を大まか...

vue3 における vuex と pinia の落とし穴

目次導入インストールと使用方法文章の相違点と類似点の簡単な比較VuexとPiniaの長所と短所Pin...