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

推薦する

Win7 の VMware 仮想マシンに Linux7.2 をインストールするインターネット アクセス構成チュートリアル

参考までに、win7システム上のVMware仮想マシンにlinux7.2インターネットアクセス構成を...

MySQL の重要なログファイルの包括的なインベントリ

目次導入ログ分類パラメータファイルエラーログファイル完全なログファイルスロークエリログバイナリログフ...

dl、dt、dd はいつ使用するのが適切ですか?

dl:定義一覧定義リストdt:定義タイトルタイトルを定義するdd:定義説明定義の説明dt は情報のタ...

Ubuntu ターミナル マルチウィンドウ 分割画面 ターミネーター

1. インストールターミネーターの最大の特徴は、1つのウィンドウで複数のターミナルを開くことができる...

Linux環境でglogログライブラリを使用する方法

Linuxライブラリを生成するLinux版はcentos7.3を使用し、コンパイルしてライブラリを生...

Centos7サーバーの基本的なセキュリティ設定手順

pingスキャンをオフにする(役に立たないが)まずルートに切り替えるエコー 1 > /proc...

Linux の文字端末でマウスを使って赤い四角形を移動する方法

すべてがファイルです! UNIX はすでにそれを言っています。エリック・レイモンドはこう言いました。...

MySQL のバックアップとリカバリの設計アイデア

背景まず、背景を説明します。ある制約により、当社の現在のバックアップ戦略では、1 日おきにフル バッ...

Dockerコンテナ相互接続の予備的な実践についての簡単な説明

1. Dockerコンテナ間の相互接続Docker は現在、軽量の仮想化ソリューションとなっています...

mysql5.7.20 のインストールと設定方法のグラフィック チュートリアル (mac)

MySQL 5.7.20のインストールと設定方法のグラフィックチュートリアルをあなたと共有します1...

条件付きコメント形式の書き方とサンプルコード

フロントエンドエンジニアとして、IE は私たちにとって馴染み深いものであるはずです。設計案を実装する...

React コードを共有するためのベストプラクティス

プロジェクトがある程度複雑になると、必然的にロジックの再利用の問題に直面することになります。 Rea...

Windows での MySQL 5.7.18 のインストールと設定のチュートリアル

この記事では、WindowsでのMySQL 5.7.18のインストールと設定のチュートリアルを参考ま...

JSのバイナリファミリーについての簡単な説明

目次概要ブロブBlob の動作BLOB ダウンロード ファイルブロブ画像のローカル表示BLOB ファ...

外部キー制約を持つテーブルデータを削除する MySQL メソッドの紹介

MySQLでテーブルやデータを削除する場合、 [エラー] 1451 - 親行を削除または更新できませ...