MySQL接続クエリにおけるととwhereの違いの簡単な分析

MySQL接続クエリにおけるととwhereの違いの簡単な分析

1. テーブルを作成する

テーブル「学生」を作成(
  `id` int(11) NULLではない、
  `name` varchar(255) 文字セット utf8mb4 COLLATE utf8mb4_general_ci NULL デフォルト NULL,
  `age` int(11) NULL デフォルト NULL,
  BTREE を使用した主キー (`id`)
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;


INSERT INTO `student` VALUES (1, '张三', 12);
INSERT INTO `student` VALUES (2, '李四', 12);
`student` に VALUES (3, '王五', 12) を挿入します。
INSERT INTO `student` VALUES (4, '赵六', 12);
`student` VALUES (5, '孙七', 12) に INSERT INTO します。
`student` に VALUES (6, 'turtle', 12) を挿入します。
テーブル「グレード」を作成します(
  `id` int(11) NULLではない、
  `sid` int(11) NULL デフォルト NULL,
  `grade` int(11) NULL デフォルト NULL,
  BTREE を使用した主キー (`id`)
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

`grade` VALUES (1, 1, 100) に挿入します。
`grade` VALUES (2, 2, 80) に挿入します。
`grade` VALUES (3, 3, 99) に挿入します。
`grade` VALUES (4, 4, 66) に挿入します。

2. 内部結合

内部結合では、 と where の間に違いはありません。どちらも結合後の結果を使用して条件付きスクリーニングを実行します。

2.1 条件なし

2.2 および条件

2.3 where条件

3. 左結合

3.1 条件なし

3.2 および条件

左結合では、左のテーブルが完全に一致して接続され、その後 AND を使用してフィルタリングされます。条件を満たさない左のテーブルのデータは保持され、右のテーブルのデータは null になります。

3.3 where条件

左結合では、左側のテーブルが完全に接続に一致し、その後、WHERE 句を使用してフィルタリングが行われ、条件を満たすデータのみがフィルタリングされます。

4. 右結合

ベース テーブルが逆になっていることを除いて、3 の左結合と同じです。

5. 結論

  • すべての接続について、接続後に where を使用して条件を満たすデータ行をフィルターし、条件を満たすデータ行のみを保持します。
  • 左結合を使用し、左テーブルをメインテーブルとして使用する場合、左テーブルのすべてのデータは保持され、条件を満たさないデータ行は右テーブルで null に設定されます。
  • 右結合を使用し、右テーブルをメインテーブルとして使用する場合、右テーブルのすべてのデータは保持され、条件を満たさない左テーブルのデータは null になります。

これで、MySQL 接続クエリの と および where の違いに関するこの記事は終了です。MySQL 接続クエリと where に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • And キーワードを使用した MySQL の複数条件クエリ ステートメント
  • MySQL 条件付きクエリと使用法および優先順位の例の分析
  • MySQL での and or クエリの優先度分析
  • MySQL 左結合マルチテーブルクエリの条件記述例
  • PHPがMySQLクエリの結果を配列に変換し、それを連結する例
  • MySQLクエリ条件におけるonとwhereの配置の違いの分析

<<:  JavaScript クロージャの説明

>>:  Docker Consul コンテナ サービスの更新と見つかった問題の概要

推薦する

Vueはフィルターを使用して日付をフォーマットします

この記事では、フィルターを使用して日付をフォーマットするVueの具体的なコードを参考までに紹介します...

Linuxシステムにおける重要なサブディレクトリの問題について話す

/etc/fstabパーティション/ディスクを自動的にマウントし、マウントするパーティション/デバイ...

MySql SQL最適化のヒントの共有

ある日、内部結合を含む SQL ステートメントの実行速度はそれほど遅くはない (0.1 ~ 0.2)...

MySQL/MariaDB で完全な Unicode をサポートする方法

目次utf8mb4 の紹介UTF8 バイト数超過エラーutf8mb4 サポートデフォルトの文字エンコ...

MySql マスタースレーブレプリケーションメカニズムの包括的な分析

目次マスタースレーブレプリケーションメカニズム非同期レプリケーション準同期レプリケーションマスタース...

MySQL の簡単な分析 - MVCC

バージョンチェーンInnoDB エンジン テーブルでは、クラスター化インデックス レコードに 2 つ...

MySQL 最適化のヒント: 重複削除の実装方法の分析 [数百万のデータ]

この記事では、MySQL 最適化のヒントで重複したエントリを削除する方法を例を使って説明します。ご参...

HTMLページをクリックしてダウンロードファイルを実装する2つの方法

1. <a>タグを使用して完了します <a href="/user/te...

CSS3を使用してボタンホバーフラッシュダイナミック特殊効果コードを実装する

CSS3 の列シリーズ属性を使用してウォーターフォールレイアウトを作成する方法を紹介しました。興味の...

nginxコンテナ設定ファイルの独立した実装

コンテナを作成する [root@server1 ~]# docker run -it --name ...

Docker で Springboot プロジェクトを実行する実装

導入: springboot プロジェクトを実行する Docker の構成は実は非常にシンプルで、L...

MySQLは適切なストレージエンジンを選択します

データベースに関して最もよく聞かれる質問の 1 つは、現在のビジネス ニーズを満たす MySQL の...

MYSQL 5.6 スレーブレプリケーションの展開と監視

MYSQL 5.6 スレーブレプリケーションの展開と監視MYSQL 5.6 のインストールと展開 #...

Kali Linux システムのバージョンを確認する方法

1. Kali Linuxシステムのバージョンを確認するコマンド: cat /etc/issue 2...

Spark と Scala を使用して Apache アクセス ログを分析する方法

インストールまず、Java と Scala をインストールし、次に Spark をダウンロードしてイ...