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

推薦する

Linux のハードリンクとソフトリンクの原理と使用法の分析

Linux システムには、ファイル共有を解決するために使用できるリンク ファイルと呼ばれる種類のファ...

Vue 開発プロジェクトで Font Awesome 5 を使用する方法

目次依存関係をインストールする構成使用1.アイコン検索ページに入る2. 使用したいアイコンの英語名を...

Vue の自動書式設定の改行保存の詳細な説明

ネットで変更方法をいろいろ調べたのですが、うまくいきませんでした。後で大物から見て削除しました。フォ...

今日、私は非常に奇妙なクリックの問題に遭遇し、自分で解決しました

...こんな感じで、今日はポップアップウィンドウを作ろうと思ったのですが、バックエンド PHP によ...

Vueのカスタムイベントコンテンツ配信の詳細な説明

1. これは理解するのが少し複雑なので、原理を注意深く読んで自分で入力していただければ幸いです。 &...

Vueはドラッグプログレスバーを実装します

この記事では、ドラッグプログレスバーを実現するためのVueの具体的なコードを例として紹介します。具体...

小さなページングデザイン

ユーザーが目的のものを探すために前進するか後退するかを選択できるようにします。たとえば、Taobao...

MySQL で高性能なインデックスを作成するための完全な手順

目次1. インデックスの基本1. インデックスの種類1.1 Bツリーインデックス1.2 ハッシュイン...

Linux でディスク IO を表示し、読み取りと書き込みで高い IO を占有するプロセスを見つけます。

背景 - オンラインアラートオンライン サーバーがアラームを発し、ディスク使用率 disk.util...

Webデザインと制作のテスト問題と参考回答

<br />Web デザインと制作テスト パート I 多肢選択問題 1. 単一選択問題 ...

Javascript 共通高階関数の詳細

目次1. 一般的な高階関数1.1、フィルター1.2、地図1.3、減らすHigher Order fu...

docker によってプルされたイメージがどこに保存されるかの詳細な説明

docker によってプルされたコマンドは、デフォルトでは /var/lib/docker/ フォル...

HTML/CSS の基礎 - HTML コード記述におけるいくつかの注意事項 (必読)

この記事の警告事項は、ブラウザの互換性とはまったく関係ありません。主に、プロジェクトで遭遇したいくつ...

Vue elementUI はツリー構造テーブルと遅延読み込みを実装します

目次1. 成果を達成する2. バックエンドの実装2.1 エンティティクラス2.2 データベース内のデ...

小さなプログラムが天井に張り付いてしまう問題を完璧に解決するためにposition:stickyを使用する方法

最近、あるプロジェクトのクライアントが、上部に 2 つのタブ メニューを配置することを要求しました。...