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 を置き換える例
序文:パーティショニングはテーブル設計パターンです。一般的に、テーブル パーティショニングとは、条件...
この記事の例では、ライトスイッチ効果を実現するためのjsの具体的なコードを参考までに共有しています。...
1. 背景1. vSphere の共有ストレージの背景を簡単に紹介するvSphere の重要な機能は...
目次1.まずネットワークカードの設定ディレクトリに入る2. ifcfg-ens33ネットワークカード...
序文var は ES5 における変数宣言方法です。var で変数を宣言するとループ変数がグローバル変...
環境の準備1. 環境構築React Native 中国語ウェブサイト2. 開発ツール フロントエンド...
1. 仮想マシン(物理マシン)をインストールする仮想マシンまたは物理マシンにインストールできます。 ...
これはネイティブ JS で実装されたテキスト スクロール効果です。この効果は通常、ニュース、ダイナミ...
方法1: MySQL では、次のコマンド ラインで MySQL サーバーを起動することにより、アクセ...
序文MySQL データベースのパスワードを忘れると、データベースに正常にアクセスできなくなり、パスワ...
目次双方向バインディングの原理ngモデルレンダリングカスタム双方向バインディングプロパティコンポーネ...
目次MySQL の 4 つの分離レベルデータ テーブルを作成します。分離レベルの設定物事の分離レベル...
境界範囲間のmysql間の範囲は両側の境界値を含む例: 3 から 7 までの id は、id >...
水平方向では、セルの配置を左、中央、右に設定できます。基本的な構文<TD ALIGN=&quo...
基礎位置の一致順序は、「最初に正規表現に一致し、次に共通表現に一致」です。実際のロケーションの一致順...