クエリを説明する前に、皆さんのためにデータテーブルを用意しました。このテーブルには、銀行の残高とユーザーに関する基本情報が保存されます。
money という名前のテーブル構造を定義しました。
テーブルを作成するステートメントは次のとおりです:
CREATE TABLE money
( id
INT NOT NULL AUTO_INCREMENT , username
VARCHAR(50) NOT NULL , balance
FLOAT NOT NULL , province
VARCHAR(20) NOT NULL , age
TINYINT UNSIGNED NOT NULL , sex
TINYINT NOT NULL ,
主キー (id
(10))
) ENGINE = InnoDB CHARACTER SET utf8;
テーブル構造とデータは次のように表示されます:
id username balance province age sex 1 王宝強 120.02 上海 29 1 2 ファン・ビンビン 260.23 山東 40 0 3 黄暁明 150.86 山東省 40 1 4 ジン・ボラン 810 遼寧省 27 1 5 リー・ビンビン 20.15 黒龍江省 43 0 6 ジャッキー・チェン 313 山東 63 1 7 ヤン・ミー 123 北京 30 0 8 Liu Shishi 456 北京 29 1 9 劉燕 23.4 湖南 36 0 10 趙弁山 3456 遼寧省 63 1 11 王峰 34.32 北京 44 1 12 郭徳剛 212 天津 43 1
注:
残高は残高を指します 州は州を指します
基本クエリ
カテゴリ 詳細な説明 基本構文 select * from table; 例 選択* from Money; 例の説明 Money をクエリする テーブル内のすべてのフィールドのすべての結果 注: 「*」は正規表現であり、すべてに一致することを意味します:
mysql> select * frommoney; +----+---- ---- ---+--------+----------+-----+ | 都道府県 |セックス | +------+-----------+----------+-----------+--- --+ -----+ | 120.02 | 山東 | 40.86 1 | | 810 | 李冰冰 | 63 | | ヤン・ミー | 30 | 北京 23 | 10 | | 遼寧 | 11 | 44 | 郭徳剛 | ----------+---- -----+----------+-----+-----+ 12行セット(0.00秒) フィールドクエリを指定 カテゴリ
詳細な説明语 基本文法 テーブルからフィールドを選択する 例 ID、ユーザー名、ユーザー名、残高フィールドのすべての結果 mysql> お金から ID、ユーザー名、残高を選択; +----+----------+----------+ ID 残高 | +-----+----------+----------+ | 120.02 | |ホアン・シャオミン | | 810 | ジャッキー・チェン | 123 | 9 | 劉燕 | 3456 | 12 | +------ ---+------ --+ セット内の 12 行 (0.00 秒) 重複しないレコードを個別に単一フィールドにクエリします カテゴリ 詳細な説明
基本構文テーブルから個別のフィールドを選択します; 例 お金から個別の年齢部門を選択します;例の説明 お金テーブル内の固有の年齢を含むすべての結果をクエリします mysql&gと;お金から個別の年齢部門を選択します; +----- ---+| 29 || 27 | | | 63 || 30 | | 36 | | 44 | +--------+
8 行 (0.00 秒) 条件付きクエリ 基本構文 select field from Table where where 条件;
例select * from Money where age = 29; 例の説明 年齢 29 のすべての結果をクエリしますお金の表mysql> select * from Money where age = 29; +----+----------+---------+--------- - +-----+-----+ | 都道府県 | 年齢 | +-----------+--- -----+----------+-----+-----+ | 120.02 | | | 456 | 北京 29 | +----------+----------+- - ---+-----+ 2行セット(0.00秒)
where 比較演算子に続く条件 条件を満たすレコードが結果セットにリストされます。上の例では、where の後のフィールドはフィールドの「=」です。
さらに、>、<、>=、<=、!=; などの比較演算子も使用できます。 ;
より大きい< より小さい>= 以上<=以下 !=ではありません = 論理演算子複数の条件では、or、and、およびその他の論理演算子を使用して、複数条件の結合クエリを実行することもできます シンボル
or
or
and and 複数の条件の例を見てみましょう: TypeDetails 例
選択* from where お金 ID <10 および
説明 すべてのフィールドのクエリには 10 未満の ID と、province='Hubei' が必要です mysql> select * from Money where id <10 および、province= 「湖北省」;
+-----+----------+----------+----------+-----+----- +
| ユーザー名 | 年齢 |
+-----+----------+----------+----------+-----+----- +
| 王宝強 | 120.02 |
+-----+----------+----------+----------+-----+----- +
セット内の 1 行 (0.00 秒) 結果セットの並べ替え
カテゴリ詳細な説明 基本構文
フィールドの並べ替えキーワードによるテーブルからのフィールドの順序 例残高説明で郵便為替から ID、ユーザー名、残高を選択します 例の説明 マネーテーブルの ID、ユーザー名、残高フィールドをクエリし、残高に従って降順に並べ替えます並べ替えに使用されるキーワード:
キーワード 説明 asc 小さいものから大きいものへの昇順 (デフォルト) desc 降順、幼少期から順に並べ替え選択後の結果セットには、order by を使用します。desc と asc は並べ替え順序のキーワードです。 desc はフィールドごとに降順でソートすることを意味し、asc は昇順でソートすることを意味します。キーワードが記述されていない場合、デフォルトは昇順でソートします。 mysql> 残高説明による為替から ID、ユーザー名、残高を選択します; +----+-----------+---------+
|ユーザー名 | +----------+---------+
| 3456 | ジン 810 | | | 456 | ジャッキー・チェン | 260.23 | | | 王宝強 | 11.32 | | 20.15 | -+-- -------+ 12 行セット (0.00 秒) 複数フィールドの並べ替え order by の後に複数の異なるフィールドを並べ替えることができ、並べ替えられた結果セットの順序も異なります。並べ替えられたフィールドも異なります。 フィールドの値が同じ場合、同じ値を持つフィールドは 2 番目の並べ替えフィールドに従って並べ替えられます。 カテゴリ 詳しい説明
基本構文
テーブルからフィールドを選択 フィールド順 1 並べ替えキーワード,... ...フィールド n desc|asc;例 残高記述、年齢順で郵便為替から ID、ユーザー名、残高を選択します。 例の説明 金額テーブルの ID、ユーザー名、残高フィールドをクエリし、残高に従って降順に並べ替えます。残高がすべて同じ場合は、年齢を使用して昇順に並べ替えます * 注: 最初のフィールドにすでに結果が配置されている場合。 2 番目のフィールドの並べ替えフィールドは有効になりません。この場合、2 番目のフィールドは無効です。 *
mysql> 残高記述、年齢順で郵便為替から ID、ユーザー名、残高を選択します。
+-----+----------+----------+
| ユーザー名 |
+-----+----------+----------+
| 10 | 趙弁山 |
| ジン・ボラン |
| 8 | 劉詩士 |
| 6 | ジャッキー・チェン |
| ファン・ビンビン | 260.23 |
| 12 | 郭徳剛
| 3 | 黄暁明 | 150.86
| 7 | ヤンミ |
| 120.02 |
| 11 | 34.32 |
| 9 | 劉燕 |
| 5 | リー・ビンビン | 20.15
+-----+----------+----------+
セット内の 12 行 (0.00 秒) 結果セットの制限 クエリまたは並べ替えられた結果セットの場合、すべてではなく一部のみを表示したい場合は、limit キーワードを使用して結果セットの数を制限します。 カテゴリ
詳しい説明
基本構文テーブル制限数量からフィールドを選択; 例 制限金額5からID、ユーザー名、残高を選択; 例説明 最初の 5 人のユーザーを表示しています mysql> 資金制限 5 から * を選択; +------+-----------+----------+---------- - +-----+-----+ | 性別 | +-----+-----+--- ------+----------+-----+-----+ | 120.02 | |ファン・ビンビン | 40 | ジン・ボラン | 20.15 |黒竜江省 | 43 | +----+----------+-----------+-- ---+--- --+ セット内の 5 行 (0.00 秒) 結果セットを制限して並べ替える
カテゴリー詳細な説明 基本構文からフィールドを選択テーブル フィールド順 キーワード制限 数量 例 残高による為替からID、ユーザー名、残高を選択 説明制限 5; 例の説明 金額順に並べ替え、最も裕福なユーザーのトップ 5 を表示 mysql> 残高記述制限による為替から ID、ユーザー名、残高を選択 5; +----+-----------+---------+
| ID | ユーザー名 |+-----------+--------+ | 3456 | | | 810 | | 456 | | 260.23 | ------ -+ セット内の 5 行 (0.00 秒) 結果セット間隔の選択 0 から始まる 3 つのレコードを取るとします。 3 番目から始まるさらに 3 つのレコードを取得したいと考えています。 6番目から4件のレコードを取得したい場合はどうすればよいですか?
現時点では、結果セット間隔の選択を使用する必要があります。
カテゴリ
詳しい説明 基本構文 テーブル制限オフセット、数量からフィールドを選択 例 金額制限0からID、ユーザー名、残高を選択3 ; 例の説明 最初のレコードから順に 3 つのレコードを取得します 注: 最初のレコードは 0 です。
mysql> 資金制限0,3からID、ユーザー名、残高を選択します;
+-----+----------+----------+
| ユーザー名 |
+-----+----------+----------+
| 120.02 |
| ファン・ビンビン | 260.23 |
| 3 | 黄暁明 | 150.86
+-----+----------+----------+
3列セット(0.00秒)
3列目からさらに3列取ってみてはどうでしょうか?
mysql> 資金制限 3,3 から ID、ユーザー名、残高を選択します。
+-----+----------+----------+
| ユーザー名 |
+-----+----------+----------+
| ジン・ボラン |
| 5 | リー・ビンビン | 20.15
| 6 | ジャッキー・チェン |
+-----+----------+----------+
3行セット(0.00秒) 上記の考え方により、表示はページングを完了します。 1 ページあたり 10 件のレコードを表示すると:
ページ 1 は制限 0,10 ページ 2 は制限 10,10ページ 3 は制限 20,10
など... ... 統計関数の使用
ユーザーの総数を知りたい場合はどうすればよいですか?
データテーブルで最も裕福な人が誰であるかを確認するにはどうすればよいですか? ユーザーが費やした平均金額を知りたい場合はどうすればよいでしょうか? すべてのユーザーの合計金額を知りたい場合はどうすればよいですか? 最もよく使用される 4 つの統計関数があります: 関数
説明 sum Sum count Statistical total max 最大値 min 最小値 avg Average 注: もちろん、他の mysql 関数も使用できることはご存知でしょう。しかし、実際の業務では、大企業の大規模および中規模のプロジェクトではほとんど使用されておらず、すべてのプロジェクトが専用の集計サーバーを持っています。 MySQL自体の計算量が非常に大きいため、負荷を軽減するために実際の計算作業は業務サーバーや他のサーバーに任せるのが一般的です。
カテゴリー詳しい説明 基本構文 select function (field) from table 例 select count(id) frommoney 説明例 Money テーブル内の ID の総数をクエリします mysql> お金からカウント(id)を選択します;
+----------+
| カウント(ID) |
+----------+
| 12 |
+----------+
セット内の 1 行 (0.00 秒)
フィールドにエイリアスを付けることもできます。 as キーワードを使用します。
mysql> お金から Zongshu として count(id) を選択します;
+--------+
| ゾンシュー |
+--------+
| 12 |
+--------+
セット内の 1 行 (0.00 秒)
平均金額をクエリ mysql> select avg(balance) from Money;
+----------------------+
| 平均(バランス) |
+----------------------+
| 498.24833393096924 |
+----------------------+
セット内の 1 行 (0.00 秒)
合計金額をクエリ mysql> 金額から合計(残高)を選択します
+-----------------+
| 合計(残高) |
+-----------------+
| 5978.980007171631 |
+-----------------+
セット内の 1 行 (0.00 秒)
最大金額をクエリ mysql> 金額から max(残高) を選択します
+-------------+
| 最大(バランス) |
+-------------+
| 3456 |
+-------------+
セット内の 1 行 (0.00 秒)
最小金額をクエリ mysql> 金額から min(残高) を選択します
+----------------------+
| 分(バランス) |
+----------------------+
|20.149999618530273 |
+----------------------+
セット内の 1 行 (0.00 秒)
グループ化 データをグループ化するために金額テーブルの州を取得します。データをグループ化するとわかります。同じ県は削除されます。つまり、プロヴィンスはグループです。
カテゴリ 詳しい説明 基本構文 select * from table group by field 例 select * from Money group by land; 説明例 地域ごとにグループ化
mysql> 州別のお金グループから * を選択; +------+-----------+---------+---------- -+-----+-----+ | 性別 | +-----+-----+--- ------+----------+-----+-----+ | 123 | 12 |郭徳剛 | 1 | | 260.02 | |湖南 | 0 | ジン・ボラン | 1 | | ----------+--- -------+----------+-----+-----+ 統計グループ化 (カテゴリー) 総数: mysql> select deptno, count (1) from emp group by deptno; +--------+----------+
|部門番号 (1) |+----------+
| 1 || | 4 | +--------+--- -------+ 4行セット(0.04秒) 県の数を数えてグループ分けして表示します mysql> 州別の金額グループから州を選択します;
+------+----------+
| 都道府県 |
+------+----------+
| 3 | 北京 |
| 天津 |
| 3 | 山東省
| 湖北省 |
| 湖南 |
| 2 | 遼寧
| 黒竜江省 |
+------+----------+
7 行セット (0.00 秒) グループベースの統計 ロールアップはほとんど使用されません。この知識ポイントは理解レベルに設定されています。 その主な機能は、グループ化されたデータをカウントし、合計カウントを実行することです。
カテゴリ 詳しい説明 基本構文 ロールアップを使用してフィールドごとにテーブルから選択 例 金額グループごとに都道府県を選択ロールアップ付き。 例の説明 グループの数を再度数えます
上記を踏まえて、合計数を数えます。 以下の例の結果では、最後にNULLが12個余分にあります。
mysql> ロールアップを使用して州ごとの金額グループから州を選択します。
+------+----------+
| 都道府県 |
+------+----------+
| 3 | 北京 |
| 天津 |
| 3 | 山東省
| 湖北省 |
| 湖南 |
| 2 | 遼寧
| 黒竜江省 |
| 12 |
+------+----------+
セット内の 8 行 (0.00 秒)
結果はフィルタリングされますhaving 句は where と似ていますが、どちらも条件を設定するステートメントです。 having はフィルタリング グループ、 はフィルタリング レコードです。
カテゴリ詳しい説明 基本構文条件を持つフィールドによるテーブルグループから*を選択 例select count(province) as result ,provin州別マネーグループからのCE結果が > 2 である 例の説明領域をグループ化して合計を数え、2 を超えるグループ化された領域をグループ化結果に表示します mysql> 結果として count(province) を選択、結果が 2 を超える州ごとの金額グループから州を選択します
+--------+----------+
| 結果 |
+--------+----------+
| 3 | 北京 |
| 3 | 山東省
+--------+----------+
セット内の 2 行 (0.00 秒)
SQL 全体の使用 上記のステートメントでは、全体としてではなく、特定のステートメントのみを使用しています。
今度はステートメントを統合し、一度一緒に使用します。 SQL ステートメント全体で使用される構文構造は次のとおりです:
SELECT
[フィールド 1 [エイリアス 1 として], [関数 (フィールド 2),]...フィールド n]
テーブル名から
【どこどこ条件】
[フィールドごとにグループ化]
[HAVING where_continition]
【注文条件】
[制限条件]
注: [] は、上記のステートメントのオプションを表すことができます。
最終的な構文は次のように要約されます:
キーワード 説明 select Selected columns from table どこ クエリ条件 group by グループフィルタリング条件を持つgrouping属性 order bysort属性 limit開始レコード位置、レコード数を取る 総合的な利用を行います
、マネーテーブルのフィールドをクエリします: ID、ユーザー名、残高、州 ID>1 および残高が 50 より大きいことが必要です。グループ化にはリージョンを使用します。ユーザーIDを降順に使用し、表示できる項目は3件のみです。
最後に次のように SQL ステートメントを記述し、クエリ結果は次のようになります: mysql> select id,username,balance,province where id > 1 and Balance > 50 group by ground order by id desc;制限 3;
+-----+----------+----------+----------+
| ユーザー名 |
+-----+----------+----------+----------+
| 12 | 天津 |
| 7 | 北京 |
| ジン・ボラン | 810 |
+-----+----------+----------+----------+
3 行セット (0.00 秒)
<?php
echo "Hello Mysql";
?>
現時点ではコースウェアはダウンロードできません。現在スタッフが整理中です。今後もこのコースにもっと注目してください〜