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

        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號
        主站蜘蛛池模板: 国产精品人人做人人爽人人添| 日本一区二区三区精品国产| 精品人妻无码专区中文字幕 | 国产精品久久久久久久久久免费| 亚洲AV永久无码精品| 99久久精品这里只有精品| 国产精品人成在线播放新网站| 国产原创精品 正在播放| 丝袜美腿国产精品视频一区| 精品国产三级a∨在线欧美| 亚洲精品第一国产综合境外资源| 欧美精品一本久久男人的天堂| CAOPORM国产精品视频免费 | 四虎国产精品永久地址51| 国精品午夜福利视频不卡| 亚洲精品成人a在线观看| 久久久久久久久久久免费精品| 国产成人综合久久精品尤物| 久久精品国产免费一区| 国产精品999| 国产成人亚洲合集青青草原精品 | 国产91大片精品一区在线观看| 日韩精品久久久久久久电影蜜臀| 正在播放国产精品每日更新| 久草欧美精品在线观看| 久久99国产精品二区不卡| 国产suv精品一区二区33| 久久久久久亚洲精品成人| 伊人久久精品影院| 影院无码人妻精品一区二区| 午夜精品一区二区三区在线观看| 精品一区二区三区免费观看 | 午夜国产精品无套| 日本精品一区二区三区四区| 日韩一区二区精品观看| 日韩经典精品无码一区| 欧美午夜精品久久久久久浪潮| 久久精品成人欧美大片| 久久精品国产一区二区三区不卡| 久久久久久久久久免免费精品| 午夜国产精品无套|