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 ホストへのファイルのアップロードとダウンロードのグラフィカルな手順

推薦する

Bootstrap 3.0 学習ノート グリッドシステムの原則

前の 2 つの記事の簡単な紹介を通じて、Bootstrap についての基礎的な理解が得られました。 ...

CentOS 7 ブートカーネルの切り替えとブートモードの切り替えの説明

Centos7 スイッチブートカーネル注: 必要に応じて、最初にyum update -yを実行して...

Jenkins初心者のためのDockerデプロイメントチュートリアルの詳細な説明

この記事では、docker 経由で Jenkins+Maven+SVN+Tomcat をデプロイし、...

Linux でディスクをマウントし、起動時に自動的にマウントするように設定する方法

皆さんの時間は貴重だと承知しているので、プロセス コマンドを直接書き留めておきます。設定できます。原...

MySQL フィールドで NOT NULL を使用する必要があるのはなぜですか?

私は最近新しい会社に入社したのですが、データベース設計にいくつか小さな問題があることに気付きました。...

HTML メタタグの使用の概要 (推奨)

メタタグ機能METAタグは、HTMLタグのHEAD領域にある重要なタグです。文書の文字セット、使用言...

一般的な HBase 運用および保守ツール 10 個の概要

概要: HBase には、ユーザーに管理、分析、修復、デバッグ機能を提供するための多くの操作および保...

MySQL数千万の大規模データに対する30のSQLクエリ最適化テクニックの詳細な説明

1. クエリを最適化するには、テーブル全体のスキャンを避けてください。まず、where と orde...

win10にUbuntu18デュアルシステムをインストールするとmmx64.efiが見つからないという問題が発生する

Ubuntu 18のインストール中に、USBディスクからUbuntuのインストールを開始すると、mm...

mysql8.0.11 winx64 手動インストールと設定チュートリアル

まず、私の日常生活についてお話しします。MySQLの急速なアップデートにより、MySQLはバージョン...

js タグ構文の使用法の詳細

目次1. ラベルステートメントの紹介2. ラベルステートメントの使用序文:日常の開発では、プログラム...

JavaScript Canvas は動的なワイヤーフレーム効果を描画します

この記事では、JavaScript Canvasの動的なワイヤーフレーム効果を描画する具体的なコード...

Mysql の主キーと一意キーの違いのまとめ

主キーとは何ですか?主キーは、テーブル内の各タプル (行) を一意に識別するテーブル内の列です。主キ...

Javascript 非同期プログラミング: Promise を本当に理解していますか?

目次序文基本的な使い方文法エラー処理プロミスチェーン呼び出し非同期と待機よく使われる方法1. Pro...

JavaScript でオブジェクトをトラバースする 5 つの方法 サンプルコード

目次準備する5つの武器…のためにオブジェクト.キーオブジェクト.getOwnPropertyName...