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 チュートリアル分析

推薦する

HTMLデザインパターンの日々の勉強ノート

HTML デザインパターン学習ノート今週は主にHTMLデザインパターンを学びました。学習内容をまとめ...

MySQL 整合性制約の定義と例のチュートリアル

目次整合性制約整合性制約の定義整合性制約の分類主キー制約単一の主キーと複合主キーの違い主キーフィール...

MySQL パーティションテーブルのベストプラクティスガイド

序文:パーティショニングはテーブル設計パターンです。一般的に、テーブル パーティショニングとは、条件...

Docker を使用してイメージをローカルにパッケージ化してデプロイする方法

初めてDockerを使用してイメージをローカルにパッケージ化してデプロイするまず、私のラップトップシ...

ウェブ上の模倣と盗作に関する議論

2005年に業界に入ってから数か月後、労働者の日休みの期間中、1か月以上毎日12時まで残業をしました...

mysql5.7 以降で my.ini を設定するための詳細な手順

Windows 64 ビット版 MySQL 5.7 以降の解凍パッケージにデータディレクトリ、my-...

vue+echarts で中国地図のフロー効果を実現する (詳細な手順)

@vue+echarts は中国地図のフロー効果を実現します#レンダリングを見てみましょう手順:コ...

MLSQL スタックでストリームのデバッグを簡単にする方法

序文クラスメートが MLSQL Stack のストリーミング サポートを調査しています。そこで、フロ...

MySQL 8.0 の非表示インデックスの詳細な説明

言葉MySQL 8.0 は最初のバージョンから 4 年を経てリリースされました。バージョン 8.0 ...

Nginx のパフォーマンスを向上させるための提案

Web アプリケーションが 1 台のマシンでのみ実行される場合、パフォーマンスを向上させるのは非常に...

Ansibleを使用してディレクトリ内のすべてのコンテンツを削除する方法

Ansible を使用する学生は、以下に示すように、Ansible が特定のフォルダーまたはファイル...

Vueコンポーネントドキュメント生成ツールライブラリのメソッド

目次.vue ファイルの解析文書情報を抽出するコンポーネント名、説明、プロパティ、メソッド、モデルを...

Vue.js スタイルレイアウト Flutter ビジネス開発共通スキル

シャドウスタイルにおけるフラッターとCSSの対応UIによって指定されたCSSスタイル 幅: 75px...

CSS3 でテキストマーキーを実装するためのサンプルコード

背景何が起こったかというと、Luzhu は偶然、宇宙で最高の外部スピーカーを備えた携帯電話について知...