MySQL ステートメントの実行順序と書き込み順序の例の分析

MySQL ステートメントの実行順序と書き込み順序の例の分析

選択ステートメントの完全な構文は次のとおりです。

選択 
DISTINCT <選択リスト>
<左テーブル> から
<結合タイプ> JOIN <右テーブル>
ON <結合条件>
WHERE <where_condition>
GROUP BY <group_by_list>
HAVING <having_condition>
ORDER BY <order_by_condition>
LIMIT <制限数>

実行順序:

from →join →on →where →group by →having →select →order by →limit

(1)各キーワードの役割:

from: どのデータテーブルからデータを取得しますか? 結合がある場合は、FROM 句の最初の 2 つのテーブルに対して直積 (クロス結合) を実行して、一時テーブル (n×m 行) を生成します。

on: 上記の一時テーブルを条件付きでフィルタリングする

左/右 (結合): 左または右のテーブルを補足して、完全な状態に保ちます。関連するテーブルが複数ある場合、中間テーブルは次のテーブルに対して上記の 2 つの手順を続行します。

  • where: テーブル内のデータをフィルタリングするための条件
  • グループ化: 上記のフィルタリングされたデータをグループ化する方法

合計: 集計関数

  • 有: 上記のグループ化されたデータをフィルタリングするための条件
  • 選択: 結果セット内のどの列を表示するか、または列の計算結果を表示する

明確な:

  • order by: 返されたデータを表示する順序
  • limit: 返されるクエリ結果の数を制限する

(2)onとwhereの違い:

  • a.on 以降のスクリーニング条件は、主に関連テーブルに対するものであり、メインテーブルのスクリーニング条件には適用されません。
  • b. 接続が完了した後にフィルタリングする場合は、where の後に条件を置く必要があります。関連テーブルを別の方法で処理する必要があります。条件付きクエリの後に接続する場合は、クエリを on の後に置く必要があります。
  • c. メイン テーブルのフィルター条件は、on の後ではなく where の後に配置する必要があります。

(3)havingとwhereの違い:

  • a.having は、グループ化された結果をフィルタリングするために、group by の後にのみ使用できます (つまり、having を使用するための前提条件はグループ化です)。
  • b.where は group by の前、つまり having の前に来なければなりません。
  • where の後の条件式では集計関数は使用できませんが、having は使用できます。

(4)countの使用

count(列名) を使用し、列に null 値がある場合、count(*) は計算されますが、count(列名) は計算されません。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • T-SQLクエリステートメントの実行順序の分析
  • SQL ステートメント実行の詳細な説明 (MySQL アーキテクチャの概要 -> クエリ実行プロセス -> SQL 解析順序)
  • DjangoはネイティブのMySQLステートメントを実行してプロセス分析を実装します
  • SQL文の解析と実行のプロセスと原理

<<:  Linux で環境変数 JAVA_HOME を変更/設定する方法について簡単に説明します。

>>:  クラウド決済を実装するWeChatミニプログラムについて

推薦する

主軸上のFlex子要素の比率を制御する方法

背景フレックス レイアウトにより、配置とスペースの割り当てがより効果的に実現されます。最近、flex...

Centos7 に mysql 8.0.13 (rpm) をインストールする詳細なチュートリアル

yum か rpm か? yum によるインストール方法は非常に便利ですが、公式サイトから MySQ...

MySQL テーブル作成外部キー エラーの解決方法

データベーステーブルA: テーブル task_desc_tab を作成します ( id INT(11...

CSS3 アドバンス LESS で星空アニメーションを実装するサンプルコード

この記事では、星空アニメーションを実現するための高度な CSS3 LESS のサンプルコードを次のよ...

Vueはテーマ切り替えのための複数のアイデアを実装します

目次テーマを動的に変更する最初の方法: 動的コンポーネント2番目の方法はルーティング分離です要約する...

MySQL トランザクションと分離レベルの基本原理の簡単な分析

目次序文1. 取引の基本原則の簡単な分析原子性:持続性分離:一貫性: 2. 分離レベルの基本原理の分...

MySQL に IP アドレスを効果的に保存する方法と、文字列 IP と数値を変換する方法の詳細な説明

High Performance MySQL バージョン 3 (セクション 4.1.7) を見ると、...

vue-seamless-scrollがスクロールしていいねをするときのデータ同期の問題を解決する

VUE は vue-seamless-scroll を使用して、自動的にスクロールしていいねします。...

MySQL データベースの大文字と小文字の区別の問題

MySQL では、データベースはデータ ディレクトリ内のディレクトリに対応します。データベース内の各...

MySQL 8.0.24 リリースノートのいくつかの改善点

目次1. 接続管理2. オプティマイザレベルでの改善3. 機能の改善4. パフォーマンススキーマの最...

MySQL マルチテーブル共同クエリ操作例の分析

この記事では、MySQL のマルチテーブル共同クエリ操作について説明します。ご参考までに、詳細は以下...

jsネイティブ構文プロトタイプ、__proto__、コンストラクタの徹底的な理解

目次1 はじめに2 前提条件2.1 データ型2.2 それが自身のプロパティであるかどうかを判断する ...

HTML タグの表示モード (ブロックレベル タグ、インライン タグ、インライン ブロック タグ) に関する簡単な説明

今日の講義では、HTML におけるタグの表示モードについてお話ししましたが、これはブロックレベルタグ...

MySQL データベースの集計クエリと結合クエリ操作

目次1. クエリ結果を挿入する2. 集計クエリ2.1 はじめに2.2 集計関数2.3 group b...

MySQLパーティションテーブルは月別に分類されています

目次テーブルを作成するデータベース ファイルを表示します。入れるクエリ消去補足:Mysqlは月テーブ...