7つのMySQL JOINタイプのまとめ

7つのMySQL JOINタイプのまとめ

始める前に、これから紹介する JOIN タイプを示すために 2 つのテーブルを作成します。

テーブルを作成する

テーブル `tbl_dept` を作成します (
   `id` INT(11) NOT NULL AUTO_INCREMENT,
   `deptName` VARCHAR(30) デフォルト NULL,
   `locAdd` VARCHAR(40) デフォルト NULL,
   主キー (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 デフォルト CHARSET=utf8;
テーブル `tbl_emp` を作成します (
   `id` INT(11) NOT NULL AUTO_INCREMENT,
   `name` VARCHAR(20) デフォルト NULL,
   `deptId` VARCHAR(11) NOT NULL,
   主キー (`id`)、
   キー `fk_dept_id` (`deptId`)
) ENGINE=INNODB AUTO_INCREMENT=1 デフォルト CHARSET=utf8;

データの初期化

7種類のJOIN

1. A∩B

 SELECT <選択リスト>
 表AからA
 INNER JOIN TableB B # TOTAL ON A.Key = B.Key 

2. A ( = A ∩ B + A* )

 SELECT <選択リスト>
 表AからA
 LEFT JOIN テーブルB B
 Aキーオン = Bキー

3. B ( = A ∩ B + B* )

 SELECT <選択リスト>
 表AからA
 右結合テーブルB B
 Aキーオン = Bキー

4. A* ( = A - A ∩ B )

 SELECT <選択リスト>
 表AからA
 LEFT JOIN テーブルB B
 ON A.Key = B.Key # メインテーブルは ON WHERE B.Key IS NULL のときに保持されます # テーブル A のデータをフィルターします

5. B* ( = B - A ∩ B )

 SELECT <選択リスト>
 表AからA
 右結合テーブルB B
 Aキーオン = Bキー
 A.KeyがNULLの場合

6. A∪B

 SELECT <選択リスト>
 表AからA
 FULL OUTER JOIN TableB B ## FULL OUTER ON A.Key = B.Key は Oracle でのみサポートされています

7. A ∪ B - A ∩ B

 SELECT <選択リスト>
 表AからA
 完全外部結合 テーブルB B
 Aキーオン = Bキー
 A.Key が NULL であるか、B.Key が NULL である場合

これで、7 つの MySQL JOIN タイプに関するこの記事は終了です。MySQL の結合タイプの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MYSQL データベースの基礎 - 結合操作の原理
  • MySQL 結合バッファの原理
  • mysql-joinsの具体的な使用方法
  • MySQL 結合クエリ構文と例
  • MySQL におけるさまざまな一般的な結合テーブルクエリの例の概要
  • MySQLの7つのJOINの具体的な使い方

<<:  CSSを使用してアダプティブスクエアを実装する方法の例

>>:  メタ情報に基づいて時間指定のページ更新またはリダイレクトを実装する

推薦する

データベースの冗長フィールドを合理的に使用する方法

privot は、多対多の関係の中間テーブルです。 PT5 フレームワークは自動的に privot ...

CentOS の起動時に RabbitMq ソフトウェアを自動的に起動する方法

1. /etc/init.dディレクトリに新しいrabbitmqを作成します。 [root@loca...

MySQL テーブルスペースの断片化の概念と関連する問題の解決策

目次背景表領域の断片化とは何ですか?表領域の断片化を確認する方法表スペースの断片化問題を解決する方法...

Linux でファイルを削除するさまざまな方法の効率の比較

Linux で大量のファイルを削除する効率をテストします。まず500,000個のファイルを作成する$...

Docker での Jenkins と Docker を使用した継続的デリバリー

1. 継続的デリバリーとは何かソフトウェア製品の出力プロセスは、ソフトウェアがいつでもリリースできる...

JS が WeChat の「クソ爆弾」機能を実装

みなさんこんにちは、Qiufengです。最近、WeChatは新しい機能をリリースしました(WeCha...

MySQL の NULL 値に関する体験談と分析チュートリアルシリーズ

目次1. テストデータ2. ヌル値による不便3. スペース、空の値、null をどのように判断すれば...

Linux (CentOS7) に Tomcat をインストールし、Tomcat をスタートアップ項目として設定します (tomcat8 を例に挙げます)

目次TomcatをインストールするTomcat 圧縮パッケージをダウンロードTomcatには3つの主...

CSS 読み込み効果の実装 パックマン

えーっと、名前はただの推測です 2333序文これは練習用の CSS デモです。何か間違っている点があ...

Node.js の非同期ジェネレータと非同期反復の詳細な説明

序文ジェネレーター関数は、async/await が導入される前から JavaScript に存在し...

Node.js+expressメッセージボード機能実装例

目次メッセージボード必要なライブラリオープンソースプロジェクトプロジェクト構造メッセージボードnod...

MySQL公式パフォーマンステストツールmysqlslapの使い方の紹介

目次導入説明書実際の経験まとめ導入MySQL は最も人気のあるオープンソース データベースとして、さ...

VirtualBox CentOS7.7.1908 Python3.8 ビルド Scrapy 開発環境 [グラフィックチュートリアル]

目次環境CentOSをインストールするyum 国内ミラーソースを構成するサードパーティの依存関係をイ...

シンプルなカルーセルの最も完全なコード分析を実装するJavaScript(ES6オブジェクト指向)

この記事では、シンプルなカルーセルを実装するためのJavaScriptの具体的なコードを参考までに紹...

LNMP と phpMyAdmin を Docker にデプロイする方法

環境準備:複数のコンテナに基づいてホストに lnmp をデプロイします。 nginx サービス: 1...