MySQLでテーブルを接続するいくつかの方法

MySQLでテーブルを接続するいくつかの方法

MySQL テーブルでの接続方法は実は非常に簡単なので、ここではその特徴を簡単にリストします。

テーブル接続(JOIN)は、内部接続(JOIN/INNER JOIN)と外部接続(LEFT JOIN/RIGHT JOIN)に分けられます。

まず、このデモの 2 つのテーブルを見てみましょう。

mysql> SELECT * FROM 学生;
+------+----------+------+------+
| s_id | s_name | 年齢 | c_id |
+------+----------+------+------+
| 1 | シャオミン | 13 | 1 |
| 2 | 暁紅 | 41 | 4 |
| 3 | シャオシア | 22 | 3 |
| 4 | 暁剛 | 32 | 1 |
| 5 | シャオリ | 41 | 2 |
| 6 | 王武 | 13 | 2 |
| 7 | リシ | 22 | 3 |
| 8 | 張さん | 11 | 9 |
+------+----------+------+------+
セット内の行数は 8 です (0.00 秒)

mysql> SELECT * FROM クラス;
+------+---------+-------+
| c_id | c_name | カウント |
+------+---------+-------+
| 1 | 数学 | 65 |
| 2 | 中国語 | 70 |
| 3 | 英語 | 50 |
| 4 | 歴史 | 30 |
| 5 | 生物学 | 40 |
+------+---------+-------+
セット内の行数は 5 です (0.00 秒)

まず、テーブルを接続するための前提条件は、2 つのテーブルに同じ比較可能な列があることです。

1. 内部結合

mysql> SELECT * FROM student INNER JOIN class ON student.c_id = class.c_id;
+------+----------+------+------+-------+-------+-------+
| s_id | s_name | 年齢 | c_id | c_id | c_name | カウント |
+------+----------+------+------+-------+-------+-------+
| 1 | シャオミン | 13 | 1 | 1 | 数学 | 65 |
| 2 | xiaohong | 41 | 4 | 4 | 歴史 | 30 |
| 3 | xiaoxia | 22 | 3 | 3 | 英語 | 50 |
| 4 | 暁剛 | 32 | 1 | 1 | 数学 | 65 |
| 5 | xiaoli | 41 | 2 | 2 | 中国語 | 70 |
| 6 | wangwu | 13 | 2 | 2 | 中国語 | 70 |
| 7 | lisi | 22 | 3 | 3 | 英語 | 50 |
+------+----------+------+------+-------+-------+-------+
セット内の行数は 7 です (0.00 秒)

簡単に言うと、内部結合とは、2 つのテーブル内の条件を満たす行のすべてのデータを一緒に表示することです。つまり、条件が満たされない場合、テーブル A にはあってもテーブル B にはないデータ (またはその逆) は表示されません。

2. 外部結合

mysql> SELECT * FROM student LEFT JOIN class ON student.c_id = class.c_id;
+------+----------+------+------+-------+-------+-------+
| s_id | s_name | 年齢 | c_id | c_id | c_name | カウント |
+------+----------+------+------+-------+-------+-------+
| 1 | シャオミン | 13 | 1 | 1 | 数学 | 65 |
| 2 | xiaohong | 41 | 4 | 4 | 歴史 | 30 |
| 3 | xiaoxia | 22 | 3 | 3 | 英語 | 50 |
| 4 | 暁剛 | 32 | 1 | 1 | 数学 | 65 |
| 5 | xiaoli | 41 | 2 | 2 | 中国語 | 70 |
| 6 | wangwu | 13 | 2 | 2 | 中国語 | 70 |
| 7 | lisi | 22 | 3 | 3 | 英語 | 50 |
| 8 | 張さん | 11 | 9 | NULL | NULL | NULL |
+------+----------+------+------+-------+-------+-------+
セット内の行数は 8 です (0.00 秒)


mysql> SELECT * FROM student RIGHT JOIN class ON student.c_id = class.c_id;
+------+----------+------+------+-------+-------+-------+
| s_id | s_name | 年齢 | c_id | c_id | c_name | カウント |
+------+----------+------+------+-------+-------+-------+
| 1 | シャオミン | 13 | 1 | 1 | 数学 | 65 |
| 4 | 暁剛 | 32 | 1 | 1 | 数学 | 65 |
| 5 | xiaoli | 41 | 2 | 2 | 中国語 | 70 |
| 6 | wangwu | 13 | 2 | 2 | 中国語 | 70 |
| 3 | xiaoxia | 22 | 3 | 3 | 英語 | 50 |
| 7 | lisi | 22 | 3 | 3 | 英語 | 50 |
| 2 | xiaohong | 41 | 4 | 4 | 歴史 | 30 |
| NULL | NULL | NULL | NULL | 5 | 生物学 | 40 |
+------+----------+------+------+-------+-------+-------+
セット内の行数は 8 です (0.00 秒)

上記は、外部結合の左結合と右結合の 2 つのケースを示しています。これら 2 つはほぼ同じですが、唯一の違いは、左結合のメイン テーブルが左側のテーブルであり、右結合のメイン テーブルが右側のテーブルであることです。外部結合と内部結合の違いは、メイン テーブルのすべての行が表示され、他のテーブルにないメイン テーブルのデータが NULL に置き換えられることです。

要約する

これで、MySQL でテーブルを接続するいくつかの方法についての記事は終了です。MySQL テーブルを接続する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL での基本的な複数テーブル結合クエリのチュートリアル
  • mysql 複数テーブル接続削除関数の削除
  • MySQL の結合テーブルにインデックスを作成する方法
  • MySQL テーブル LEFT JOIN 左結合と RIGHT JOIN 右結合の例のチュートリアル
  • MySQL マルチテーブル結合クエリ例の説明
  • MySQL でのテーブル結合クエリの最適化に関する簡単なチュートリアル
  • mysql 3つのテーブルを接続してビューを作成する
  • MySQL データベースの詳細な説明 - 複数テーブル クエリ - 内部結合、外部結合、サブクエリ、相関サブクエリ
  • MySQL LEFT JOIN テーブル接続に関する高度な学習チュートリアル
  • MySQL マルチテーブル結合入門チュートリアル

<<:  Maven で tomcat8-maven-plugin プラグインを使用する詳細なチュートリアル

>>:  チェックボックスの選択またはキャンセルを実装するJavaScript

推薦する

CSS フィルターを使用してマウスオーバー効果を記述する例

CSSフィルターを使用してマウスオーバー効果を記述する <div class="fi...

Kylin V10 への zabbix-agent のインストール手順

1. インストールパッケージをダウンロードするダウンロードアドレス: https://sourcef...

uniappの無痛トークンリフレッシュ方法の詳細な説明

フロントエンドがインターフェースを要求すると、バックエンドでインターフェースが定義されます。ステータ...

HttpとHttpsの両方をサポートするNginxの詳細な設定

最近の Web サイトでは Https をサポートすることがほぼ標準機能となっており、Nginx は...

Mysql5.7 で JSON 操作関数を使用する手順

序文JSON は、言語に依存しないテキスト形式を使用する軽量のデータ交換形式で、XML に似ています...

Vueアイコンセレクターのサンプルコード

出典: http://www.ruoyi.vip/ 'vue' から Vue をイン...

Linux でマウントされたファイルシステムの種類を表示する方法

序文ご存知のとおり、Linux は ext4、ext3、ext2、sysfs、securityfs、...

MySQL NULLがピットを引き起こした

比較演算子でNULLを使用する mysql> 1>NULLを選択します。 +------...

Vue が配列の変更を監視できない問題の解決方法

目次1. Vueリスナー配列2. vueが配列の変更を監視できない状況1. Vueリスナー配列Vue...

MySQL 正規表現 (regexp と rlike) の検索機能の例分析

この記事では、例を使用して MySQL 正規表現 (regexp および rlike) の検索機能を...

Explainキーワードに基づいてMySQLインデックス機能を最適化する方法

EXPLAIN は、MySQL がインデックスを使用して選択ステートメントを処理し、テーブルを結合す...

MySQL のロックとトランザクションの簡単な分析

MySQL 自体はファイルシステムに基づいて開発されましたが、ロックの存在が異なります。データベース...

Docker-compose を使用して ELK クラスターを構築する方法

すべてのオーケストレーション ファイルと構成ファイルは、私の Github からアクセスできます。構...

エンコードが utf-8 に設定されている場合に Web ページが文字化けする問題の解決策

最近、PHP で Web ページを書いているときに、エンコードを UTF-8 に設定しました。しかし...

CSS を使用して固定左列と適応右列の 2 列レイアウトを実現する 4 つの方法

1. フロート+オーバーフロー:非表示このメソッドは主にオーバーフローを通じて BFC をトリガーし...