久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL數(shù)據(jù)庫(kù)子查詢語法規(guī)則是什么

共計(jì) 2001 個(gè)字符,預(yù)計(jì)需要花費(fèi) 6 分鐘才能閱讀完成。

這篇文章主要介紹“MySQL 數(shù)據(jù)庫(kù)子查詢語法規(guī)則是什么”,在日常操作中,相信很多人在 MySQL 數(shù)據(jù)庫(kù)子查詢語法規(guī)則是什么問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”MySQL 數(shù)據(jù)庫(kù)子查詢語法規(guī)則是什么”的疑惑有所幫助!接下來,請(qǐng)跟著丸趣 TV 小編一起來學(xué)習(xí)吧!

子查詢是在查詢語句里面再嵌套一個(gè)查詢,這是因?yàn)槲覀冊(cè)谔崛?shù)據(jù)的時(shí)候有很多不知道的數(shù)據(jù)產(chǎn)生了依賴關(guān)系。此時(shí)我們就需要先查詢一組數(shù)據(jù)的結(jié)果集,然后將這個(gè)結(jié)果集作用為下一個(gè)查詢的對(duì)象。在“表連接的章節(jié)”,我們?cè)f過子查詢的效率低下的問題,其實(shí)并不是所有的子查詢效率都是低下的,“WHERE”子查詢?cè)谄ヅ溆涗浀臅r(shí)候要反復(fù)執(zhí)行,這是不推薦使用的;但是如果將查詢結(jié)果集當(dāng)做一張表來使用,與其他的表做一個(gè)連接,這就是“FROM”子句的子查詢了,這種子查詢的方式,還是比較推薦使用的。

子查詢簡(jiǎn)介

子查詢是一種查詢語句中再嵌套一個(gè)查詢的語句

普通查詢語句分為“SELECT”子查詢、“FROM”子查詢、“WHERE 子查詢;(重點(diǎn)推薦使用‘FROM’子查詢”)

子查詢示例如下:

查詢底薪超過公司平均底薪的員工信息。(之前我們使用過表連接的方式做個(gè)這個(gè)案例,這里來看一下如何通過子查詢的方式來實(shí)現(xiàn)。)

SELECT
 empno, ename, sal
FROM 
 t_emp
WHERE
 sal  = (SELECT AVG(sal) FROM t_emp);
 
--  正常情況下,將聚合函數(shù)作為  WHERE  子句的條件是不可以的,但是這里利用子查詢與聚合函數(shù)先將平均底薪查詢出來,這就變成具體的數(shù)據(jù)了
--  這種情況下,作為  WHERE  子句的條件,就可以被使用了 

以上就是 WHERE 子句的子查詢,不過 WHERE 子句的子查詢使不推薦使用的,應(yīng)該使用表連接的寫法。

WHERE 子查詢

在書寫 SQL 語句的時(shí)候,WHERE 子查詢最符合我們?nèi)说乃伎歼壿?

雖然這種 子查詢 最簡(jiǎn)單、最容易理解,但是卻是效率很低的子查詢

以剛剛演示的 查詢底薪超過公司平均底薪的員工信息 來說吧。“WHERE”子句拿每一條員工的記錄與“SELECT”子查詢做比較的時(shí)候,子查詢都需要重新執(zhí)行一次。如果員工表有 10000 條記錄,那么 子查詢 就需要執(zhí)行 10000 次,反復(fù)執(zhí)行這么多次,效率上是極其低下的。

在查詢語句中,反復(fù)被查詢的子查詢被稱為“相關(guān)子查詢”,這里的“WHERE”子查詢就屬于“相關(guān)子查詢”應(yīng)該避免使用這種子查詢。

FROM 子查詢

在查詢語句中,“FROM”子查詢只會(huì)執(zhí)行一次,這與“WHERE”子查詢是相反的,所以查詢效率很高。

同樣以 查詢底薪超過公司平均底薪的員工信息 為例,來看一看“FROM”子查詢是如何實(shí)現(xiàn)的。

SELECT
 e.empno, e.ename, e.sal, t.avg
FROM t_emp e 
JOIN (SELECT deptno, AVG(sal) AS avg FROM t_emp GROUP BY deptno) t
ON e.deptno = t.deptno 
AND e.sal  = t.avg;
--  首先,按照每一個(gè)部門編號(hào)去分組,然后統(tǒng)計(jì)部門標(biāo)號(hào)與該部門對(duì)應(yīng)的平均月薪。將這個(gè)結(jié)果集作為一張臨時(shí)的表與員工的表做連接。--  連接的條件為   員工表   的   部門編號(hào)  =  結(jié)果集   的   部門編號(hào),并且員工的月薪大于部門的平均月薪 

所以這個(gè)題目利用 FROM 子查詢也可以輕松的實(shí)現(xiàn),未必要使用 WHERE 子查詢。因?yàn)?FROM 子查詢并不是 相關(guān)子查詢,所以再解決一些問題的時(shí)候應(yīng)該有限選擇這種子查詢類型。

SELECT 子查詢

說一句實(shí)在的,這種子查詢?cè)谖夷壳敖?jīng)歷的所有項(xiàng)目中,一次也沒見到過。

究其原因呢,是因?yàn)椤癝ELECT”子查詢也是相關(guān)子查詢,它在 SQL 語句中也會(huì)反復(fù)的執(zhí)行,查詢效率很低。

這里我們就舉個(gè)例子:比如說現(xiàn)在要查詢每個(gè)員工的部門信息,

SELECT
 e.empno,
 e.ename,
 (SELECT dname FROM t_dept WHERE deptno = e.deptno) AS  部門名稱
FROM t_emp e;
--  先試用   SELECT   子查詢查詢出   部門表   中的部門名稱,約束條件為   部門表 中的   部門編號(hào)   與   員工表 中的   部門編號(hào)   一致
--  將   SELECT   子查詢得到的   部門名稱   作為 SQL 語句中的一個(gè)字段進(jìn)行輸出 

雖然執(zhí)行出來的結(jié)果是對(duì)的,但是執(zhí)行的效率實(shí)在是太低了,所以這種 SELECT 子查詢的方式也是不推薦使用的,了解即可,當(dāng)我們看到有其他人使用 SELECT 子查詢的時(shí)候,最好善意的提醒一下。

到此,關(guān)于“MySQL 數(shù)據(jù)庫(kù)子查詢語法規(guī)則是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-13發(fā)表,共計(jì)2001字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒有評(píng)論)
主站蜘蛛池模板: 崇信县| 千阳县| 九龙县| 自治县| 竹北市| 高州市| 桦甸市| 大名县| 抚松县| 怀远县| 黎川县| 华安县| 乐都县| 浦北县| 洛扎县| 邯郸市| 乐至县| 南通市| 甘肃省| 陆丰市| 华池县| 专栏| 新乡县| 普格县| 商洛市| 靖边县| 万年县| 康乐县| 拉萨市| 长宁区| 宁乡县| 澄迈县| 大石桥市| 灵璧县| 汉中市| 吉木乃县| 威信县| 蕲春县| 崇阳县| 吉首市| 冷水江市|