站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

MySQL單表查詢進(jìn)階總結(jié)

本篇文章給大家?guī)?lái)了關(guān)于mysql的相關(guān)知識(shí),其中主要介紹了關(guān)于單表查詢的相關(guān)內(nèi)容,下面一起來(lái)看一下,希望對(duì)大家有幫助。

MySQL單表查詢進(jìn)階總結(jié)

程序員必備接口測(cè)試調(diào)試工具:立即使用
Apipost = Postman + Swagger + Mock + Jmeter
Api設(shè)計(jì)、調(diào)試、文檔、自動(dòng)化測(cè)試工具
后端、前端、測(cè)試,同時(shí)在線協(xié)作,內(nèi)容實(shí)時(shí)同步

推薦學(xué)習(xí):mysql視頻教程

在我們對(duì)數(shù)據(jù)進(jìn)行操作時(shí),查詢無(wú)疑是至關(guān)重要的,查詢操作靈活多變,我們可以根據(jù)開(kāi)發(fā)的需求,設(shè)計(jì)高效的查詢操作,把數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)展示給用戶。

查詢是數(shù)據(jù)操作至關(guān)重要的一部分,比如說(shuō)在所有商品中查找出價(jià)格在規(guī)定范圍內(nèi)的所有商品,要想把數(shù)據(jù)庫(kù)中的數(shù)據(jù)在客戶端中展示給用戶,一般都進(jìn)行了查詢的操作。

在實(shí)際開(kāi)發(fā)中,我們要根據(jù)不同的需求,并且考慮查詢的效率來(lái)決定怎樣進(jìn)行查詢,學(xué)習(xí)查詢前,可以先看看查詢的完整語(yǔ)法:

SELECT 	字段列表FROM 	表名列表WHERE 	條件列表GROUP BY 	分組字段HAVING 	分組后條件ORDER BY 	排序字段LIMIT 	分頁(yè)限定
登錄后復(fù)制

根據(jù)查詢的完整語(yǔ)法中的關(guān)鍵字,我們分別來(lái)學(xué)習(xí)基礎(chǔ)查詢,條件查詢,排序查詢,分組查詢和分頁(yè)查詢。

我們使用以下的案例學(xué)習(xí)單表查詢:

-- 刪除stu表 drop table if exists stu; -- 創(chuàng)建stu表 CREATE TABLE stu ( id int, -- 編號(hào) name varchar(10), -- 姓名 age int, -- 年齡 gender varchar(5), -- 性別 math double(5,2), -- 數(shù)學(xué)成績(jī) english double(5,2) -- 英語(yǔ)成績(jī)  ); -- 添加數(shù)據(jù) INSERT INTO stu(id,name,age,gender,math,english) VALUES (1,'小張',23,'男',66,78), (2,'小李',20,'女',98,87), (3,'小陳',55,'男',56,77), (4,'小樊',20,'女',76,65), (5,'小馬',20,'男',86,NULL), (6,'小趙',57,'男',99,99);
登錄后復(fù)制

在Navicat中選中SQL執(zhí)行:

MySQL單表查詢進(jìn)階總結(jié)

1. 基礎(chǔ)查詢

1.1 基礎(chǔ)查詢語(yǔ)法

查詢多個(gè)字段:

select 字段列表 from 表名;
登錄后復(fù)制

查詢?nèi)孔侄危?/p>

select * from 表名;
登錄后復(fù)制

去除重復(fù)記錄:

select distinct 字段列表 from 表名;
登錄后復(fù)制

起別名操作:

select 字段名 別名 from 表名;
登錄后復(fù)制

1.2 基礎(chǔ)查詢練習(xí)

我們使用前言中的案例進(jìn)行基礎(chǔ)查詢練習(xí):

查詢多個(gè)字段的練習(xí):

select name,math from stu;
登錄后復(fù)制

MySQL單表查詢進(jìn)階總結(jié)

起別名操作練習(xí):

select name,english 英語(yǔ)成績(jī) from stu;
登錄后復(fù)制

MySQL單表查詢進(jìn)階總結(jié)

2. 條件查詢

2.1 條件查詢語(yǔ)法

一般語(yǔ)法:

select 字段列表 from 表名 where 條件列表;
登錄后復(fù)制

條件查詢一般配合運(yùn)行符進(jìn)行,下面是常見(jiàn)的幾個(gè)運(yùn)算符:

運(yùn)算符 功能描述
> < = ! 大于 小于 等于 不等于
between…and… 在這個(gè)范圍之內(nèi)
in(…) 多選一
is null / is not null 是null / 不是null
and 或 && 并且
or 或 || 或者

2.2 條件查詢練習(xí)

我們使用前言中的案例進(jìn)行條件查詢練習(xí):

查詢年齡大于20的學(xué)生信息:

select * from stu where age>20;
登錄后復(fù)制

MySQL單表查詢進(jìn)階總結(jié)查詢年齡等于18歲 或者 年齡等于20歲 或者 年齡等于21歲的學(xué)生信息:

select * from stu where age in(18,20,21);
登錄后復(fù)制

MySQL單表查詢進(jìn)階總結(jié)模糊查詢使用like關(guān)鍵字,可以使用通配符進(jìn)行占位:

  • _ : 代表單個(gè)任意字符
  • % : 代表任意個(gè)數(shù)字符

查詢姓名中含有張的學(xué)生信息:

select * from stu where name like '%張%';
登錄后復(fù)制

MySQL單表查詢進(jìn)階總結(jié)

3. 排序查詢

3.1 排序查詢語(yǔ)法

select 字段列表 from 表名 order by 排序字段名1 [排序方式]...;
登錄后復(fù)制

注:排序方式又兩種:分別是升序ASC和降序DESC,默認(rèn)情況下是升序ASC。

3.2 排序查詢練習(xí)

我們使用前言中的案例進(jìn)行排序查詢練習(xí):

4. 聚合函數(shù)

4.1 聚合函數(shù)語(yǔ)法

什么是聚合函數(shù)呢?在進(jìn)行查詢操作時(shí),我們往往需要對(duì)一整列進(jìn)行運(yùn)算,例如我們可以計(jì)算一整列成績(jī)數(shù)據(jù)的平均值,我們就要使用聚合函數(shù)。下面是常見(jiàn)的聚合函數(shù):

函數(shù)名 功能
count(列名) 統(tǒng)計(jì)數(shù)量(一般選用不為null的列)
max(列名) 最大值
min(列名) 最小值
sum(列名) 求和
avg(列名) 平均值

一般語(yǔ)法:

select 聚合函數(shù) from 表名;
登錄后復(fù)制

注:NULL值不參與聚合函數(shù)運(yùn)算。

4.2 聚合函數(shù)練習(xí)

我們使用前言中的案例進(jìn)行聚合函數(shù)的練習(xí):

統(tǒng)計(jì)該表中一共有幾個(gè)學(xué)生:

select count(id) from stu;
登錄后復(fù)制

MySQL單表查詢進(jìn)階總結(jié)

上面我們使用某一字段進(jìn)行運(yùn)算,這樣做可能面臨的問(wèn)題是某一個(gè)值可能是NULL,所以我們一般使用 * 進(jìn)行運(yùn)算,因?yàn)橐恍兄胁豢赡芩械淖侄味际荖ULL。

select count(*) from stu;
登錄后復(fù)制

查詢數(shù)學(xué)成績(jī)的平均分:

select avg(math) from stu;
登錄后復(fù)制

MySQL單表查詢進(jìn)階總結(jié)

5. 分組查詢

5.1 分組查詢語(yǔ)法

select 字段列表 from 表名 [where 分組前的條件限定] group by 分組字段名 [having 分組后的條件過(guò)濾]
登錄后復(fù)制

注:分組之后,查詢的字段為聚合函數(shù)和分組字段,查詢其他字段無(wú)任何意義。

5.2 分組查詢練習(xí)

我們使用前言中的案例進(jìn)行分組查詢練習(xí):

查詢男同學(xué)和女同學(xué)各自的數(shù)學(xué)平均分,以及各自人數(shù),要求:分?jǐn)?shù)低于70分的不參與分組:

select gender, avg(math),count(*) from stu where math > 70 group by gender;
登錄后復(fù)制

MySQL單表查詢進(jìn)階總結(jié)

查詢男同學(xué)和女同學(xué)各自的數(shù)學(xué)平均分,以及各自人數(shù),要求:分?jǐn)?shù)低于70分的不參與分組,分組之后人數(shù)大于2個(gè)的:

select gender, avg(math),count(*) from stu where math > 70 group by gender having count(*) > 2;
登錄后復(fù)制

MySQL單表查詢進(jìn)階總結(jié)

注:where 和 having 執(zhí)行時(shí)機(jī)不一樣:where 是分組之前進(jìn)行限定,不滿足where條件,則不參與分組,而having是分組之后對(duì)結(jié)果進(jìn)行過(guò)濾。所以,where 不能對(duì)聚合函數(shù)進(jìn)行判斷,having 可以。

6. 分頁(yè)查詢

6.1 分頁(yè)查詢語(yǔ)法

在大家的印象中,網(wǎng)頁(yè)在展示大量的數(shù)據(jù)時(shí),往往不是把數(shù)據(jù)一下全部展示出來(lái),也是用分頁(yè)展示的形式,其實(shí)就是對(duì)數(shù)據(jù)進(jìn)行分頁(yè)查詢的操作,即每次只查詢一頁(yè)的數(shù)據(jù)展示到頁(yè)面上。

select 字段列表 from 表名 limit 查詢起始索引,查詢條目數(shù);
登錄后復(fù)制

limit 關(guān)鍵字中,查詢起始索引這個(gè)參數(shù)是從0開(kāi)始的。

5.2 分頁(yè)查詢練習(xí)

我們使用前言中的案例進(jìn)行分頁(yè)查詢練習(xí):

從0開(kāi)始查詢,查詢3條數(shù)據(jù):

select * from stu limit 0,3;
登錄后復(fù)制

MySQL單表查詢進(jìn)階總結(jié)起始索引 = (當(dāng)前頁(yè)碼 - 1) * 每頁(yè)顯示的條數(shù)

推薦學(xué)習(xí):mysql視頻教程

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
久久精品青青大伊人av| 精品伦精品一区二区三区视频 | 成人啪精品视频免费网站| 91精品一区二区综合在线| 久久久久久久99精品免费观看| 国产精品污WWW一区二区三区| 日韩在线a视频免费播放| 国产偷窥熟女精品视频| 精品无码国产一区二区三区麻豆| 精品国产日韩久久亚洲| 国产成人亚洲精品| 91精品久久久久久久久久小网站| 久久国产精品范冰啊| 久久亚洲国产精品一区二区| 99re6在线精品免费观看| 国产精品亚洲玖玖玖在线观看| 美女免费精品高清毛片在线视| 日韩精品一区二区亚洲AV观看| 国产成人精品免费视频大全五级| 国产精品久久毛片| 国产成人综合久久精品下载 | 精品3d动漫视频一区在线观看| 午夜激情经典日韩| 国产成人精品男人免费| 在线精品日韩一区二区三区| 国内精品在线播放| 日本精品一区二区在线播放| 自拍偷自拍亚洲精品播放| 无码aⅴ精品一区二区三区| 狠狠精品干练久久久无码中文字幕 | 97国产精品视频| 国内精品免费久久影院| 99精品在线播放| 国产色婷婷五月精品综合在线| 国产亚洲美女精品久久久久狼| 国产精品亚洲片在线| 亚洲国产精品成人精品无码区在线| 久久亚洲国产精品五月天| 久久久无码精品亚洲日韩蜜臀浪潮 | 久久99蜜桃精品久久久久小说| 亚洲一区精品中文字幕|