MySQL のクエリ レコードの追加、削除、変更

クエリを説明する前に、皆さんのためにデータテーブルを用意しました。このテーブルには、銀行の残高とユーザーに関する基本情報が保存されます。

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;

テーブル構造とデータは次のように表示されます:

12郭徳剛 212天津431
idusernamebalanceprovinceagesex
1 王宝強 120.02上海291
2ファン・ビンビン260.23山東40 0
3黄暁明150.86山東省401
4ジン・ボラン810遼寧省271
5リー・ビンビン20.15黒龍江省430
6ジャッキー・チェン 313山東631
7ヤン・ミー123北京 300
8Liu Shishi 456北京291
9劉燕23.4湖南360
10趙弁山3456遼寧省 631
11王峰34.32北京441
注:

残高は残高を指します
州は州を指します

基本クエリ

カテゴリ詳細な説明基本構文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 || | 63 || 36 || 44 |+--------+
テーブルから個別のフィールドを選択します;
例の説明
| 27 || 30 |
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

andand 複数の条件の例を見てみましょう: TypeDetails 例

選択* from where お金 ID <10 および

説明すべてのフィールドのクエリには 10 未満の ID と、province='Hubei' が必要ですmysql> select * from Money where id <10 および、province= 「湖北省」; | ユーザー名 | 年齢 | | 王宝強 | 120.02 | +-----+----------+----------+----------+-----+----- + セット内の 1 行 (0.00 秒)結果セットの並べ替え
+-----+----------+----------+----------+-----+----- + +-----+----------+----------+----------+-----+----- +
カテゴリ

詳細な説明





基本構文

フィールドの並べ替えキーワードによるテーブルからのフィールドの順序

例例の説明マネーテーブルの ID、ユーザー名、残高フィールドをクエリし、残高に従って降順に並べ替えます
残高説明で郵便為替から ID、ユーザー名、残高を選択します

並べ替えに使用されるキーワード:

mysql> 残高説明による為替から ID、ユーザー名、残高を選択します;+----+-----------+---------+
キーワード 説明
asc小さいものから大きいものへの昇順 (デフォルト)
desc 降順、幼少期から順に並べ替え選択後の結果セットには、order by を使用します。desc と asc は並べ替え順序のキーワードです。 desc はフィールドごとに降順でソートすることを意味し、asc は昇順でソートすることを意味します。キーワードが記述されていない場合、デフォルトは昇順でソートします。
|ユーザー名 |

+----------+---------+

| 3456 | ジン 810 | |

| 456 | ジャッキー・チェン | 260.23 |
| | 王宝強 | 11.32 |
| 20.15 | -+-- -------+
12 行セット (0.00 秒)

複数フィールドの並べ替え

order by の後に複数の異なるフィールドを並べ替えることができ、並べ替えられた結果セットの順序も異なります。並べ替えられたフィールドも異なります。 フィールドの値が同じ場合、同じ値を持つフィールドは 2 番目の並べ替えフィールドに従って並べ替えられます。




カテゴリ

詳しい説明


基本構文

テーブルからフィールドを選択 フィールド順 1 並べ替えキーワード,... ...フィールド n desc|asc;例の説明

* 注: 最初のフィールドにすでに結果が配置されている場合。 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 キーワードを使用して結果セットの数を制限します。




カテゴリ

詳しい説明

残高記述、年齢順で郵便為替から ID、ユーザー名、残高を選択します。
金額テーブルの ID、ユーザー名、残高フィールドをクエリし、残高に従って降順に並べ替えます。残高がすべて同じ場合は、年齢を使用して昇順に並べ替えます
基本構文例制限金額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

など... ...


統計関数の使用

ユーザーの総数を知りたい場合はどうすればよいですか?

データテーブルで最も裕福な人が誰であるかを確認するにはどうすればよいですか?

    ユーザーが費やした平均金額を知りたい場合はどうすればよいでしょうか?
  1. すべてのユーザーの合計金額を知りたい場合はどうすればよいですか?
  2. 最もよく使用される 4 つの統計関数があります:

関数

説明 sum Sum count Statistical total max 最大値min最小値avgAverage 注: もちろん、他の 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 はフィルタリング グループ、 はフィルタリング レコードです。

カテゴリ基本構文例例の説明

mysql> 結果として count(province) を選択、結果が 2 を超える州ごとの金額グループから州を選択します
+--------+----------+
| 結果 |
+--------+----------+
| 3 | 北京 |
| 3 | 山東省 +--------+----------+
セット内の 2 行 (0.00 秒)

SQL 全体の使用

上記のステートメントでは、全体としてではなく、特定のステートメントのみを使用しています。

今度はステートメントを統合し、一度一緒に使用します。 SQL ステートメント全体で使用される構文構造は次のとおりです:

SELECT

[フィールド 1 [エイリアス 1 として], [関数 (フィールド 2),]...フィールド n]
テーブル名から
【どこどこ条件】
[フィールドごとにグループ化]
[HAVING where_continition]
【注文条件】
[制限条件]

注: [] は、上記のステートメントのオプションを表すことができます。

最終的な構文は次のように要約されます:

詳しい説明
条件を持つフィールドによるテーブルグループから*を選択
select count(province) as result ,provin州別マネーグループからのCE結果が > 2 である
領域をグループ化して合計を数え、2 を超えるグループ化された領域をグループ化結果に表示します
キーワード 説明selectSelected columnsfromtableどこクエリ条件group byグループフィルタリング条件を持つgrouping属性order bylimit総合的な利用を行います
sort属性
開始レコード位置、レコード数を取る

、マネーテーブルのフィールドをクエリします: 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"; ?>
  • おすすめコース
  • コースウェアのダウンロード
現時点ではコースウェアはダウンロードできません。現在スタッフが整理中です。今後もこのコースにもっと注目してください〜