この記事では、MySQL 学習ノートの select ステートメントの完全な使用方法を例を使用して説明します。ご参考までに、詳細は以下の通りです。 この記事の内容:- 完全な構文
- 重複排除オプション
- フィールドエイリアス
- データソース
- どこ
- グループ化
- 持つ
- 並び替え
- 制限
リリース日: 2018-04-11
完全な構文:まず完全な文法を示し、それから一つずつ説明します。 基本構文: データ ソースからフィールド リストを選択します。 完全な構文: データ ソースから重複排除オプション フィールド リスト [フィールド エイリアスとして] を選択します [where 句] [group by 句] [having 句] [order by 句] [limit 句];
重複排除オプション:- 重複排除オプションは、結果内の同一レコード (すべてのフィールド データが同じ) を重複排除するかどうかを指定します。
- すべて: 重複を削除しない
- distinctive: 重複を削除する
- 構文: テーブル名から重複排除オプション フィールド リストを選択します。
例: 重複排除前: 重複排除後
テーブルstudent(name varchar(15),gender varchar(15))を作成します。
学生名、性別に値("lilei","男性")を挿入します。
学生名、性別に値("lilei","男性")を挿入します。
学生から*を選択します。
学生から別の*を選択します。 補充:- 注: 重複排除は、テーブルに保存されているレコードではなく、クエリから取得されたレコードに対して実行されます。特定のフィールドのみがクエリされる場合、重複排除はこれらのフィールドを対象とします。
フィールドエイリアス:- フィールド エイリアスは、クエリ結果のフィールドに付けられる名前です。
- フィールド エイリアスは現在のクエリ結果にのみ有効になります。
- フィールドエイリアスは、一般的にフィールドの意味を理解するために使用されます(たとえば、名前をnameと定義した場合、ユーザーに返される結果もnameと表示されることを期待します)。省略されたフィールド名
- 構文: テーブル名からフィールドエイリアスとしてフィールドを選択します。
例: 使用前に: 使用後
テーブルstudent(name varchar(15),gender varchar(15))を作成します。
学生名、性別に値("lilei","男性")を挿入します。
学生名、性別に値("lilei","男性")を挿入します。
学生から*を選択します。
学生の名前を「姓名」、性別を「性别」として選択します。
データソース:- 実際、クエリのソースは「テーブル名」である必要はなく、2 次元テーブルであるだけで十分です。次に、データ ソースを選択結果にすることができます。
- データ ソースは、単一テーブルのデータ ソース、複数テーブルのデータ ソース、またはクエリ ステートメントにすることができます。
- 単一テーブル: テーブル名からフィールド リストを選択します。
- 複数のテーブル: テーブル名 1、テーブル名 2、... からフィールド リストを選択します。[複数のテーブルをクエリする場合、各テーブルの x レコードが別のテーブルの y レコードと結合されて結果が形成され、結果のレコード数は x*y になります] [これは直積とも呼ばれます]
- クエリ ステートメント: 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 は、フィールドに従ってクエリ結果をグループ化できます。
- 構文: テーブル名からフィールド リストを選択し、フィールドでグループ化します。
- [複数のフィールドが存在する可能性があり、これは実際には二次グループ化です]

-- 例: 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文が実行される仕組み
|