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

推薦する

CSS3でよく使われるスタイルの詳しい解説[基本的なテキストとフォントのスタイル]

概要: Web ページをより美しく見せるために、ここでは CSS3 でよく使用されるスタイルをいくつ...

JavaScript の寄生的構成継承についての簡単な説明

コンポジション継承組み合わせ継承は、疑似古典的継承とも呼ばれます。これは、昨日説明したプロトタイプ ...

Linux システムファイル共有 samba 設定チュートリアル

目次sambaをアンインストールしてインストールする新しい共有パスを作成し、権限を設定するSamba...

Vueカスタム命令とその使用方法の詳細な説明

目次1. 指令とは何ですか? Vue でよく使われる組み込みの v ディレクティブv-if と v-...

mysql update文の実行プロセスの詳細な説明

以前、MySQL クエリ文の実行プロセスについての記事がありました。ここでは、更新文の実行プロセスを...

MySQL インポート csv エラーの 4 つの解決策

これは今日私が踏んだ4つの落とし穴を記念したものです...落とし穴1:地元のせいエラー:エラー 39...

NextCloud プライベート クラウド ストレージ ネットワーク ディスクの構築に関する詳細なチュートリアル

Nextcloud は、オープンソースで無料のプライベート クラウド ストレージ ネットワーク ディ...

js でオブジェクトとオブジェクト メソッドを作成するいくつかの方法の詳細な説明

この記事は、JS レッドブックの第 8 章に記載されているオブジェクトに関する 2 番目の記事です。...

Docker を使用して OpenLDAP+phpLDAPadmin 統合ユーザー認証を構築する方法

1. 背景LDAP を使用して、操作および保守に関連するユーザー名とパスワードを集中管理します。 1...

Linuxシステムにおけるキー認証に基づくSSHサービスのプロセス

ご存知のとおり、SSH は現在、リモート ログイン セッションやその他のネットワーク サービスにセキ...

インスタンス化されたオブジェクトパラメータによるMySQLクエリ例の説明

この記事では、オブジェクト パラメータをインスタンス化して MySQL でデータをクエリする方法を紹...

マウスの尾行効果を実現する JavaScript

マウス効果では、setTimeout を使用して固定時間にノードを生成し、ノードを削除し、生成された...

JavaScript で二分探索木を実装する

JavaScriptでの検索二分木実装は参考までに。具体的な内容は以下のとおりです。バイナリ検索木 ...

vmware workstation12 インストール CentOS プロンプト VMware Player と Device/Credential Guard に互換性がない、理由と解決策

最新バージョンの WIN10 では、Microsoft は仮想化コンテナに基づくセキュリティ メカニ...

CentOS8でのnmcliの使い方の詳しい説明

RHEL8/CentOS8 に基づく一般的な nmcli コマンド # IP を表示する (ifco...