MySQL 学習ノート: 完全な SELECT ステートメントの使用例と詳細な説明

MySQL 学習ノート: 完全な SELECT ステートメントの使用例と詳細な説明

この記事では、MySQL 学習ノートの select ステートメントの完全な使用方法を例を使用して説明します。ご参考までに、詳細は以下の通りです。

この記事の内容:

  • 完全な構文
  • 重複排除オプション
  • フィールドエイリアス
  • データソース
  • どこ
  • グループ化
  • 持つ
  • 並び替え
  • 制限

リリース日: 2018-04-11


完全な構文:

まず完全な文法を示し、それから一つずつ説明します。

基本構文: データ ソースからフィールド リストを選択します。

完全な構文: データ ソースから重複排除オプション フィールド リスト [フィールド エイリアスとして] を選択します [where 句] [group by 句] [having 句] [order by 句] [limit 句];


重複排除オプション:

  • 重複排除オプションは、結果内の同一レコード (すべてのフィールド データが同じ) を重複排除するかどうかを指定します。
    • すべて: 重複を削除しない
    • distinctive: 重複を削除する
  • 構文: テーブル名から重複排除オプション フィールド リストを選択します。

例:

重複排除前: image重複排除後image

テーブルstudent(name varchar(15),gender varchar(15))を作成します。
学生名、性別に値("lilei","男性")を挿入します。
学生名、性別に値("lilei","男性")を挿入します。
学生から*を選択します。
学生から別の*を選択します。

補充:

  • 注: 重複排除は、テーブルに保存されているレコードではなく、クエリから取得されたレコードに対して実行されます。特定のフィールドのみがクエリされる場合、重複排除はこれらのフィールドを対象とします。

フィールドエイリアス:

  • フィールド エイリアスは、クエリ結果のフィールドに付けられる名前です。
  • フィールド エイリアスは現在のクエリ結果にのみ有効になります。
  • フィールドエイリアスは、一般的にフィールドの意味を理解するために使用されます(たとえば、名前をnameと定義した場合、ユーザーに返される結果もnameと表示されることを期待します)。省略されたフィールド名
  • 構文: テーブル名からフィールドエイリアスとしてフィールドを選択します。

例:

使用前に: image使用後image

テーブルstudent(name varchar(15),gender varchar(15))を作成します。
学生名、性別に値("lilei","男性")を挿入します。
学生名、性別に値("lilei","男性")を挿入します。
学生から*を選択します。
学生の名前を「姓名」、性別を「性别」として選択します。

データソース:

  • 実際、クエリのソースは「テーブル名」である必要はなく、2 次元テーブルであるだけで十分です。次に、データ ソースを選択結果にすることができます。
  • データ ソースは、単一テーブルのデータ ソース、複数テーブルのデータ ソース、またはクエリ ステートメントにすることができます。
    • 単一テーブル: テーブル名からフィールド リストを選択します。
    • 複数のテーブル: テーブル名 1、テーブル名 2、... からフィールド リストを選択します。[複数のテーブルをクエリする場合、各テーブルの x レコードが別のテーブルの y レコードと結合されて結果が形成され、結果のレコード数は x*y になります] [これは直積とも呼ばれます]
      • image
    • クエリ ステートメント: select field list fromr (select ステートメント) as table alias; [これは、クエリの結果を 2 次元テーブルとしてクエリの対象として使用します。クエリ結果をデータ ソースとして使用するには、テーブル エイリアスとして定義する必要があります]
    • -- 例: select name from (select * from student) as d;

where句:

  • where 句は、条件を満たす結果をフィルタリングするために使用されます。

複数の構文がある場合:

  • 価値に基づく:
    • = : フィールド = 値; 対応するフィールドが対応する値と等しいレコードを検索します。 (同様に、< は対応する値より小さい、<= は対応する値以下、> は対応する値より大きい、>= は対応する値以上、!= は等しくない)、例: where name = 'lilei'
    • like:where field like value; は = と同様に機能しますが、結果を見つけるためにファジーマッチングを使用できます。例えば、「li%」のような名前の場合
  • 値の範囲に基づいて:
    • in: where field in range; 対応するフィールドの値が指定された範囲内にあるレコードを検索します。例えば、年齢が(18,19,20)の場合
    • not in: フィールドが範囲内にない場合、対応するフィールドの値が指定された範囲内にないレコードを検索します。例えば、年齢が(18,19,20)に含まれない場合
    • xとyの間: whereフィールドがxとyの間;対応するフィールドの値が閉区間[x,y]内にあるレコードを検索します。たとえば、年齢が 18 歳から 20 歳の場合などです。
  • 条件複合語:
    • または: where condition 1 or condition 2…; 条件 1 または条件 2 を満たすレコードを検索します。
    • and: where condition 1 and condition 2…; 条件 1 と条件 2 を満たすレコードを検索します。
    • not: 条件 1 に該当しないすべてのレコードを検索します。
    • && の機能は and と同じであり、|| の機能は or に似ており、! の機能は not に似ています。

補充:

  • ディスクからデータを取得する際のフィルタリングはどこにありますか。そのため、メモリ内にのみ存在するものは、そこでは使用できません。 (フィールド エイリアスは、もともと「ディスク上のデータ」ではありません (メモリ内で実行されているときに定義されます)。そのため、where は使用できず、通常はフィルター処理が必要になります)。
name ="lilei" の student から、name を n 、gender として選択します。
-- select name as n ,gender from student where n ="lilei"; -- error select name as n ,gender from student having n ="lilei";

group by句:

    • group by は、フィールドに従ってクエリ結果をグループ化できます。
    • 構文: テーブル名からフィールド リストを選択し、フィールドでグループ化します。
      • [複数のフィールドが存在する可能性があり、これは実際には二次グループ化です] image
-- 例: select name,gender,count(name) as "group member" from student as d group by name;
名前、性別、カウント(名前)を「グループ メンバー」として、学生として d グループから選択します。名前、性別でグループ化します。

補充:

  • 実際、group by の主な機能は統計です (誰かの合計スコアや女子生徒の数を数えるなど、多くのシナリオがあります)。そのため、通常はいくつかの統計関数と一緒に使用されます。
    • count(x): 各グループ内のレコード数をカウントします。xが*の場合、レコード数を表します。xがフィールド名の場合、フィールドデータの数を表します(NULLを除く)
    • max(x): 統計の最大値、xはフィールド名
    • min(x): 最小統計値、xはフィールド名
    • avg(x): 統計平均、xはフィールド名
    • sum(x): 統計的合計、xはフィールド名
  • グループ化フィールドの後に asc または desc を指定して、グループ化後にデータをフィールドに従って並べ替えるかどうかを指定できます。

having 節:

    • having の機能は where と似ていますが、having の条件判断はデータがメモリ内にあるときに行われるため、「グループ化」や「フィールドエイリアス」など、メモリ内にのみ発生するデータも使用できます。
    • 構文: テーブル名から条件を持つフィールドリストを選択します。[演算子などは where を参照でき、"メモリ" 内の一部のフィルタリング条件のみが追加されます]
-- 例: n = "lilei" を持つ学生から、名前を n、性別として選択します。
select name,gender,count(*) as "組員" from student as d group by name,gender having count(*) >2 ;-- レコードが 2 を超えるグループのみが表示されます

order by句:

  • order byは特定のフィールドに従ってクエリ結果を並べ替えることができます
  • 構文: テーブル名からフィールドリストを選択し、フィールドで並べ替えます [asc|desc];
    • 複数のフィールドが存在する場合があり、左から右に並べると、後者の並べ替えは前者の並べ替えに基づいて行われます (例: 最初に名前で並べ替え、次に性別で並べ替えると、後者の性別の並べ替えは、前の名前の並べ替えと同じ名前のデータ用になります)。
    • asc は昇順でソートすることを意味します
    • descは減少を表す
    • 最初のフィールドを増やし、2 番目のフィールドを減らすなど、特定のフィールドの並べ替え方法を指定することもできます。各フィールドの後に asc または desc を追加するだけです (デフォルトでは増分ですが、追加した方が明確になります)。
-- 例: select * from student order by name;
名前、性別による学生順から*を選択します。
学生名昇順、性別降順で*を選択します。

制限条項:

  • Limit は結果の数を制限するために使用されます。 where\having などと組み合わせて使用​​すると、一致する結果を制限できます。数量が関係する場合はいつでも制限を使用できます (これは制限の役割を強調するためだけのものであり、過度に理解しないでください)
  • 構文: テーブル名制限[オフセット、]カウントからフィールドリストを選択します。
    • countは数です
    • オフセットは開始位置です。オフセットは 0 から始まり、各レコードのインデックス番号と言えます。
-- 例 select * from student limit 1;
学生制限 3,1 から * を選択します。
select * from student where name ="lilei" limit 1;
select * from student where name = "lilei" limit 3,1;

MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL トランザクション操作スキル」、「MySQL ストアド プロシージャ スキル」、「MySQL データベース ロック関連スキルの概要」、および「MySQL 共通関数の概要」

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

以下もご興味があるかもしれません:
  • MySQL 選択最適化ソリューションに関する簡単な説明
  • MySQL で結果を選択して更新を実行する例のチュートリアル
  • MySQLの読み書き分離により挿入後にデータが選択されなくなる問題を解決
  • MySQL SELECT文の実行方法
  • サブクエリ最適化における MySQL 選択の実装
  • MySQL の選択、挿入、更新バッチ操作ステートメントのコード例
  • MySQL SELECT実行順序の簡単な理解
  • 更新とデータ整合性処理のためのMySQLトランザクション選択の説明
  • MySQL における単一テーブルと複数テーブル、およびビューと一時テーブルに対する Update と Select の違い
  • MySQL セレクトキャッシュメカニズムの使用に関する詳細な説明
  • MySql データベースでの Select の使用法の概要
  • MySQLでSELECT文が実行される仕組み

<<:  JavaScriptオブジェクトをマージするさまざまな方法の詳細な説明

>>:  SecureCRT に基づくリモート Linux ホストへのファイルのアップロードとダウンロードのグラフィカルな手順

推薦する

MySQL のキーとインデックスの違い

まずはコードを見てみましょう: ALTER TABLE reportblockdetail ADD ...

Vue は動的な円形のパーセンテージ進捗バーを実装します

最近、小さなプログラムを開発しているときに、次の設計図のような円形のパーセンテージ進捗状況バーを実装...

純粋な CSS を使用して脈動するローダー効果のソースコードを作成する

効果プレビュー右側の「クリックしてプレビュー」ボタンを押すと現在のページでプレビューが表示され、リン...

jQueryはフォーム検証機能を実装します

jQuery フォーム検証の例 / ユーザー名、パスワード、住所、電子メールの検証を含む下記の通り ...

MySQL 5.7.23 解凍バージョンのインストールチュートリアル(画像とテキスト付き)

毎回インストールチュートリアルを探すのは面倒なので、後で確認できるように手順をバックアップします。解...

CentOS で yum を使用して rabbitmq-server をインストールする方法

RabbitMQをインストールする前にSocatをインストールする必要があります。そうしないと、Ra...

MySQLにおけるテーブルインデックスの定義方法と導入

概要インデックスは、テーブル内の 1 つ以上の列に基づいて DBMS によって特定の順序で作成される...

VMWare を使用して Windows 上で Linux 環境を構築する手順 (画像とテキスト)

Mac を返却して以来、元のラップトップは使用されていません。このラップトップの構成は非常に良好で...

Vueフォームで画像を処理する方法

質問: Vue にブログ投稿をアップロードするためのフォームがあり、タイトル、本文、説明、スニペット...

効率的な視覚化Nginxログ表示ツール

目次導入インストール表示フィールドフィルターソートキー導入Rhit は、標準フォルダー (gzip ...

CSS はモバイル デバイスで水平スクロール ナビゲーション バーを実装します (PC デバイスにも適用可能)

関数の起源最近、水平スクロール バーを必要とする H5 に取り組んでいました。いくつかのドキュメント...

Vueフィルターの使い方

目次概要フィルターの定義フィルターの使用カスタムグローバルフィルターローカルフィルター予防例1(ロー...

Linux環境でのshadowsocks+polipoグローバルプロキシの設定

1. シャドウソックスをインストールするsudo apt-get install python-pi...

サーバー上で selenium+chromedriver を実行するための詳細なチュートリアル

1. はじめにSelenium を使用して Web サイトからデータをスクレイピングしたいのですが、...