MySQL 結合クエリの原則の知識ポイント

MySQL 結合クエリの原則の知識ポイント

MySQL 結合クエリ

1. 基本概念

2 つのテーブルの各行をペアで水平に接続して、すべての行の結果を取得します。

前提:

表Aにはn1行とm1列があります。

表 B には n2 行と m2 列があります。

テーブル A とテーブル B が「接続」されると、次のようになります。

n1*n2行;

m1+m2列。

2. 接続後の結果は次のようになります。

3. 結合クエリの基本形式: テーブル 1 から [結合方法] テーブル 2 を結合 [結合条件] 結合クエリの基本形式: テーブル 1 から [結合方法] テーブル 2 を結合 [結合条件]

1. 接続クエリの分類

クロスコネクト

実際、これは接続の基本概念に従って 2 つのテーブルを接続した後に取得される「すべてのデータ」であり、「フィルタリング」の結果は含まれません。フィルタリングは接続条件を指します。

つまり、クロス結合は無条件の「すべてを結合」であり、デカルト積とも呼ばれます。

クロス結合は、データを結合した後、各データ行の意味が「失われる」可能性があるため、通常は実用的な価値がありません。

形状:

テーブル1から[クロス]テーブル2を結合します。

または:

表1、表2より;

内部結合

形状:

table1 [内部] から table2 を table1.field1 = table2.field2 で結合します。

意味:

「クロス接続」の結果、設定された接続条件(on 以降の条件)を満たす行のデータを取得します。

クロス結合では、次のように「意味のないデータ」が含まれることがよくあります。

2. 内部接続の結果を確認します。

3. 結果は次のとおりです。

4. 内部結合は、実際にはクロス結合のデータ結果から「意味のある」データ行を見つけることであることがわかります。クロス結合では、一部のデータは意味を持ちますが、一部のデータは意味を持ちません (エラーのあるデータ)。

ただし、以下の点にご注意ください。

  • 1. この接続条件は任意に設定できるものではなく、テーブル間の実際の関係に応じて設定する必要があります。通常、2 つのテーブル間の「主キーと外部キーの関係」を持つ 2 つのフィールドの値が等しいという関係になります。
  • 2. 接続クエリには、前に学習した「外部キー関係」との固有の論理的一貫性があることがわかります。
  • 3. ただし、内部結合を行う場合、2 つのテーブルに外部キー関係が「必ず」ある必要はありません。実用的な観点から、外部キー関係 (データ関係) があることを理解し、クエリ中に内部結合を使用すると、それらの関係が確立されるだけです。内部結合は、実際にはクロス結合のデータ結果内で「意味のある」データ行を見つけることであることがわかります。クロス結合では、一部のデータは意味を持ちますが、一部のデータは意味を持ちません (エラーのあるデータ)。

以下もご興味があるかもしれません:
  • MySQLの自己接続と結合の詳細な理解
  • MySQL の複数の左結合クエリの使用状況の分析
  • MySQL の最適化: サブクエリの代わりに結合を使用する
  • MySQL クエリの最適化: 結合クエリのソート制限の概要 (結合、順序、制限ステートメント)
  • MySQL で JOIN ステートメントを使用して接続操作を実行する詳細なチュートリアル
  • MySQL 結合クエリ構文と例
  • MySQLでよく使用されるいくつかの結合接続方法の概要

<<:  CentOS7 インストール GUI インターフェースとリモート接続の実装

>>:  雨滴効果を実現する JavaScript キャンバス

推薦する

Vueがビデオアップロード機能を実装

この記事では、参考までに、ビデオアップロード機能を実現するためのVueの具体的なコードを紹介します。...

Linux の一般的なコマンドとショートカット キーの紹介

目次1 システムの紹介2 システムショートカット3 一般的なシステムコマンド1 システムの紹介 1....

ウェブページを作成する際に注意すべき点

--ホームページのバックアップ1.txtテキスト2. 画像をスキャンする3. PSDデザイン原画(A...

jQueryのコア機能とイベント処理の詳細な説明

目次イベントページの読み込みイベント委任イベントの切り替えイベント要約するイベントページの読み込み1...

JavaScriptにおけるこのポインティング問題の詳細な説明

序文信じてください。この記事の 7️⃣ ステップを覚えておけば、JS の this リファレンスを完...

Docker を使用してフロントエンド アプリケーションをデプロイする方法

Dockerはますます普及しています。環境を軽量かつ柔軟に分離し、容量を拡張し、運用保守管理を容易に...

React useEffect の理解と使用

目次繰り返しレンダリングループを避ける副作用の除去についてReact16.8 の新しい useEff...

Dayjs を使用して Vue で一般的な日付を計算する方法

vue を使用してプロジェクトを開発する場合、フロントエンドでは次のような日付と時刻を計算する必要が...

良いリファクタリングを行うには、コードをリファクタリングするだけでなく、人生をリファクタリングすることも重要です。

職業的な観点からも、人生の観点からも、良い再建をすることは本当に簡単ではありません。楽観的で熱心で前...

エラー 1045 (28000): ユーザー ''root''@''localhost'' のアクセスが拒否されました (パスワード使用: YES) 実用的な解決策

昨日はデータベースへの接続に問題はありませんでしたが、今日はデータベースへの接続時にこのエラーが報告...

Json の長所と短所、使用方法の紹介

目次1. JSONとは何か1.1 配列リテラル1.2 オブジェクトリテラル1.3 混合リテラル1.4...

MySQLで更新可能なビューを作成する方法の詳細な説明

この記事では、例を使用して、MySQL で更新可能なビューを作成する方法について説明します。ご参考ま...

Nginx/Httpd リバース プロキシ Tomcat 設定チュートリアル

以前のブログでは、Tomcatのサーバーの各コンポーネントの使用について学びました。 Tomcatは...

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

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