站長資訊網
最全最豐富的資訊網站

MySQL單表查詢進階總結

本篇文章給大家帶來了關于mysql的相關知識,其中主要介紹了關于單表查詢的相關內容,下面一起來看一下,希望對大家有幫助。

MySQL單表查詢進階總結

程序員必備接口測試調試工具:立即使用
Apipost = Postman + Swagger + Mock + Jmeter
Api設計、調試、文檔、自動化測試工具
后端、前端、測試,同時在線協作,內容實時同步

推薦學習:mysql視頻教程

在我們對數據進行操作時,查詢無疑是至關重要的,查詢操作靈活多變,我們可以根據開發的需求,設計高效的查詢操作,把數據庫中存儲的數據展示給用戶。

查詢是數據操作至關重要的一部分,比如說在所有商品中查找出價格在規定范圍內的所有商品,要想把數據庫中的數據在客戶端中展示給用戶,一般都進行了查詢的操作。

在實際開發中,我們要根據不同的需求,并且考慮查詢的效率來決定怎樣進行查詢,學習查詢前,可以先看看查詢的完整語法:

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

根據查詢的完整語法中的關鍵字,我們分別來學習基礎查詢,條件查詢,排序查詢,分組查詢和分頁查詢。

我們使用以下的案例學習單表查詢:

-- 刪除stu表 drop table if exists stu; -- 創建stu表 CREATE TABLE stu ( id int, -- 編號 name varchar(10), -- 姓名 age int, -- 年齡 gender varchar(5), -- 性別 math double(5,2), -- 數學成績 english double(5,2) -- 英語成績  ); -- 添加數據 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);
登錄后復制

在Navicat中選中SQL執行:

MySQL單表查詢進階總結

1. 基礎查詢

1.1 基礎查詢語法

查詢多個字段:

select 字段列表 from 表名;
登錄后復制

查詢全部字段:

select * from 表名;
登錄后復制

去除重復記錄:

select distinct 字段列表 from 表名;
登錄后復制

起別名操作:

select 字段名 別名 from 表名;
登錄后復制

1.2 基礎查詢練習

我們使用前言中的案例進行基礎查詢練習:

查詢多個字段的練習:

select name,math from stu;
登錄后復制

MySQL單表查詢進階總結

起別名操作練習:

select name,english 英語成績 from stu;
登錄后復制

MySQL單表查詢進階總結

2. 條件查詢

2.1 條件查詢語法

一般語法:

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

條件查詢一般配合運行符進行,下面是常見的幾個運算符:

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

2.2 條件查詢練習

我們使用前言中的案例進行條件查詢練習:

查詢年齡大于20的學生信息:

select * from stu where age>20;
登錄后復制

MySQL單表查詢進階總結查詢年齡等于18歲 或者 年齡等于20歲 或者 年齡等于21歲的學生信息:

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

MySQL單表查詢進階總結模糊查詢使用like關鍵字,可以使用通配符進行占位:

  • _ : 代表單個任意字符
  • % : 代表任意個數字符

查詢姓名中含有張的學生信息:

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

MySQL單表查詢進階總結

3. 排序查詢

3.1 排序查詢語法

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

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

3.2 排序查詢練習

我們使用前言中的案例進行排序查詢練習:

4. 聚合函數

4.1 聚合函數語法

什么是聚合函數呢?在進行查詢操作時,我們往往需要對一整列進行運算,例如我們可以計算一整列成績數據的平均值,我們就要使用聚合函數。下面是常見的聚合函數:

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

一般語法:

select 聚合函數 from 表名;
登錄后復制

注:NULL值不參與聚合函數運算。

4.2 聚合函數練習

我們使用前言中的案例進行聚合函數的練習:

統計該表中一共有幾個學生:

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

MySQL單表查詢進階總結

上面我們使用某一字段進行運算,這樣做可能面臨的問題是某一個值可能是NULL,所以我們一般使用 * 進行運算,因為一行中不可能所有的字段都是NULL。

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

查詢數學成績的平均分:

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

MySQL單表查詢進階總結

5. 分組查詢

5.1 分組查詢語法

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

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

5.2 分組查詢練習

我們使用前言中的案例進行分組查詢練習:

查詢男同學和女同學各自的數學平均分,以及各自人數,要求:分數低于70分的不參與分組:

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

MySQL單表查詢進階總結

查詢男同學和女同學各自的數學平均分,以及各自人數,要求:分數低于70分的不參與分組,分組之后人數大于2個的:

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

MySQL單表查詢進階總結

注:where 和 having 執行時機不一樣:where 是分組之前進行限定,不滿足where條件,則不參與分組,而having是分組之后對結果進行過濾。所以,where 不能對聚合函數進行判斷,having 可以。

6. 分頁查詢

6.1 分頁查詢語法

在大家的印象中,網頁在展示大量的數據時,往往不是把數據一下全部展示出來,也是用分頁展示的形式,其實就是對數據進行分頁查詢的操作,即每次只查詢一頁的數據展示到頁面上。

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

limit 關鍵字中,查詢起始索引這個參數是從0開始的。

5.2 分頁查詢練習

我們使用前言中的案例進行分頁查詢練習:

從0開始查詢,查詢3條數據:

select * from stu limit 0,3;
登錄后復制

MySQL單表查詢進階總結起始索引 = (當前頁碼 - 1) * 每頁顯示的條數

推薦學習:mysql視頻教程

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
一级做a爰黑人又硬又粗免费看51社区国产精品视| 尹人久久久香蕉精品| 亚洲国语精品自产拍在线观看| 国产福利专区精品视频| 日韩人妻精品无码一区二区三区| 日韩精品一区二区三区老鸦窝| 国产精品午夜剧场| 久久精品国产91久久综合麻豆自制| 国产91精品久久久久999| 亚洲av专区无码观看精品天堂| 久久精品综合一区二区三区| 免费精品国产自产拍观看| 99久久99久久精品免费看蜜桃| 亚洲精品无码成人AAA片| 日韩成av人片在线观看| 久久久精品人妻久久影视| 亚洲国产精品自在线一区二区| www.99精品| 国产av无码久久精品| 另类国产精品一区二区| 久久久久久国产精品mv| 精品久久国产一区二区三区香蕉| 国产精品第一页爽爽影院| 国产精品久久永久免费| 久久国产精品老人性| 久久久WWW免费人成精品| 亚洲av日韩av不卡在线观看| 无码精品一区二区三区| 777国产偷窥盗摄精品品在线 | 无码欧精品亚洲日韩一区夜夜嗨| 最新露脸国产精品视频| 99热这里有精品| 午夜天堂精品久久久久| 最新国产精品无码| 精品乱子伦一区二区三区| 无码日韩人妻精品久久| 无码国产亚洲日韩国精品视频一区二区三区| 亚洲youwu永久无码精品| 99久久精品午夜一区二区| 亚洲AV无码精品蜜桃| 精品一区二区三区免费毛片爱|