国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

查詢記錄

查詢記錄

在講解查詢前,我為大家準(zhǔn)備了一個資料表。這個表中存放著銀行的餘額和使用者的基本資料。

我們定義了一個表格結(jié)構(gòu),表名為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 , 
 PRIMARY KEY (id(10))
 ) ENGINE = InnoDB CHARACTER SET utf8;

表格結(jié)構(gòu)與資料顯示如下:

QQ截圖20161009154618.png

QQ截圖20161009154630.png

##註:

balance 是指餘額
province 是指省份

基礎(chǔ)查詢

QQ截圖20161009154649.png

註:”*” 是一種正規(guī)表示式的寫法,表示匹配所有,上面的查詢語句和下面的是等價:

mysql> select * from money;
 +----+-----------+---------+-----------+-----+-----+
 | 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 | 劉詩詩 | 456 | 北京 | 29 | 1 |
 | 9 | 柳巖 | 23.4 | 湖南 | 36 | 0 |
 | 10 | 趙本山 | 3456 | 遼寧 | 63 | 1 |
 | 11 | 汪峰 | 34.32 | 北京 | 44 | 1 |
 | 12 | 郭德綱 | 212 | 天津 | 43 | 1 |
 +----+-----------+---------+-----------+-----+-----+
 12 rows in set (0.00 sec)

指定字段查詢

QQ截圖20161009154709.png

mysql> select id,username, balance from money;
 +----+-----------+---------+
 | id | username | balance |
 +----+-----------+---------+
 | 1 | 李文凱 | 120.02 |
 | 2 | 范冰冰 | 260.23 |
 | 3 | 黃曉明 | 150.86 |
 | 4 | 井柏然 | 810 |
 | 5 | 李冰冰 | 20.15 |
 | 6 | 成龍 | 313 |
 | 7 | 楊冪 | 123 |
 | 8 | 劉詩詩 | 456 |
 | 9 | 柳巖 | 23.4 |
 | 10 | 趙本山 | 3456 |
 | 11 | 汪峰 | 34.32 |
 | 12 | 郭德綱 | 212 |
 +----+-----------+---------+
 12 rows in set (0.00 sec)

查詢單一欄位不重複記錄distinct

QQ截圖20161009154725.png

mysql> select distinct age deptno from  money;
 +--------+
 | deptno |
 +--------+
 | 29 |
 | 40 |
 | 27 |
 | 43 |
 | 63 |
 | 30 |
 | 36 |
 | 44 |
 +--------+
 8 rows in set (0.00 sec)

條件查詢where

QQ截圖20161009154741.png

mysql> select * from money where age = 29;
 +----+-----------+---------+----------+-----+-----+
 | id | username | balance | province | age | sex |
 +----+-----------+---------+----------+-----+-----+
 | 1 | 李文凱 | 120.02 | 湖北 | 29 | 1 |
 | 8 | 劉詩詩 | 456 | 北京 | 29 | 1 |
 +----+-----------+---------+----------+-----+-----+
 2 rows in set (0.00 sec)

where後可接的條件

比較運(yùn)算子?結(jié)果集中將符合條件的記錄列出來。上面的例子中,where 後面的新增的是一個欄位的 ‘=’。

除此之外,還可以使用>、<、>=、<=、!=等比較運(yùn)算子;

QQ截圖20161009154754.png

邏輯運(yùn)算子

多個條件也可以使用or 、 and 等邏輯運(yùn)算子進(jìn)行多條件聯(lián)合查詢

QQ截圖20161009154833.png

mysql> select * from money where id <10 and province='湖北';
 +----+-----------+---------+----------+-----+-----+
 | id | username | balance | province | age | sex |
 +----+-----------+---------+----------+-----+-----+
 | 1 | 李文凱 | 120.02 | 湖北 | 29 | 1 |
 +----+-----------+---------+----------+-----+-----+
 1 row in set (0.00 sec)

結(jié)果集排序

?QQ截圖20161009154905.png

在select 出來之後的結(jié)果集中排序使用order by ,其中desc 和asc 是排序順序中的關(guān)鍵字。 desc 表示依照欄位進(jìn)行降序排列,asc 表示升序排列,如果不寫關(guān)鍵字預(yù)設(shè)升序排列。

mysql> select id,username, balance from money order by balance desc;
 +----+-----------+---------+
 | id | username | balance |
 +----+-----------+---------+
 | 10 | 趙本山 | 3456 |
 | 4 | 井柏然 | 810 |
 | 8 | 劉詩詩 | 456 |
 | 6 | 成龍 | 313 |
 | 2 | 范冰冰 | 260.23 |
 | 12 | 郭德綱 | 212 |
 | 3 | 黃曉明 | 150.86 |
 | 7 | 楊冪 | 123 |
 | 1 | 李文凱 | 120.02 |
 | 11 | 汪峰 | 34.32 |
 | 9 | 柳巖 | 23.4 |
 | 5 | 李冰冰 | 20.15 |
 +----+-----------+---------+
 12 rows in set (0.00 sec)

多重欄位排序

order by 後面可以跟多個不同的欄位排序,而排序欄位的不同結(jié)果集的順序也不同,如果排序欄位的值一樣,則值相同的欄位會依照第二個排序欄位進(jìn)行排序。

QQ截圖20161009154934.png? ?

* 注意:如果第一個欄位已經(jīng)將結(jié)果為排好。第二個字段排序字段不生效。本例中,第二個欄位無效。 *

mysql> select id,username, balance from money order by balance desc,age asc;
 +----+-----------+---------+
 | id | username | balance |
 +----+-----------+---------+
 | 10 | 趙本山 | 3456 |
 | 4 | 井柏然 | 810 |
 | 8 | 劉詩詩 | 456 |
 | 6 | 成龍 | 313 |
 | 2 | 范冰冰 | 260.23 |
 | 12 | 郭德綱 | 212 |
 | 3 | 黃曉明 | 150.86 |
 | 7 | 楊冪 | 123 |
 | 1 | 李文凱 | 120.02 |
 | 11 | 汪峰 | 34.32 |
 | 9 | 柳巖 | 23.4 |
 | 5 | 李冰冰 | 20.15 |
 +----+-----------+---------+
 12 rows in set (0.00 sec)

結(jié)果集限制

對於查詢或排序後的結(jié)果集,如果希望只顯示一部分而不是全部,請使用limit 關(guān)鍵字結(jié)果集數(shù)量限制。

QQ截圖20161009154951.png

mysql> select * from money limit 5;
 +----+-----------+---------+-----------+-----+-----+
 | 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 |
 +----+-----------+---------+-----------+-----+-----+
 5 rows in set (0.00 sec)

#限制結(jié)果集並排序

QQ截圖20161009155004.png

mysql> select id,username, balance from money order by balance desc limit 5;
 +----+-----------+---------+
 | id | username | balance |
 +----+-----------+---------+
 | 10 | 趙本山 | 3456 |
 | 4 | 井柏然 | 810 |
 | 8 | 劉詩詩 | 456 |
 | 6 | 成龍 | 313 |
 | 2 | 范冰冰 | 260.23 |
 +----+-----------+---------+
 5 rows in set (0.00 sec)

結(jié)果集區(qū)間選擇

假設(shè)我從第0筆開始取了3筆記錄。又想再從第3條開始取3筆記錄。再想從第6筆開始取4筆記錄怎麼辦?

這時候就需要使用到結(jié)果集區(qū)間選擇。

QQ截圖20161009155016.png

QQ截圖20161009155026.png

mysql> select id,username, balance from money limit 0,3;
 +----+-----------+---------+
 | id | username | balance |
 +----+-----------+---------+
 | 1 | 李文凱 | 120.02 |
 | 2 | 范冰冰 | 260.23 |
 | 3 | 黃曉明 | 150.86 |
 +----+-----------+---------+
 3 rows in set (0.00 sec)

從第三條開始再取三條呢?

mysql> select id,username, balance from money limit 3,3;
 +----+-----------+---------+
 | id | username | balance |
 +----+-----------+---------+
 | 4 | 井柏然 | 810 |
 | 5 | 李冰冰 | 20.15 |
 | 6 | 成龍 | 313 |
 +----+-----------+---------+
 3 rows in set (0.00 sec)

透過上面的這個思路,顯示就完成了分頁。
每頁顯示10筆記錄,那麼:

第1頁為limit 0,10
第2頁為limit 10,10
第3頁為limit 20,10

依此類推... ...

統(tǒng)計類別函數(shù)使用

1.??? 如果我們想知道總使用者數(shù)怎麼辦?

2.??? 查詢誰是資料表裡的首富怎麼辦?

3.??? 如果我們想知道使用者的平均金額呢?

4.??? 如果我們想知道所有使用者的總金額怎麼辦?

統(tǒng)計類別函數(shù)最常用的我們有四個:

? ?QQ截圖20161009155039.png

QQ截圖20161009155132.png

mysql> select count(id) from money;
 +-----------+
 | count(id) |
 +-----------+
 | 12 |
 +-----------+
 1 row in set (0.00 sec)

你也可以給欄位取別名喲!使用as關(guān)鍵字。

mysql> select count(id) as zongshu from money;
 +---------+
 | zongshu |
 +---------+
 | 12 |
 +---------+
 1 row in set (0.00 sec)

查詢平均金額

mysql> select avg(balance) from money;
 +--------------------+
 | avg(balance) |
 +--------------------+
 | 498.24833393096924 |
 +--------------------+
 1 row in set (0.00 sec)

查詢總金額

mysql> select sum(balance) from money;
 +-------------------+
 | sum(balance) |
 +-------------------+
 | 5978.980007171631 |
 +-------------------+
 1 row in set (0.00 sec)

查詢最大金額

mysql> select max(balance) from money;
 +--------------+
 | max(balance) |
 +--------------+
 | 3456 |
 +--------------+
 1 row in set (0.00 sec)

查詢最小金額

mysql> select min(balance) from money;
 +--------------------+
 | min(balance) |
 +--------------------+
 | 20.149999618530273 |
 +--------------------+
 1 row in set (0.00 sec)

#分組group by

#

我們拿金額表裡面的省份進(jìn)行分組數(shù)據(jù),分組數(shù)據(jù)後你會發(fā)現(xiàn)。有相同的省份會去掉。即,一個省份為一個組。

? ?QQ截圖20161009155147.png

mysql> select * from money group by province;
 +----+-----------+---------+-----------+-----+-----+
 | id | username | balance | province | age | sex |
 +----+-----------+---------+-----------+-----+-----+
 | 7 | 楊冪 | 123 | 北京 | 30 | 0 |
 | 12 | 郭德綱 | 212 | 天津 | 43 | 1 |
 | 2 | 范冰冰 | 260.23 | 山東 | 40 | 0 |
 | 1 | 李文凱 | 120.02 | 湖北 | 29 | 1 |
 | 9 | 柳巖 | 23.4 | 湖南 | 36 | 0 |
 | 4 | 井柏然 | 810 | 遼寧 | 27 | 1 |
 | 5 | 李冰冰 | 20.15 | 黑龍江 | 43 | 0 |
 +----+-----------+---------+-----------+-----+-----+

統(tǒng)計分組(分類)各總數(shù):

mysql> select deptno, count(1) from emp group by deptno;
 +--------+----------+
 | deptno | count(1) |
 +--------+----------+
 | 1 | 1 |
 | 2 | 5 |
 | 3 | 1 |
 | 5 | 4 |
 +--------+----------+
 4 rows in set (0.04 sec)

統(tǒng)計省份數(shù)量後再進(jìn)行分組顯示

mysql> select count(province),province from money group by province;
 +-----------------+-----------+
 | count(province) | province |
 +-----------------+-----------+
 | 3 | 北京 |
 | 1 | 天津 |
 | 3 | 山東 |
 | 1 | 湖北 |
 | 1 | 湖南 |
 | 2 | 遼寧 |
 | 1 | 黑龍江 |
 +-----------------+-----------+
 7 rows in set (0.00 sec)

在分組基礎(chǔ)上進(jìn)行統(tǒng)計

with rollup用的很少。這個知識點(diǎn)設(shè)定為了解等級。

它的主要功能是對於分組的資料進(jìn)行統(tǒng)計後,再進(jìn)行一次總數(shù)統(tǒng)計。

QQ截圖20161009155200.png

QQ截圖20161009155215.png

在在上面的基礎(chǔ)上統(tǒng)計總數(shù),下例結(jié)果中,最後多了一個12 NULL。

mysql> select count(province),province from money group by province with rollup;
 +-----------------+-----------+
 | count(province) | province |
 +-----------------+-----------+
 | 3 | 北京 |
 | 1 | 天津 |
 | 3 | 山東 |
 | 1 | 湖北 |
 | 1 | 湖南 |
 | 2 | 遼寧 |
 | 1 | 黑龍江 |
 | 12 | NULL |
 +-----------------+-----------+
 8 rows in set (0.00 sec)

結(jié)果再過濾having

having子句與where有相似之處但也有區(qū)別,都是設(shè)定條件的語句。

having 是篩選組 而where是篩選記錄。

QQ截圖20161009155232.png

mysql> select count(province) as result ,province from money group by province having result >2;
 +--------+----------+
 | result | province |
 +--------+----------+
 | 3 | 北京 |
 | 3 | 山東 |
 +--------+----------+
 2 rows in set (0.00 sec)

整體使用SQL

我們在上面的語句中都是單一使用的某些語句,沒有整體使用過。

我們現(xiàn)在將語句進(jìn)行整合後,搭配使用一次。整體的SQL語句配合使用的語法結(jié)構(gòu)如下:

SELECT?
[字段1 [as 別名1],[函數(shù)(字段2) ,]......字段n]?
# FROM 表名
[WHERE where條件]
[GROUP BY 欄位]
[HAVING where_contition]
[order 條件]
[limit 條件]

註:上面的語句中可以[] 代表可選。

最終的語法總結(jié)如下:

QQ截圖20161009155246.png

QQ截圖20161009155305.png

#我們進(jìn)行一次整體的給合使用,查詢money表格欄位: id,username,balance,province 要求id>1 餘額大於50,使用地區(qū)進(jìn)行分組。我們使用用戶id進(jìn)行降序,要求只準(zhǔn)顯示3條。

最後將SQL語句寫成,查詢出來的結(jié)果如下:

mysql> select id,username,balance,province from money where id > 1 and balance > 50 group by province order by id desc limit 3; +----+-----------+---------+----------+ | id | username | balance | province | +----+-----------+---------+----------+ | 12 | 郭德綱 | 212 | 天津 | | 7 | 楊冪 | 123 | 北京 | | 4 | 井柏然 | 810 | 遼寧 | +----+-----------+---------+----------+ 3 rows in set (0.00 sec)


#
繼續(xù)學(xué)習(xí)
||
<?php echo "Hello Mysql"; ?>
提交重置程式碼