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 を置き換える例
問題の説明nginx を設定することで、異なるポートを介して異なる Web アプリケーションにアクセ...
1. 数学関数ABS(x) xの絶対値を返します。 BIN(x) xの2進値を返します(OCTは8...
デフォルトでは、Flash は常にページのトップレベルに表示されます。つまり、ページに DHTML ...
序文CSS を使用して点線を生成するのは、フロントエンド開発者にとっては簡単です。一般的に、これを実...
複数行を超えるテキストをインターセプトするための HTML コードは次のとおりです。 HTML:コー...
目次浅いコピーディープコピー補充する要約するコピー(クローン、複製などとも呼ばれる)ですが、ディープ...
RDF と OWL は、2 つの重要なセマンティック ウェブ テクノロジーです。 RDF と OWL...
インストールまず、Java と Scala をインストールし、次に Spark をダウンロードしてイ...
目次FileReaderはローカルファイルまたはBLOBを読み取ります1. FileReaderの使...
目次MySQLをインストールする環境変数の設定MySQLをインストールするmysqlをダウンロードし...
現在、Nginx は、Web サービスを提供するために、Windows ベースの IIS と Lin...
Vueバスの簡単な使い方シナリオの説明:コンポーネント A にはコンポーネント B と C が含まれ...
データ分析会社Net Market Shareによると、Linuxデスクトップオペレーティングシステ...
目次コンポーネントインフラストラクチャ目的: 画像拡大鏡機能を実現するvueuseをインストールする...
RabbitMQをインストールする前にSocatをインストールする必要があります。そうしないと、Ra...