版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年律師實(shí)務(wù)操作技能考試題集及答案
- 2026年語(yǔ)言考試中文寫(xiě)作技巧文心一題通關(guān)寶典
- 2026年政府公務(wù)員考試題公共政策分析與執(zhí)行能力測(cè)試
- 職業(yè)性皮膚病數(shù)據(jù)庫(kù)的建立與應(yīng)用價(jià)值
- 職業(yè)性皮膚病的循證醫(yī)學(xué)證據(jù)
- 職業(yè)性皮膚病的個(gè)體化治療策略-1
- 職業(yè)性皮膚病患者的急診處理原則
- 職業(yè)性濕疹的睡眠障礙與干預(yù)
- 倉(cāng)庫(kù)物料制度
- 職業(yè)性心臟毒性物質(zhì)暴露評(píng)估方案
- 拆除廢鐵工程方案(3篇)
- 2025年醫(yī)師定期考核必考題庫(kù)及答案
- 軍隊(duì)醫(yī)療管理辦法
- CJ/T 325-2010公共浴池水質(zhì)標(biāo)準(zhǔn)
- 客戶(hù)開(kāi)發(fā)流程圖
- 音樂(lè)節(jié)活動(dòng)場(chǎng)地租賃合同
- 風(fēng)險(xiǎn)管理顧問(wèn)協(xié)議
- 一年級(jí)下冊(cè)字帖筆順
- 2024屆高考語(yǔ)文復(fù)習(xí):散文訓(xùn)練王劍冰散文(含解析)
- SWITCH暗黑破壞神3超級(jí)金手指修改 版本號(hào):2.7.7.92380
評(píng)論
0/150
提交評(píng)論