溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

mysql數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)查詢(xún)語(yǔ)句

發(fā)布時(shí)間:2022-01-05 12:35:19 來(lái)源:億速云 閱讀:233 作者:小新 欄目:MySQL數(shù)據(jù)庫(kù)

這篇文章主要介紹mysql數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)查詢(xún)語(yǔ)句,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

查詢(xún)語(yǔ)句:1、“select * from 表名;”,可查詢(xún)表中全部數(shù)據(jù);2、“select 字段名 from 表名;”,可查詢(xún)表中指定字段的數(shù)據(jù);3、“select distinct 字段名 from 表名”,可對(duì)表中數(shù)據(jù)進(jìn)行去重查詢(xún)。

mysql數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)查詢(xún)語(yǔ)句

本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。

單表查詢(xún)

1、普通查詢(xún)

(1)命令:select * from <表名>;//通匹

(2)命令:select <要查詢(xún)的字段> from <表名>;

2、去重查詢(xún)(distinct)

命令:select distinct <要查詢(xún)的字段> from <表名>

3、排序查詢(xún)(order by)

升序:asc

降序:desc

降序排列命令:select <要查詢(xún)的字段名> from <表名> order by <要查詢(xún)的字段名> desc

不加desc一般默認(rèn)為升序排列

4、分組查詢(xún)(group by)

命令:select <按什么分的組>, Sum(score) from <表名> group by <按什么分的組>

假設(shè)現(xiàn)在又有一個(gè)學(xué)生成績(jī)表(result)。要求查詢(xún)一個(gè)學(xué)生的總成績(jī)。我們根據(jù)學(xué)號(hào)將他們分為了不同的組。

命令:

mysql>select id, Sum(score) from result group by id;

多表查詢(xún)

一、等值查詢(xún)

現(xiàn)在有兩個(gè)表:

mysql數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)查詢(xún)語(yǔ)句

mysql數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)查詢(xún)語(yǔ)句

現(xiàn)在要查詢(xún)年齡小于20歲學(xué)生的不及格成績(jī)。

語(yǔ)句:select stu.id,score from stu,result where stu.id = result.id and age < 20 and score < 60;

它的查詢(xún)?nèi)缦聢D所示:

mysql數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)查詢(xún)語(yǔ)句

可見(jiàn)等值查詢(xún)效率太低

二、連接查詢(xún)

1、外連接查詢(xún)

(1)左外連接查詢(xún)

假設(shè)我們依舊使用的是上面的兩個(gè)表,任然查詢(xún)年齡小于20歲學(xué)生的不及格成績(jī)

我們利用左外連接查詢(xún),先將學(xué)生表中所有年齡小于20歲的學(xué)生取出來(lái),再在成績(jī)表中將所有成績(jī)小于60的學(xué)生取出來(lái),然后再進(jìn)行配對(duì),我們會(huì)發(fā)現(xiàn)效率大大得提高,只用匹配四次就可以找到。

如下圖所示:

mysql數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)查詢(xún)語(yǔ)句
語(yǔ)句為:

select a.id,score
from
(select id,age from stu where age < 20) a (過(guò)濾左表信息)
left join
(select id, score from result where score < 60) b (過(guò)濾右表信息)
on a.id = b.id;

左外連接就是左表過(guò)濾的結(jié)果必須全部存在。如果存在左表中過(guò)濾出來(lái)的數(shù)據(jù),右表沒(méi)有匹配上,這樣的話(huà)右表就會(huì)出現(xiàn)NULL;

(2)右外連接查詢(xún)

select a.id,score
 from
 (select id,age from stu where age < 20) a (過(guò)濾左表信息)
 right join
 (select id, score from result where score < 60) b (過(guò)濾右表信息)
 on a.id = b.id;

左外連接就是左表過(guò)濾的結(jié)果必須全部存在

如圖:

mysql數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)查詢(xún)語(yǔ)句

我們發(fā)現(xiàn)過(guò)濾出來(lái)的表進(jìn)行的匹配只有兩條滿(mǎn)足條件(紅色代表?xiàng)l件滿(mǎn)足),但最后的結(jié)果卻是:

mysql數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)查詢(xún)語(yǔ)句

左表不匹配的數(shù)據(jù)改為空,右表過(guò)濾出來(lái)的數(shù)據(jù)都要存在。

(3)全外連接查詢(xún)

結(jié)合了左外連接和右外連接,使得左表和右表的數(shù)據(jù)都存在。

2、內(nèi)連接查詢(xún)

只篩選匹配結(jié)果

比如過(guò)濾的結(jié)果如下:

mysql數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)查詢(xún)語(yǔ)句

最后的結(jié)果為:

mysql數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)查詢(xún)語(yǔ)句

只匹配我們需要的結(jié)果

語(yǔ)句為:

select a.id,score
 from
 (select id,age from stu where age < 20) a (過(guò)濾左表信息)
 inner join
 (select id, score from result where score < 60) b (過(guò)濾右表信息)
 on a.id = b.id;

以上是“mysql數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)查詢(xún)語(yǔ)句”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI