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ミニプログラムについて

推薦する

Zabbixのカスタム監視項目とトリガーについて

目次1. 監視ポート関係の説明操作する2. 監視サービス関係の説明操作する3. テンプレートのインポ...

du コマンドを使用して Linux システム ディレクトリのサイズを取得する方法

Linux システムを使用したことがある人なら、Linux システムの ls コマンドは通常、ファイ...

異なるドメイン名への PC または携帯電話のアクセスを区別するように Nginx を構成する方法

新しい公式サイトはオンラインですが、携帯電話で新しい公式サイトにアクセスすると、エクスペリエンスが非...

MySQLでテーブルを接続するいくつかの方法

MySQL テーブルでの接続方法は実は非常に簡単なので、ここではその特徴を簡単にリストします。テーブ...

Vue は Axios リクエスト フロントエンドのクロスドメイン問題をどのように解決するのか

目次序文1. クロスドメインの問題はなぜ発生するのでしょうか? 2. 解決策クロスオリジンリソース共...

ログインボックスのメールプロンプトを実装するネイティブJS

この記事では、登録またはログイン時に電子メール アドレスを入力する際のドロップダウン プロンプトのネ...

Vue v-onディレクティブの使用について

目次1. イベントのリスニング2. イベントパラメータを渡す3. イベント修飾子ケース1: クリック...

Linux コマンドラインで電卓を使用する 5 つのコマンド

みなさんこんにちは。私は梁旭です。 Linux を使用するときに、計算を行う必要がある場合があり、そ...

nginx リクエスト ヘッダー データ読み取りプロセスの詳細な説明

前回の記事では、nginx がリクエスト ラインのデータを読み取って、リクエスト ラインを解析する方...

Linuxシステムはポート3306、8080などを外部に開放します。ファイアウォール設定の詳しい説明

多くの場合、Linux システムに Web サービス アプリケーション (Tomcat、Apache...

今日は、珍しいけれど役に立つJSテクニックをいくつか紹介します

1. 戻るボタンhistory.back() を使用してブラウザの「戻る」ボタンを作成します。 &l...

Vue要素と多言語切り替えの詳細な説明

目次序文複数の言語を切り替えるにはどうすればいいですか? 1. vue-i18nパッケージをインスト...

フォーム要素とプロンプトテキストが揃っていない問題

最近のプロジェクトでは、多くのフォーム、特にチェックボックスとラジオボタンの作成が含まれます。しかし...

Ubuntu 20.04 LTS で Java 開発環境を構成する

Java開発キットjdkをダウンロードするJDK のダウンロード アドレスはhttp://www.o...

node.js グローバル変数の具体的な使用法

グローバルオブジェクトすべてのモジュールは呼び出すことができますglobal: ブラウザの wind...