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

推薦する

jQuery プロジェクトで重複送信を防ぐ方法

新しいプロジェクトでは、axios によって重複した送信を防ぐことができますが、古いプロジェクト (...

Nginx における accept lock の仕組みと実装の詳細な説明

序文nginx はマルチプロセス モデルを使用します。リクエストが届くと、システムはプロセスをロック...

Alibaba CloudにMySQLをインストールする方法の詳細な説明

軽量のオープンソース データベースである MySQL は、エンタープライズ レベルのアプリケーション...

VMware 仮想マシンのネットワークの問題の解決方法

目次1. 問題の説明2. 問題解決1. 仮想マシンシステムのインストール時にネットワークがない場合2...

MySQL が起動直後にシャットダウンする問題 (ibdata1 ファイルの破損が原因) に対する完璧な解決策

コンピュータ ルームのサーバー上の mysql がしばらく実行されていたのですが、突然、再起動しても...

docker を使用してコード サーバーをデプロイする方法

画像をプルする # docker pull codercom/code-server # Docke...

JavaScript 関数のカリー化

目次1 関数カリー化とは何ですか? 2 カレーの役割と特徴2.1 パラメータの再利用2.2 早期復帰...

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

目次1. はじめに2. 思考分析3. クラウド決済のケーススタディ1. クラウド機能1-1. 認証不...

JavaScript タイマー原理の詳細な説明

目次1. setTimeout() タイマー2. setTimeout() タイマーを停止する3. ...

Windows Server 2016 に Docker をインストールする方法

最近、Microsoft は Docker をネイティブにサポートする Windows Server...

JavaScript strictモードの概要 strictを使用する

目次1. 概要1.1 厳密モードとは何ですか? 1.2 厳密モードの目的2. 厳密モードを有効にする...

MySQLストアドプロシージャにおけるカーソル(DECLARE)の原理と使い方の詳細な説明

この記事では、例を使用して、MySQL ストアド プロシージャにおけるカーソル (DECLARE) ...

MLSQLコンパイル時権限制御例の詳細な説明

序文MySQL の権限を簡単に理解すると、MySQL では自分の能力の範囲内で操作が許可され、その限...

Windows 10 での Hyperledger Fabric 1.4 環境構築プロセスの図

内容Hyperledger fabric1.4環境のWindows 10でのセットアップ前提条件Wi...

アクセス速度を上げるためにウェブサイトを最適化する方法の更新

最近、同社はitpubを皮切りに、コーポレートウェブサイト傘下の全サイトの評価を開始した。そのために...