<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
查詢是資料操作至關重要的一部分,比如說在所有商品中查詢出價格在規定範圍內的所有商品,要想把資料庫中的資料在使用者端中展示給使用者,一般都進行了查詢的操作。
在實際開發中,我們要根據不同的需求,並且考慮查詢的效率來決定怎樣進行查詢,學習查詢前,可以先看看查詢的完整語法:
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執行:
查詢多個欄位:
select 欄位列表 from 表名;
查詢全部欄位:
select * from 表名;
去除重複記錄:
select distinct 欄位列表 from 表名;
起別名操作:
select 欄位名 別名 from 表名;
我們使用前言中的案例進行基礎查詢練習:
查詢多個欄位的練習:
select name,math from stu;
起別名操作練習:
select name,english 英語成績 from stu;
一般語法:
select 欄位列表 from 表名 where 條件列表;
條件查詢一般配合執行符進行,下面是常見的幾個運運算元:
運運算元 | 功能描述 |
---|---|
> < = ! | 大於 小於 等於 不等於 |
between…and… | 在這個範圍之內 |
in(…) | 多選一 |
is null / is not null | 是null / 不是null |
and 或 && | 並且 |
or 或 || | 或者 |
我們使用前言中的案例進行條件查詢練習:
查詢年齡大於20的學生資訊:
select * from stu where age>20;
查詢年齡等於18歲 或者 年齡等於20歲 或者 年齡等於21歲的學生資訊:
select * from stu where age in(18,20,21);
模糊查詢使用like關鍵字,可以使用萬用字元進行佔位:
查詢姓名中含有張的學生資訊:
select * from stu where name like '%張%';
select 欄位列表 from 表名 order by 排序欄位名1 [排序方式]...;
注:排序方式又兩種:分別是升序ASC和降序DESC,預設情況下是升序ASC。
我們使用前言中的案例進行排序查詢練習:
什麼是聚合函數呢?在進行查詢操作時,我們往往需要對一整列進行運算,例如我們可以計算一整列成績資料的平均值,我們就要使用聚合函數。下面是常見的聚合函數:
函數名 | 功能 |
---|---|
count(列名) | 統計數量(一般選用不為null的列) |
max(列名) | 最大值 |
min(列名) | 最小值 |
sum(列名) | 求和 |
avg(列名) | 平均值 |
一般語法:
select 聚合函數 from 表名;
注:NULL值不參與聚合函數運算。
我們使用前言中的案例進行聚合函數的練習:
統計該表中一共有幾個學生:
select count(id) from stu;
上面我們使用某一欄位進行運算,這樣做可能面臨的問題是某一個值可能是NULL,所以我們一般使用 *
進行運算,因為一行中不可能所有的欄位都是NULL。
select count(*) from stu;
查詢數學成績的平均分:
select avg(math) from stu;
select 欄位列表 from 表名 [where 分組前的條件限定] group by 分組欄位名 [having 分組後的條件過濾]
注:分組之後,查詢的欄位為聚合函數和分組欄位,查詢其他欄位無任何意義。
我們使用前言中的案例進行分組查詢練習:
查詢男同學和女同學各自的數學平均分,以及各自人數,要求:分數低於70分的不參與分組:
select gender, avg(math),count(*) from stu where math > 70 group by gender;
查詢男同學和女同學各自的數學平均分,以及各自人數,要求:分數低於70分的不參與分組,分組之後人數大於2個的:
select gender, avg(math),count(*) from stu where math > 70 group by gender having count(*) > 2;
注:where 和 having
執行時機不一樣:where 是分組之前進行限定,不滿足where條件,則不參與分組,而having是分組之後對結果進行過濾。所以,where 不能對聚合函數進行判斷,having 可以。
在大家的印象中,網頁在展示大量的資料時,往往不是把資料一下全部展示出來,也是用分頁展示的形式,其實就是對資料進行分頁查詢的操作,即每次只查詢一頁的資料展示到頁面上。
select 欄位列表 from 表名 limit 查詢起始索引,查詢條目數;
在 limit
關鍵字中,查詢起始索引這個引數是從0開始的。
我們使用前言中的案例進行分頁查詢練習:
從0開始查詢,查詢3條資料:
select * from stu limit 0,3;
起始索引 = (當前頁碼 - 1) * 每頁顯示的條數
結合經典案例的練習,我們已經完成了單表查詢所有的基礎和練習訓練,查詢作為對資料操作最重要的一部分,一定要不斷地練習才能熟練的進行操作。
到此這篇關於MySQL單表查詢進階的文章就介紹到這了,更多相關MySQL單表查詢內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45