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