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 を置き換える例
目次dnsmasq をインストールして設定するChinaDNS をインストールして設定するshado...
この記事では、絵文字用の MySQL Java サーバーのサポートと問題解決方法について説明します。...
ファイル名が少ないファイルを表示ファイル名を少なく | grep -n コンテンツを検索内容に応じて...
まず、MySQL とは何かを簡単に紹介します。簡単に言えば、データベースはデータを格納するための倉庫...
2級コンピュータ試験のMySQL知識ポイントの基礎、一般的なMYSQLコマンドは次のとおりです。よく...
目次1. ストアドプロシージャに関連する概念2. ストアドプロシージャの使用1) ストアドプロシージ...
スクリプトの要件: MySQL データベースを毎日バックアップし、スクリプトを 7 日間保存します。...
序文プロジェクトのリリースでは、常に特定の状況に応じたパッケージ化が必要です。Angular CLI...
目次フロントエンドルーティングとは何ですか?フロントエンドルーティングを実装するにはどうすればいいで...
カバーインデックスとは何ですか?クエリで使用されるすべてのフィールドを含むインデックスを作成すること...
1. MySQLをダウンロードするMySQL 公式 Web サイトにログインし、MSI インストー...
目次1. オプションとは何ですか? 2. 含まれる属性3. エントリー属性エルデータ方法コンポーネン...
序文この記事では主に、Linux/Mac に MySQL をインストールするときにパスワードを忘れた...
で+ 時間 17:23に at> touch /mnt/file{1..9} ##アクションを...
ウェブサイトのナビゲーションを設計することは、家の基礎を築くようなものです。基礎がしっかりしていなけ...