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 キャンバス

推薦する

docker windows10共有ディレクトリのマウント失敗の解決策

原因docker スクリプトを実行すると、コンテナを作成できないというエラーが発生します。以下のよう...

Vue の動的コンポーネントと非同期コンポーネントの詳細な理解

1. 動的コンポーネント <!DOCTYPE html> <html> &l...

MySQL データを誤って削除した場合の簡単な解決策 (MySQL フラッシュバック ツール)

概要Binlog2sql は、Python で開発されたオープンソースの MySQL Binlog ...

Vueでeslintを使用する方法の詳細な説明

目次1. 説明2. 関連する依存パッケージをダウンロードする3. 設定ファイル .eslintrc....

MySQL共通ストレージエンジンの機能と使用方法の詳細な説明

この記事では、一般的な MySQL ストレージ エンジンの機能と使用方法を例を使って説明します。ご参...

CSS3 を使用して中心点の周りに要素を配置する方法の例

この記事では、CSS3 を使用して中心点を中心に要素をレイアウトする方法の例を紹介します。詳細は次の...

Linux 上でプロジェクトをリリースするために Tomcat を展開するプロセスにおけるさまざまな問題と解決策

プロジェクトをプロジェクトサイトのテスト環境にデプロイするJDK1.8トムキャット8.5 Maven...

nginx で gzip 圧縮を実装してウェブサイトの速度を向上させる方法

目次gzip 圧縮を使用する理由は何ですか? nginxはgzipを実装するgzip処理nginx ...

Linux でプロセスを効果的に管理するための 8 つのコマンド

序文プロセス管理の役割:サーバーの健全性状態を判定する: プロセスの状態 (メモリ、CPU 占有率な...

win10環境でDockerをインストールする実装

1. Docker公式サイトにアクセスするまず、Dockerの公式ウェブサイトにアクセスして、最新の...

JavaScript イベントバブリング、イベントキャプチャ、イベント委任の詳細な説明

1. イベントバブリング: JavaScript イベント伝播のプロセスでは、要素でイベントがトリガ...

Mysql 8.0 のインストールとパスワードのリセットの問題

Mysql 8.0 のインストールの問題とパスワードのリセット1: MySqlをダウンロードする公式...

VMware Workstation での VMware vSphere のセットアップ (グラフィック チュートリアル)

VMware vSphere は、業界をリードする最も信頼性の高い仮想化プラットフォームです。 v...

登録ページを実装するためのJS、CSS、HTML

HTML と CSS で実装された登録ページ テンプレート。早速、コードを見てみましょう。更新: ...