《MySQL數(shù)據(jù)庫(kù)應(yīng)用案例教程》教案 第8課 單表數(shù)據(jù)記錄查詢(xún)_第1頁(yè)
《MySQL數(shù)據(jù)庫(kù)應(yīng)用案例教程》教案 第8課 單表數(shù)據(jù)記錄查詢(xún)_第2頁(yè)
《MySQL數(shù)據(jù)庫(kù)應(yīng)用案例教程》教案 第8課 單表數(shù)據(jù)記錄查詢(xún)_第3頁(yè)
《MySQL數(shù)據(jù)庫(kù)應(yīng)用案例教程》教案 第8課 單表數(shù)據(jù)記錄查詢(xún)_第4頁(yè)
《MySQL數(shù)據(jù)庫(kù)應(yīng)用案例教程》教案 第8課 單表數(shù)據(jù)記錄查詢(xún)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

課題單表數(shù)據(jù)記錄直詢(xún)

課時(shí)2課時(shí)(90min)

知識(shí)技能目標(biāo):

(1)了解基本查詢(xún)語(yǔ)句

(2)掌握查詢(xún)所有字段和指定字段的方法

(3)掌握使用常用關(guān)鍵字實(shí)現(xiàn)簡(jiǎn)單查詢(xún)的方法

教學(xué)目標(biāo)

(4)掌握使用聚合函數(shù)結(jié)合GROUPBY實(shí)現(xiàn)分組查詢(xún)的方法

質(zhì)目標(biāo):

(1)了解我國(guó)文學(xué)名著,培養(yǎng)文化自信

(2)懂得做事應(yīng)腳踏實(shí)地、認(rèn)真負(fù)責(zé)

教學(xué)重點(diǎn):基本查詢(xún)語(yǔ)句,使用不同方式進(jìn)行查詢(xún)

教學(xué)重難點(diǎn)

教學(xué)難點(diǎn):使用聚合函數(shù)結(jié)合GROUPBY實(shí)現(xiàn)分組查詢(xún)的方法

教學(xué)方法案例分析法、問(wèn)答法、討論法、講授法、實(shí)踐法

教學(xué)用具電腦、投影儀、多媒體課件、教材

第1節(jié)課:課前任務(wù)T考勤(2min)T問(wèn)題導(dǎo)入(5min)一傳授新知(38min)

教學(xué)設(shè)計(jì)第2節(jié)課:?jiǎn)栴}導(dǎo)入(5min)一傳授新知(20min)一課堂實(shí)訓(xùn)(15min)一課堂小結(jié)(3min)一作

業(yè)布置(2min)

教學(xué)過(guò)程主要教學(xué)內(nèi)容及步驟設(shè)計(jì)意圖

第一節(jié)課

通過(guò)課前任務(wù),

【教師】布置課前任務(wù),和學(xué)生負(fù)責(zé)人取得聯(lián)系,讓其提醒同學(xué)通過(guò)APP或其他

使學(xué)生預(yù)習(xí)本節(jié)

學(xué)習(xí)軟件,預(yù)習(xí)本節(jié)課要學(xué)習(xí)的知識(shí)

課前任務(wù)課要學(xué)習(xí)的知識(shí),

【學(xué)生】完成課前任務(wù)增加學(xué)生的學(xué)習(xí)

興趣

【教師】使用APP進(jìn)行簽到培養(yǎng)學(xué)生的組

考勤

織紀(jì)律性,掌握學(xué)

(2min)【學(xué)生】班干部報(bào)請(qǐng)假人員及原因

生的出勤情況

【教師】提出以下問(wèn)題:通過(guò)問(wèn)題導(dǎo)入,

問(wèn)題導(dǎo)入引導(dǎo)學(xué)生主動(dòng)思

如何查詢(xún)數(shù)據(jù)庫(kù)中所需的數(shù)據(jù)記錄呢?

(5min)考,激發(fā)學(xué)生的學(xué)

【學(xué)生】聆聽(tīng)、思考、舉手回答習(xí)興趣

【教師】通過(guò)學(xué)生的回答引入要講的知識(shí),講解基本查詢(xún)語(yǔ)句和簡(jiǎn)單數(shù)據(jù)記錄查通過(guò)教師的講

詢(xún)的相關(guān)知識(shí)解和演示,使學(xué)生

傳授新知7.1基本查詢(xún)語(yǔ)句了解基本查詢(xún)語(yǔ)

(38min)+【教師】組織學(xué)生掃碼觀看"基本查詢(xún)語(yǔ)句“視頻(詳見(jiàn)教材),讓學(xué)生對(duì)句和簡(jiǎn)單數(shù)據(jù)記

錄查詢(xún)的相關(guān)知

基本格式有一個(gè)大致的了解

識(shí)

單表查詢(xún)是指從一張數(shù)據(jù)表中查詢(xún)所需要的數(shù)據(jù)。本節(jié)首先簡(jiǎn)單認(rèn)識(shí)一下基本

查詢(xún)語(yǔ)句。

SELECT

{*1〈字段列表》}

[

FROM<表1>,<表2>...

[WHERE〈表達(dá)式〉

[GROUPBY<groupbydefinition>]

[HAVING<expression>[{<operator><expression>}...]]

[ORDERBY<orderbydefinition>]

[LIMIT[<offset>,]<rowcount>]

];

上述各條子句的含義如下:

>{*1(字段列表〉}:使用星號(hào)通配符或者字段列表表示要查詢(xún)的字段,其

中字段列表至少要包含一個(gè)字段名稱(chēng),如果要查詢(xún)多個(gè)字段,字段之間用

逗號(hào)隔開(kāi),最后一個(gè)字段后不加逗號(hào)。

>FROM〈表1>,(表2>...:表1和表2表示查詢(xún)數(shù)據(jù)的來(lái)源,可以是單個(gè)或

者多個(gè)。

>WHERE子句:可選,用于限定查詢(xún)行必須滿(mǎn)足的查詢(xún)條件。

>GROUPBY〈字段〉:該子句表示按照指定的字段對(duì)查詢(xún)出來(lái)的數(shù)據(jù)進(jìn)行

分組。

>ORDERBY〈字段〉:該子句表示按照什么樣的順序顯示查詢(xún)出來(lái)的數(shù)據(jù),

有兩種情況:升序(ASC)和降序(DESC).

>[LIMIT[<offset>,]<rowcount>]:表示每次顯示的查詢(xún)出來(lái)的數(shù)據(jù)條數(shù)。

SELECT可選參數(shù)比較多,讀者可能無(wú)法一下完全理解,后面將從最簡(jiǎn)單的語(yǔ)

句開(kāi)始,一步一步深入學(xué)習(xí)。

7.2簡(jiǎn)單數(shù)據(jù)記錄查詢(xún)

+【教師】組織學(xué)生掃碼觀看"簡(jiǎn)單查詢(xún)”視頻(詳見(jiàn)教材),讓學(xué)生對(duì)基本

查詢(xún)有一個(gè)大致的了解

簡(jiǎn)單數(shù)據(jù)記錄查詢(xún)主要包括:查詢(xún)所有字段、查詢(xún)指定字段、查詢(xún)指定記錄、

多條件查詢(xún)、排序查詢(xún)等。本節(jié)將以第5章創(chuàng)建的goods表為操作對(duì)象,講解簡(jiǎn)單

數(shù)據(jù)記錄查詢(xún)的具體實(shí)現(xiàn)方法,如果表內(nèi)還沒(méi)有數(shù)據(jù),執(zhí)行以下語(yǔ)句在其中插入數(shù)

據(jù)。

INSERTINTOgoods(id,type,name,price,num,add_time)

VALUES(1,'書(shū)籍西游記',50.4,20,2018-01-0113:40:40'),

(2,糖類(lèi)Y牛奶糖;7.5,200,2018-02-0213:40:40'),

(3,糖類(lèi)水果糖',2.5,100,null),

(4,服飾;休閑西服:800,nun;2018-04-0413:40:40,),

(5,飲品,,,果汁,3,70,2018-05-0513:40:40');

7.2.1查詢(xún)所有字段

查詢(xún)所有字段數(shù)據(jù),是指從一張表中檢索出所有記錄,查詢(xún)方式有兩種,一種

是使用通配符,另一種是列出所有字段名,語(yǔ)法形式如下:

SELECT(*|col_list)FROMtable_name;

上述語(yǔ)句中,col」isi表示數(shù)據(jù)表中的字段列表,如果表中字段有多個(gè),字段之

間需要使用逗號(hào)隔開(kāi),最后一個(gè)字段不加逗號(hào)。

正如141節(jié)所述1sQL語(yǔ)言是高級(jí)的非過(guò)程化編程語(yǔ)言用戶(hù)使用查詢(xún)語(yǔ)句時(shí),

應(yīng)至少指明兩點(diǎn),一是查詢(xún)什么,二是在什么位置查詢(xún)。語(yǔ)句中的通配符"*"或

"coUist”指明了需要查詢(xún)的是數(shù)據(jù)表中的所有字段,而表名指明了查詢(xún)位置。

【實(shí)例7-1]使用通配符"*"查詢(xún)goods表中所有數(shù)據(jù),SQL語(yǔ)句及其執(zhí)行

結(jié)果如下.

mysql>SELECT*FROMgoods;

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

|id|type|name|price|num|add_time|

+——+------+-----------+------+------+-------------------+

I1|書(shū)籍I西游記I50.40|2012018-01-0113:40:40|

|21糖類(lèi)|牛奶糖|7.50|20012018-02-0213:40:40|

131糖類(lèi)|水果糖|2.50|100|NULL|

|4|服飾|休閑西服1800.00INULL12018-04-0413:40:40|

|5|飲品|果汁|3.00|70|2018-05-0513:40:40]

+——+------+-----------+------+------+-------------------+

5rowsinset(0.00sec)

可以看出,使用通配符"*"可以返回?cái)?shù)據(jù)表中所有列數(shù)據(jù)。

通過(guò)在SELECT關(guān)鍵字后面列出所有字段名,也可以查詢(xún)所有列數(shù)據(jù),SQL語(yǔ)

句如下,其查詢(xún)結(jié)果與實(shí)例7-1的結(jié)果相同。

SELECTid,type,name,price,num,add_timeFROMgoods;

【知識(shí)庫(kù)】

一般使用通配符查詢(xún)表中所有字段數(shù)據(jù);而使用列出字段名的方式查詢(xún)部分字

段數(shù)據(jù),具體方法將在7.2.2節(jié)介紹。

7.2.2查詢(xún)指定字段

使用SELECT關(guān)鍵字也可以查詢(xún)指定字段的數(shù)據(jù),語(yǔ)法形式如下:

SELECTcol_namc1[,col_namc2,......,col_namcn]FROMtablc_namc;

上述語(yǔ)句可以查詢(xún)單個(gè)字段,也可以查詢(xún)多個(gè)字段。當(dāng)查詢(xún)多個(gè)字段時(shí),各個(gè)

字段之間使用英文格式的逗號(hào)隔開(kāi),最后一個(gè)字段不加逗號(hào);查詢(xún)一個(gè)字段時(shí)也不

需要加逗號(hào)。

[實(shí)例7-2]從goods表中查詢(xún)單個(gè)字段。

執(zhí)行SQL語(yǔ)句,查詢(xún)goods表中的name字段數(shù)據(jù),執(zhí)行結(jié)果如下:

mysql>SELECTnameFROMgoods;

+--------+

|name|

+--------+

1休閑西服1

1果汁1

1水果糖1

1牛奶糖1

1西游記1

+---------+

5rowsinset(0.00sec)

【實(shí)例7-3]從goods表中查詢(xún)多個(gè)字段。

執(zhí)行SQL語(yǔ)句,查詢(xún)goods表中的id和name字段數(shù)據(jù),結(jié)果如下:

mysql>SELECTid,nameFROMgoods;

+——+--------+

|id|name|

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

14|休閑西服|

15|果汁|

13|水果糖|

12|牛奶糖|

111西游記1

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

5rowsinset(0.00sec)

7.2.3查詢(xún)指定記錄

當(dāng)用戶(hù)需要查詢(xún)數(shù)據(jù)庫(kù)中符合一定條件的數(shù)據(jù)時(shí),可以使用WHERE子句對(duì)表

中的記錄進(jìn)行篩選,語(yǔ)法形式如下:

SELECT{*|col_list}FROMtable_nameWHEREcondition;

WHERE子句中可以使用多種條件判斷符,如表7-1所示。

〉【教師】通過(guò)多媒體展示"WHERE子句中可用的條件判斷符”表格,介紹

相關(guān)知識(shí)

表7-1WHERE子句中可用的條件判斷符

條件判斷符說(shuō)明

=相等

<小于

>大于

<>(!=)不相等

<=小于或者等于

>=大于或者等于

注:和"仁"功能相同。

下面以其中的兩個(gè)符號(hào)為例,簡(jiǎn)單介紹WHERE子句的應(yīng)用。

1,使用"="符號(hào)查詢(xún)

【實(shí)例7-4】從goods表中查詢(xún)id值為3的記錄。SQL語(yǔ)句及其執(zhí)行結(jié)果如

下:

mysql>SELECT*FROMgoodsWHEREid=3;

+——+------+-------+------+------+-----------+

|id|type|name|price|num|add_time|

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

13|糖類(lèi)1水果糖12.50|100INULL|

+——+---------+-----------+-----------+----------+------------------+

1rowinset(0.06sec)

判斷符既可以用于匕匕較數(shù)值,也可以用于比較字符串。

【實(shí)例7-5】從goods表中查詢(xún)type值為“糖類(lèi)"的記錄。SQL語(yǔ)句及其執(zhí)

行結(jié)果如下:

mysql>SELECT*FROMgoodsWHEREtype=,糖類(lèi)';

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

Iid|type|name|price|num|add_time|

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

|2|糖類(lèi)|牛奶糖|7.50|20012018-02-0213:40:40|

13I糖類(lèi)I水果糖I2.501100INULLI

+-——+-----+-------+----+-----+-------------------+

2rowsinset(0.00sec)

可以看出,表中type值為"糖類(lèi)〃的記錄全被查詢(xún)出來(lái)了。

2.使用">="符號(hào)查詢(xún)

【實(shí)例7-6]從goods表中杳詢(xún)num值大于等于100的記錄。SQL語(yǔ)句及其

執(zhí)行結(jié)果如下:

mysql>SELECT*FROMgoodsWHEREnum>=100;

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

|id|type|name|price|num|add_time|

+——+------+-------+------+-----+--------------------+

|21糖類(lèi)|牛奶糖|7.50|20012018-02-0213:40:40|

13|糖類(lèi)|水果糖|2.50|100INULL|

+--+------+-------+......+-----+-------------------+

2rowsinset(0.00sec)

可以看出,表中num值大于等于100的記錄全被查詢(xún)出來(lái)了。

7.2.4多條件查詢(xún)

1,使用AND關(guān)鍵字查詢(xún)

MySQL支持多條件查詢(xún),如果條件之間使用AND關(guān)鍵字連接,

那么只有符合所有條件的記錄才會(huì)被返回。

【實(shí)例7-7】從goods表中查詢(xún)price值大于50,并且id值大

于3的記錄。SQL語(yǔ)句及其執(zhí)行結(jié)果如下:

mysql>SELECT*FROMgoodsWHEREprice>50ANDid>3;

+----+-------------+---------------------------+------------+------------------4---------------------------------------------4-

|id|type|name|price|num|add_time|

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

|4|服飾|休閑西服1800.00|NULL|2018-04-0413:40:40|

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

1rowinset(0.06sec)

【提示】

上例中的WHERE子句中只包含了一個(gè)AND關(guān)鍵字,實(shí)際上可以添加多個(gè)篩

選條件,增加一個(gè)條件的同時(shí)需要增加一個(gè)AND關(guān)鍵字。

2.使用OR關(guān)鍵字查詢(xún)

如果多條件查詢(xún)中的條件使用OR關(guān)鍵字連接,表示只需要符合所有條件中的

一個(gè)條件,此記錄就會(huì)被返回.

【實(shí)例7-8】從goods表中查詢(xún)type值為“糖類(lèi)"或者"書(shū)籍”的記錄。SQL

語(yǔ)句及其執(zhí)謂果如下:

mysql>SELECT*FROMgoodsWHEREtype='糖類(lèi)ORtype='書(shū)籍':

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

Iid|type|name|price|num|add_time|

+——+-----+-------+------+------+------------------+

|1|書(shū)籍|西游記150.4012012018-01-0113:40:40|

|2|糖類(lèi)|牛奶糖|7.50|20012018-02-0213:40:40|

13|糖類(lèi)I水果糖|2.50|100INULLI

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

3rowsinset(0.00sec)

【提示】

AND關(guān)鍵字可以使用符號(hào)“&&"代替;OR關(guān)鍵字可以使用符號(hào)"『代替。

3.使用IN關(guān)鍵字查詢(xún)

使用IN關(guān)鍵字可以查詢(xún)字段值等于指定集合中任意一個(gè)值的記錄,語(yǔ)法形式如

下:

SELECT{*|col_list}FROMtable_name

WHEREcol_nameIN(valuel,value2.......valuen);

上述語(yǔ)句中,指定集合包含在括號(hào)中,值之間使用逗號(hào)隔開(kāi)。

【實(shí)例7-9]執(zhí)行SQL語(yǔ)句,查詢(xún)goods表中id值為1和3的記錄,結(jié)果如

下:

mysql>SELECT*FROMgoodsWHEREidIN(1,3);

+——+----------+-----------+----------+----------+------------------------------+

|id|type|name|price|num|add_time|

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

|1|書(shū)籍|西游記150.40|2012018-01-0113:40:40|

131糖類(lèi)|水果糖|2.50|100|NULLI

+——+---------------+------------------+----------------4-----------------+------------------------------------------------+

2rowsinset(0.01sec)

此類(lèi)操作也可以使用OR關(guān)鍵字實(shí)現(xiàn),SQL語(yǔ)句如下。

SELECT*FROMgoodsWHEREid=lORid=7;

【提示】

OR關(guān)鍵字和IN關(guān)鍵字可以實(shí)現(xiàn)相同的功能,但I(xiàn)N關(guān)鍵字可以使查詢(xún)語(yǔ)句更

加簡(jiǎn)潔,并且IN關(guān)鍵字的執(zhí)行速度比OR關(guān)鍵字快。

另外,IN關(guān)鍵字還可以與NOT關(guān)鍵字配合使用,作用是查詢(xún)字段值不在指定

集合中的記錄。

【實(shí)例7-10】執(zhí)行SQL語(yǔ)句,查詢(xún)goods表中id值不為1和3的記錄,結(jié)果

如下:

mysql>SELECT*FROMgoodsWHEREidNOTIN(1,3);

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

Iid|type|name|price|num|add_time|

+--+----------+--------------+....................+---------+-------------------------------+

|2|糖類(lèi)|牛奶糖|7.50|20012018-02-0213:40:40|

|4|服飾|休閑西服1800.00INULL12018-04-0413:40:40|

I5|飲品|果汁|3.00|7012018-05-0513:40:40|

+—+----------+--------------+---------------+---------+-------------------------------+

3rowsinset(0.00sec)

7.2.5查詢(xún)空值

MySQL提供ISNULL關(guān)鍵字,用于查詢(xún)字段值為NULL的記錄,語(yǔ)法形式如

下:

SELECT{*|coljist)FROMWHEREcol_nameISNULL;

【實(shí)例7-11]執(zhí)行SQL語(yǔ)句,查詢(xún)goods表中num值為NULL的記錄,結(jié)

果如下:

mysql>SELECT*FROMgoodsWHEREnumISNULL;

+——+----------+------------------+--------+------+-----------------------------+

|id|type|name|price|num|add_time|

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

|4|服飾|休閑西服|800.00|NULL|2018-04-0413:40:40|

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

1rowinset(0.02sec)

ISNULL也可以和NOT關(guān)鍵字配合使用,用于查詢(xún)字段值不為NULL的記錄。

【實(shí)例7-12]執(zhí)行SQL語(yǔ)句,查詢(xún)goods表中num值不為NULL的記錄,

結(jié)果如下:

mysql>SELECT*FROMgoodsWHEREnumISNOTNULL;

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

|id|type|name|price|num|add_time|

+----+--------------+-----------------+---------------+---------------+--------------------------------------------4-

|1|書(shū)籍|西游記|50.40|2012018-01-0113:40:40|

|21糖類(lèi)|牛奶糖|7.50|20012018-02-0213:40:40|

131糖類(lèi)|水果糖|2.50|100|NULLI

|51飲品|果汁|3.00|7012018-05-0513:40:40|

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

4rowsinset(0.00sec)

需要注意的是,如果某些字段值為NULL,在將這些字段與其他值進(jìn)行比較時(shí),

就會(huì)返回不準(zhǔn)確的數(shù)據(jù)。

【實(shí)例7-13]執(zhí)行SQL語(yǔ)句,查詢(xún)goods表中num值不等于100的記錄,查

詢(xún)結(jié)果如下:

mysql>SELECT*FROMgoodsWHEREnum<>100:

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

|id|type|name|price|num|add_time|

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

|1I書(shū)籍I西游記150.40|2012018-01-0113:40:40|

|21糖類(lèi)|牛奶糖|7.50|20012018-02-0213:40:40|

|5|飲品|果汁|3.00|7012018-05-0513:40:40|

+——+------+-------+------+-------+------------------+

3rowsinset(0.00sec)

按照平常的理解,字段值為NULL時(shí)也符合不等于100的條件,但是在MySQL

中,值為NULL就表示該字段還沒(méi)有進(jìn)行任何的賦值操作,它的值是未知的,所以

無(wú)法與其他類(lèi)型的值進(jìn)行比較。

7.2.6查詢(xún)結(jié)果不重復(fù)

通過(guò)前面的學(xué)習(xí)可以知道,如果要查詢(xún)goods表中商品的種類(lèi),直接查詢(xún)表示

"種類(lèi)"的字段即可。

【實(shí)例7-14]執(zhí)行SQL語(yǔ)句,查詢(xún)goods表中字段type的值,結(jié)果如下.

mysql>SELECTtypeFROMgoods;

+------+

Itype|

+---------+

1書(shū)籍1

1糖類(lèi)1

1糖類(lèi)1

1服飾1

1飲品1

+------+

5rowsinset(0.00sec)

可以看到查詢(xún)結(jié)果返回了5條記錄,其中有重復(fù)的值。為了更方便地分析商品

種類(lèi),最好能將重復(fù)的值去掉.為此,MySQL提供了DISTINCT關(guān)鍵字,使查詢(xún)結(jié)

果不重復(fù)。其語(yǔ)法形式如下:

SELECTDISTINCTcol」istFROMtable_name;

【實(shí)例7-15】執(zhí)行SQL語(yǔ)句,查詢(xún)goods表中字段type不重復(fù)的值,結(jié)果如

下:

mysql>SELECTDISTINCTtypeFROMgoods;

+------+

1type1

+------+

1書(shū)籍1

1糖類(lèi)1

1服飾1

1飲品1

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

4rowsinset(0.04sec)

可以看到,此次查詢(xún)結(jié)果只返回了4條記錄的type值,且沒(méi)有重復(fù)值。

7.2.7范圍查詢(xún)

MySQL提供BETWEENAND關(guān)鍵字,用于查詢(xún)字段值在某個(gè)范圍內(nèi)的記錄,

語(yǔ)法形式為:

SELECT(*|col_list)FROMtable_name

WHEREcol_nameaBETWEENvalue1ANDvalue2;

上述語(yǔ)句中,col_namea為要限定值范圍的字段,value1為開(kāi)始值,value2為結(jié)

束值。

【實(shí)例7-16]執(zhí)行SQL語(yǔ)句,查詢(xún)goods表中price值為2.5到50的商品名

稱(chēng)和價(jià)格,結(jié)果如下:

mysql>SELECTname,priceFROMgoodsWHEREpriceBETWEEN2.5AND50;

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

|name|price|

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

1牛奶糖17.50|

1水果糖12.50|

1果汁13.00|

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

3rowsinset(0.00sec)

BETWEENAND關(guān)鍵字可以配合NOT關(guān)鍵字,用于查詢(xún)字段值不在某個(gè)范圍

內(nèi)的記錄。

【實(shí)例7-17]執(zhí)行SQL語(yǔ)句,查詢(xún)goods表中price值不在2.5和5()之間的

商品名稱(chēng)和價(jià)格,結(jié)果如下:

mysql>SELECTname,priceFROMgoodsWHEREpriceNOTBETWEEN2.5

AND50;

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

Iname|price|

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

1西游記150.40|

1休閑西服1800.00|

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

2rowsinset(0.00sec)

由實(shí)例7-16和實(shí)例7-17的查詢(xún)結(jié)果可以看出,使用BETWEENAND關(guān)鍵字進(jìn)

行查詢(xún),查詢(xún)結(jié)果包括范圍內(nèi)的所有值,也包括開(kāi)始值和結(jié)束值。使用BETWEEN

AND關(guān)鍵字和NOT關(guān)鍵字進(jìn)行查詢(xún),查詢(xún)結(jié)果不包括開(kāi)始值和結(jié)束值。

7.2.8字符匹配查詢(xún)

使用LIKE關(guān)鍵字的查詢(xún)又稱(chēng)為模糊查詢(xún),通常用于查詢(xún)字段值包含某些字符

的記錄,語(yǔ)法形式如下:

SELECT{*|col_list}FROMtable_namc

WHEREcol_nameaLIKEvalueb;

上述語(yǔ)句中,valueb表示要匹配的字符.LIKE關(guān)鍵字一般與通配符"%"或者

配合使用,如果字段coLnamea中的值包含valucb,此條記錄就會(huì)被返回。通

配符可以放在字符刖,也可以放在字符后,還可以同時(shí)放在字符刖后。

1,通配符"%"

通配符"%"可以匹配任意長(zhǎng)度的字符,可以是0個(gè),也可以是1個(gè)或多個(gè)。

【實(shí)例7-18]執(zhí)行SQL語(yǔ)句,查詢(xún)goods表中name值以"果"開(kāi)頭的記錄,

結(jié)果如下:

mysql>SELECT*FROMgoodsWHEREnameLIKE'果%

+----+.........+...........+..............+..............+.........................................+

|id|type|name|price|num|add_time|

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

|5|飲品|果汁|3.00|70|2018-05-0513:40:40|

+--―+-------+--------+----------+----------+-------------------------------+

1rowinset(0.00sec)

執(zhí)行以下語(yǔ)句,可查詢(xún)goods表中name值以"糖"結(jié)尾的記錄。

SELECT*FROMgoodsWHEREnameLIKE,%糖:

執(zhí)行以下語(yǔ)句,可查詢(xún)goods表中name值包含"游"的記錄。

SELECT*FROMgoodsWHEREnameLIKE%游%

執(zhí)行以下語(yǔ)句,可查詢(xún)goods表中name值以"休"開(kāi)頭,以"服"結(jié)尾的記錄。

SELECT*FROMgoodsWHEREnameLIKE'休%服,;

通過(guò)以上多個(gè)語(yǔ)句可以看出,通配符"%"可以出現(xiàn)在匹配字符的任意位置,

并且可以匹配任意數(shù)目的字符。

2.通配符

通配符的使用方法與通配符"%"類(lèi)似,都可以出現(xiàn)在匹配字符的任意位

置,但通配符"二只能匹配一個(gè)字符。

【實(shí)例7-19]執(zhí)行SQL語(yǔ)句,查詢(xún)goods表中name值以"西"開(kāi)頭,"西"

后有兩個(gè)字符的記錄,結(jié)果如下所示。

mysql>SELECT*FROMgoodsWHEREnameLIKE'西

+—+-------+--------------+----------+----------+------------------------------+

|id|type|name|price|num|add_time|

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

|1|書(shū)籍|西游記150.40|2012018-01-0113:40:40|

+——+-------+-------------+-----------+----------+-------------------------------+

1rowinset(0.00sec)

如果要查詢(xún)goods表中name值以"西"開(kāi)頭,"西"后有一個(gè)字符的記錄,則

執(zhí)行以下語(yǔ)句即可。

SELECT*FROMgoodsWHEREnameLIKE,西」;

【提示】

可以在表中插入一個(gè)name值為"西瓜"的記錄,試試查詢(xún)結(jié)果。

7.2.9排序查詢(xún)

使用前面的方法查詢(xún)到的結(jié)果是按照記錄在表中的默認(rèn)順序進(jìn)行排列的。如果

需要將查詢(xún)結(jié)果按照指定的順序排列,可以使用ORDERBY關(guān)鍵字。語(yǔ)法形式如下:

SELECT(*|coljist)FROMtable_name

ORDERBYcol_namea[ASC|DESC];

上述語(yǔ)句的意義是,按照字段col_namea對(duì)查詢(xún)記錄進(jìn)行排序,col_namea可以

為一個(gè)或多個(gè)字段,當(dāng)有多個(gè)字段時(shí),各字段之間使用英文逗號(hào)隔開(kāi).字段后的參

數(shù)ASC代表按照升序進(jìn)行排序,DESC代表按照降序進(jìn)行排序,如果沒(méi)有ASC或

者DESC,默認(rèn)按照升序排序。

1,單字段排序

在排序之前最好將有空值的記錄補(bǔ)充完整,否則,空值記錄將被排在最前面。

【實(shí)例7-20】執(zhí)行SQL語(yǔ)句,查詢(xún)goods表中idsname和add_time字段的

數(shù)據(jù),并按照add,ime字段值進(jìn)行排序,結(jié)果如下:

mysql>SELECTid,name,add_timeFROMgoodsORDERBYadd_time;

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

|id|name|add_time|

+——+--------+--------------------+

I1|西游記12018-01-0113:40:40|

I2|牛奶糖12018-02-0213:40:4()|

|4|休閑西服12018-04-0413:40:40|

|5|果汁12018-05-0513:40:40|

|3|水果糖12018-06-0911:20:55|

+——+---------+--------------------+

5rowsinset(0.00sec)

2.多字段排序

有些情況下,可能需要使用多個(gè)字段作為排序條件對(duì)查詢(xún)結(jié)果進(jìn)行排序。為查

看查詢(xún)結(jié)果,此處將第5條記錄的price值改為2.5(與第3條記錄值相同)。

【實(shí)例7-21]執(zhí)行SQL語(yǔ)句,查詢(xún)goods表中所有記錄,并按照price和num

字段值進(jìn)行排序,結(jié)果如下:

mysql>SELECT*FROMgoodsORDERBYpricejium;

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

|id|type|name|price|num|add_time|

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

|5|飲品|果汁|2.50|7012018-05-0513:40:40|

|3|糖類(lèi)|水果糖|2.50|10012018-06-0911:20:55|

|2|糖類(lèi)|牛奶糖|7.501200|2018-02-0213:40:40|

|1|書(shū)籍|西游記|50.4012012018-01-0113:40:40|

|4|服飾|休閑西服|800.00|1012018-04-0413:40:40|

+-——+-------+-------------+----------+----------+-----------------------------+

5rowsinset(0.0()sec)

由查詢(xún)結(jié)果可以看出,系統(tǒng)會(huì)首先按照price字段值進(jìn)行排序,對(duì)于price字段

值相同的記錄,再按照num字段值進(jìn)行排序。

3.降序排序

如果需要對(duì)查詢(xún)結(jié)果進(jìn)行降序排序,可以使用DESC關(guān)鍵字。

【實(shí)例7-22]執(zhí)行SQL語(yǔ)句,將goods表中所有記錄查詢(xún)出來(lái),并按照price

字段降序排序,結(jié)果如下:

mysql>SELECT*FROMgoodsORDERBYpriceDESC;

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

|id|type|name|price|num|add_time|

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

|4|服飾|休閑西服|80000|1012018-04-0413:40:40|

|1|書(shū)籍|西游記|50.40|2012018-01-0113:40:40|

|2|糖類(lèi)|牛奶糖|7.50|200|2018-02-0213:40:40|

|3|糖類(lèi)|水果糖|2.50|10012018-06-0911:20:55|

|51飲品|果汁|2.50|7012018-05-0513:40:40|

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

5rowsinset(0.00sec)

在按照多字段排序時(shí),也可以使用DESC關(guān)鍵字進(jìn)行降序排序。

【實(shí)例7-23]執(zhí)行SQL語(yǔ)句,查詢(xún)goods表中所有記錄,并按照price字段

和num字段進(jìn)行排序,結(jié)果如下:

mysql>SELECT*FROMgoodsORDERBYpriceDESC,num;

+_--+-------+--------------+---------+---------+-----------------------------+

|id|type|name|price|num|add_time|

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

I4|服飾|休閑西服|800.00|1012018-04-0413:40:40|

|1|書(shū)籍|西游記|50.40|2012018-01-0113:40:40|

I2|糖類(lèi)|牛奶糖|7.50|20012018-02-0213:40:40|

I5|飲品|果汁|2.50|7012018-05-0513:40:40|

|3|糖類(lèi)|水果糖|2.50|10012018-06-0911:20:55|

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

5rowsinset(0.00sec)

由以上查詢(xún)結(jié)果可以看出,查詢(xún)結(jié)果按照price字段進(jìn)行了降序排序,而按照

num字段進(jìn)行了升序排序。因此,如果需要按照多個(gè)字段進(jìn)行降序排序,必須在每

個(gè)字段后加上DESC關(guān)鍵字。

7.2.10限制查詢(xún)結(jié)果的數(shù)量

實(shí)際應(yīng)用中,數(shù)據(jù)庫(kù)中的數(shù)據(jù)量通常是很大的,一般不會(huì)一次性將所有數(shù)據(jù)查

詢(xún)出來(lái),此時(shí)就需要使用LIMIT關(guān)鍵字來(lái)限制查詢(xún)結(jié)果的數(shù)量。語(yǔ)法形式如下:

SELECT{*|col」ist}FROMtable_name

LIMIT[offset_start,]row_count;

上述語(yǔ)句中,"offset_start"表示起始位置,用于指定查詢(xún)從哪一行開(kāi)始,如果

不指定,默認(rèn)為0,從表的第一行記錄開(kāi)始查詢(xún);row.count表示查詢(xún)出來(lái)的記錄條

數(shù)。接下來(lái)通過(guò)實(shí)例了解一下不指定起始位置,直接限制查詢(xún)結(jié)果數(shù)量的情況。

【實(shí)例7-24]執(zhí)行SQL語(yǔ)句,將goods表中的前3條記錄查詢(xún)出來(lái),結(jié)果如

下:

mysql>SELECT*FROMgoodsLIMIT3;

+_一+----+-------+-------+------+-------------------+

|id|type|name|price|num|add_time|

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

I1|書(shū)籍|西游記|50.40|2012018-01-0113:40:40|

|2|糖類(lèi)|牛奶糖|7.50|20012018-02-0213:40:40|

|3|糖類(lèi)|水果糖|2.50|10012018-06-0911:20:55|

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

3rowsinset(0.00sec)

如果指定起始位置(從0開(kāi)始),則系統(tǒng)會(huì)從起始位置開(kāi)始查詢(xún),返回總條數(shù)

為顯示條數(shù)的記錄。

【實(shí)例7-25]執(zhí)行SQL語(yǔ)句,返回goods表中從第3條記錄開(kāi)始,總條數(shù)為

3的記錄,結(jié)果如下:

mysql>SELECT*FROMgoodsLIMIT2,3;

+---+----+.........+.........+......+...................+

|id|type|name|price|num|add_time|

+一一+----+---------+---------+------+-------------------+

I31糖類(lèi)|水果糖|2.50|10012018-06-0911:20:55|

I4|服飾|休閑西服|800.00|1012018-04-0413:40:40|

|5|飲品|果汁|2.50|7012018-05-0513:40:40|

+----+-----------4-----------------------4------------------------4----------------4---------------------------------------------4-

3rowsinset(0.00sec)

由查詢(xún)結(jié)果可以看出,當(dāng)起始位置為"2"時(shí),MySQL會(huì)從表的第3條記錄開(kāi)

始查詢(xún)。

7.2.11使用圖形化工具篩選數(shù)據(jù)

使用NavicatforMySQL也可以實(shí)現(xiàn)在查詢(xún)數(shù)據(jù)時(shí)按照一定條件進(jìn)行篩選,具體

步驟如下:

步驟1進(jìn)入NavicatforMySQL后,選擇要操作的數(shù)據(jù)庫(kù),然后選中需要操作

的表,此處為goods,單擊"打開(kāi)表"按鈕。

步驟2單擊"篩選"按鈕,打開(kāi)篩選編輯區(qū)。

步驟3單擊篩選編輯區(qū)左上角的"添加"文字,編輯區(qū)會(huì)添加一條以表的第

一個(gè)字段為主體的欄目,此處為id,單擊"id"文字,打開(kāi)字段列表,用戶(hù)可根據(jù)

實(shí)際需求選擇字段。

……(詳見(jiàn)教材)

【學(xué)生】聆聽(tīng)、思考,記錄

第二節(jié)課

【教師】提出以下問(wèn)題:通過(guò)問(wèn)題導(dǎo)入,

問(wèn)題導(dǎo)入在數(shù)據(jù)庫(kù)中,通常需要進(jìn)行一些數(shù)據(jù)匯總操作,如何對(duì)這些數(shù)據(jù)進(jìn)行匯總呢?引導(dǎo)學(xué)生主動(dòng)思

(5min)考,激發(fā)學(xué)生的學(xué)

【學(xué)生】思考、舉手回答

習(xí)興趣

【教師】通過(guò)學(xué)生的回答引入新知,介紹聚合函數(shù)和分組數(shù)據(jù)記錄查詢(xún)的相關(guān)知

識(shí)

7.3聚合函數(shù)和分組數(shù)據(jù)記錄查詢(xún)

在數(shù)據(jù)庫(kù)中,通常需要進(jìn)行一些數(shù)據(jù)匯總操作。比如,要統(tǒng)計(jì)匯總商品種類(lèi)或

者統(tǒng)計(jì)整個(gè)公司的員工數(shù)等,此時(shí)就用到了聚合函數(shù)。MySQL所支持的聚合函數(shù)一

共有以下5種。

>COUNT。函數(shù):計(jì)算表中記錄的條數(shù)。

>SUM。函數(shù):計(jì)算字段值的總和。

>AVG0函數(shù):計(jì)算字段值的平均值。通過(guò)教師的講

>MAX()函數(shù):查詢(xún)表中字段值的最大值。解和演示,使學(xué)生

傳授新知

>MIN0函數(shù):查詢(xún)表中字段值的最小值。了解聚合函數(shù)和

(20min)

實(shí)際應(yīng)用中,聚合函數(shù)通常與分組查詢(xún)一起使用。分組查詢(xún)就是按照某個(gè)字段分組數(shù)據(jù)記錄

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論