最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL單表查詢進(jìn)階教程(最全面!)

 更新時(shí)間:2022年11月28日 16:13:26   作者:橙子!  
???????在我們對(duì)數(shù)據(jù)進(jìn)行操作時(shí),查詢無(wú)疑是至關(guān)重要的,查詢操作靈活多變,我們可以根據(jù)開(kāi)發(fā)的需求,設(shè)計(jì)高效的查詢操作,把數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)展示給用戶,這篇文章主要給大家介紹了關(guān)于MySQL單表查詢的相關(guān)資料,需要的朋友可以參考下

前言

查詢是數(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è)限定

根據(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);

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

1. 基礎(chǔ)查詢

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

查詢多個(gè)字段:

select 字段列表 from 表名;

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

select * from 表名;

去除重復(fù)記錄:

select distinct 字段列表 from 表名;

起別名操作:

select 字段名 別名 from 表名;

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

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

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

select name,math from stu;

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

select name,english 英語(yǔ)成績(jī) from stu;

2. 條件查詢

2.1 條件查詢語(yǔ)法

一般語(yǔ)法:

select 字段列表 from 表名 where 條件列表;

條件查詢一般配合運(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;

查詢年齡等于18歲 或者 年齡等于20歲 或者 年齡等于21歲的學(xué)生信息:

select * from stu where age in(18,20,21);

模糊查詢使用like關(guān)鍵字,可以使用通配符進(jìn)行占位:

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

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

select * from stu where name like '%張%';

3. 排序查詢

3.1 排序查詢語(yǔ)法

select 字段列表 from 表名 order by 排序字段名1 [排序方式]...;

注:排序方式又兩種:分別是升序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 表名;

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

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

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

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

select count(id) from stu;

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

select count(*) from stu;

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

select avg(math) from stu;

5. 分組查詢

5.1 分組查詢語(yǔ)法

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

注:分組之后,查詢的字段為聚合函數(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;

查詢男同學(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;

注: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ù);

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

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

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

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

select * from stu limit 0,3;

起始索引 = (當(dāng)前頁(yè)碼 - 1) * 每頁(yè)顯示的條數(shù)

7. 總結(jié)

結(jié)合經(jīng)典案例的練習(xí),我們已經(jīng)完成了單表查詢所有的基礎(chǔ)和練習(xí)訓(xùn)練,查詢作為對(duì)數(shù)據(jù)操作最重要的一部分,一定要不斷地練習(xí)才能熟練的進(jìn)行操作。

到此這篇關(guān)于MySQL單表查詢進(jìn)階的文章就介紹到這了,更多相關(guān)MySQL單表查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 提高M(jìn)ySQL中InnoDB表BLOB列的存儲(chǔ)效率的教程

    提高M(jìn)ySQL中InnoDB表BLOB列的存儲(chǔ)效率的教程

    這篇文章主要介紹了提高M(jìn)ySQL中InnoDB表BLOB列的存儲(chǔ)效率的教程,InnoDB的優(yōu)化在MySQL的優(yōu)化研究中也是一個(gè)非常熱門(mén)的課題,需要的朋友可以參考下
    2015-05-05
  • 全面分析MySQL?ERROR?1045出現(xiàn)的原因及解決

    全面分析MySQL?ERROR?1045出現(xiàn)的原因及解決

    這篇文章主要介紹了全面分析MySQL?ERROR?1045出現(xiàn)的原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 什么是分表和分區(qū) MySql數(shù)據(jù)庫(kù)分區(qū)和分表方法

    什么是分表和分區(qū) MySql數(shù)據(jù)庫(kù)分區(qū)和分表方法

    這篇文章主要為大家詳細(xì)介紹了MySql數(shù)據(jù)庫(kù)分區(qū)和分表方法,告訴大家什么是分表和分區(qū),mysql分表和分區(qū)有什么聯(lián)系,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • MySQL視圖和索引專(zhuān)篇精講

    MySQL視圖和索引專(zhuān)篇精講

    這篇文章主要介紹了MySQL的視圖和索引用法與區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • MySQL中in與exists的使用及區(qū)別介紹

    MySQL中in與exists的使用及區(qū)別介紹

    這篇文章主要介紹了MySQL中in與exists的使用及區(qū)別介紹,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-12-12
  • Mysql?查詢患某種疾病的患者語(yǔ)句

    Mysql?查詢患某種疾病的患者語(yǔ)句

    select?語(yǔ)句的作用是根據(jù)輸入的條件返回指定的數(shù)據(jù)結(jié)果,select?的語(yǔ)法可以有很多種查詢的組合,基本上能夠滿足我們所有的查詢數(shù)據(jù)需求,這篇文章主要介紹了Mysql?查詢患某種疾病的患者,需要的朋友可以參考下
    2022-10-10
  • mysqldump造成Buffer Pool污染的研究

    mysqldump造成Buffer Pool污染的研究

    mysqldump造成Buffer Pool污染的研究,需要的朋友可以參考下
    2012-10-10
  • MySQL5.73?root用戶密碼修改方法及ERROR?1193、ERROR1819與ERROR1290報(bào)錯(cuò)解決

    MySQL5.73?root用戶密碼修改方法及ERROR?1193、ERROR1819與ERROR1290報(bào)錯(cuò)解決

    這篇文章主要給大家介紹了關(guān)于MySQL5.73?root用戶密碼修改方法及ERROR?1193、ERROR1819與ERROR1290:...?running?with?--skip-...報(bào)錯(cuò)的解決方法,文中通過(guò)圖文將解決的步驟介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • mysql中異常錯(cuò)誤ERROR:2002的解決方法

    mysql中異常錯(cuò)誤ERROR:2002的解決方法

    最近在啟動(dòng)mysql的時(shí)候發(fā)現(xiàn)mysql報(bào)錯(cuò)了,錯(cuò)誤代碼是2002,通過(guò)查找相關(guān)的資料發(fā)現(xiàn)是var/lib/mysql 的訪問(wèn)權(quán)限問(wèn)題,所以這篇文章主要介紹了mysql中異常錯(cuò)誤ERROR:2002的解決方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-03-03
  • mysql "too many connections" 錯(cuò)誤 之 mysql解決方法

    mysql "too many connections" 錯(cuò)誤 之 mysql解決方法

    解決方法是修改/etc/mysql/my.cnf,添加以下一行
    2009-06-06

最新評(píng)論

新丰县| 车致| 宁安市| 灵川县| 麦盖提县| 中阳县| 正宁县| 阿克| 黄龙县| 潜山县| 华宁县| 腾冲县| 寿阳县| 富裕县| 孝感市| 南充市| 师宗县| 东乡族自治县| 富裕县| 安溪县| 嘉兴市| 镇赉县| 康保县| 息烽县| 珠海市| 新泰市| 万盛区| 泰州市| 澜沧| 蓬溪县| 唐河县| 肃宁县| 高雄县| 通渭县| 无棣县| 河北区| 万年县| 清涧县| 株洲市| 奉贤区| 宁远县|