SQL クエリ ステートメントの実行順序は次のとおりです。 (7)選択 (8) DISTINCT <選択リスト> (1)<left_table>から (3)<結合タイプ> JOIN <右テーブル> (2)ON <結合条件> (4) WHERE <where_condition> (5) GROUP BY <group_by_list> (6) HAVING <having_condition> (9) ORDER BY <order_by_condition> (10) LIMIT <制限数> 事前準備 1. 新しいテストデータベースを作成する データベース testData を作成します。 2. テスト テーブルを作成し、次のようにデータを挿入します。 ユーザーテーブル 注文フォーム SQL論理クエリテストステートメントを準備する a.user_id、COUNT(b.order_id) を total_orders として選択します。 ユーザーからの LEFT JOINはbとして注文する a.user_id = b.user_id の場合 ここで、a.city = '北京' GROUP BY a.user_id COUNT(b.order_id) < 2 である ORDER BY total_orders desc 上記の SQL クエリを使用して、注文が 2 件未満の北京の顧客を取得します。 これらの SQL ステートメントの実行中に、SQL ステートメントの実行結果を保存するための仮想テーブルが生成されます。 1. FROMステートメントを実行する 最初のステップは、 FROM ステートメントが 2 つのテーブルに対して直積を実行すると、次の内容を持つ仮想テーブル VT1 (仮想テーブル 1) が取得されます。 合計で 28 件 (ユーザーレコード数 * 注文レコード数) のレコードがあります。これは VT1 の結果です。以下の操作は VT1 に基づいています。 2. ONフィルタリングを実行する デカルト積を実行した後、 select * from user as a inner JOIN orders as b ON a.user_id = b.user_id; 3. 外部行を追加する このステップは、結合タイプが
準備したテスト SQL クエリ ロジック ステートメントで LEFT JOIN を使用したため、結果の VT3 テーブルは次のようになります。 4. where条件フィルタリングを実行する 外部行が追加されたデータは、where 条件によってフィルタリングされます。<where_condition> 条件を満たすレコードのみがフィルタリングされます。次のように WHERE a.city = 'beijing' を実行して VT4 を取得します。 ただし、WHERE 句を使用する場合は、次の 2 つの点に注意する必要があります。 1. データがまだグループ化されていないため、where フィルター条件で where_condition=MIN(col) を使用してグループ統計をフィルターすることはできません。 2. 列選択操作が実行されていないため、選択で列エイリアスを使用することもできません。たとえば、c='beijing' の場合、table1 から city as c を選択することは許可されません。 5. group byステートメントを実行する
6. 所有の執行
7. リストを選択
テスト ステートメントで 8. 重複データを排除するためにdistinctを実行する クエリで 9. order by句を実行する 仮想テーブル VT7 の内容を指定された列で並べ替え、新しい仮想テーブルを返します。テスト SQL ステートメントで DESCは降順で並び替え、ASCは昇順で並び替えます 10. 制限文を実行する LIMIT 句は、前の手順で取得した仮想テーブルから指定された位置から指定された行データを選択します。これは、ページングによく使用されます。 MySQLデータベースのLIMITは次のオプションをサポートしています: limit n,m n 番目のレコードから始まる m 個のレコードを選択することを示します。データが小さい場合は、LIMIT 句を使用しても問題ありません。ただし、データ量が非常に多い場合は、LIMIT n, m を使用することは非常に非効率的です。 LIMIT メカニズムは毎回先頭からスキャンするため、600,000 行目から 3 つのデータを読み取る必要がある場合は、最初に 600,000 行目までスキャンしてから読み取る必要があります。スキャン処理は非常に非効率的な処理です。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: vue プロジェクトで rem を使用して px を置き換える例
成果を達成するまずHTMLを使って基本的なフレームワークを構築します <本文> <...
DockerイメージからDockerfileを取得する docker 履歴 --format {{....
目次導入リンク始めるコードを読み進めてくださいプロキシ設定傍受を要求する異なるプレフィックスを持つイ...
1. よく使われるHTMLタグの最適化HTML は Web 編集者にとって基本的なスキルであるべきで...
効果は以下のとおりです。 コードは次のとおりです (クリックすると展開してソース コードが表示されま...
この記事では、ログインスライダー検証を実装するためのJavaScriptの具体的なコードを参考までに...
はじめに: この記事ではreact-native-cliで作成したサンプル プロジェクト (Andr...
目次1. インデックスの種類1. B+ツリー2. MyISAM と InnoDB の B+ ツリー ...
この記事の例では、検証コードを作成して取得するためのjsキャンバスの具体的なコードを共有しています。...
目次ポート関連の概念:ポートとサービスの関係1: nmapツールが開いているポートを検出する2: n...
問題の説明: ユーザーは、テーブルに「違反」という単語を含むフィールドが時々表示されることを要求して...
まずは例を見てみましょうコードをコピーコードは次のとおりです。 <!DOCTYPE html ...
目次まず、スクロール バーのスタイルを変更するには、疑似要素-webkit-scrollbarを使用...
この記事では、Baidu News Navigation Barの効果を実現するための具体的なJSコ...
この記事では、MySQL 8.0.24のインストールチュートリアルを参考までに紹介します。具体的な内...