免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Excel VBA ADO SQL入門(mén)教程011:SELECT語(yǔ)法結(jié)構(gòu)和運(yùn)算順序

望向孤單的晚燈 是那傷感的記憶 再次泛起心里無(wú)數(shù)的思念……

1.

魯迅先生說(shuō)過(guò),學(xué)習(xí)一門(mén)語(yǔ)言,英語(yǔ)也好,計(jì)算機(jī)編程也罷,重要的是掌握它的結(jié)構(gòu)。對(duì)于編程而言,所謂結(jié)構(gòu),當(dāng)然不只是指語(yǔ)法結(jié)構(gòu),也包含了數(shù)據(jù)結(jié)構(gòu)等等……不過(guò),對(duì)于初學(xué)者而言,緊要的是先掌握語(yǔ)法結(jié)構(gòu)。

         

第3章的時(shí)候(Excel VBA ADO SQL入門(mén)教程003:字段查詢)我們說(shuō)過(guò),SELECT語(yǔ)句超簡(jiǎn)版的語(yǔ)法如下:

SELECT 字段名 FROM 表名

經(jīng)過(guò)這一段時(shí)間的分享,我們又陸續(xù)學(xué)習(xí)了WHERE/GROUP BY/HAVING/ORDER BY等子句……

因此,我們今就來(lái)說(shuō)下SELECT語(yǔ)句較為完整的語(yǔ)法結(jié)構(gòu)。

如下:

SELECT [DISTINCT] [TOP] 字段名 

FROM 表名

[WHERE] 條件篩選

[GROUP BY] 分組

[HAVING] 分組篩選

[ORDER BY] 排序

被中括號(hào)包括的部分,都是可選的。

2.

了解了SELECT較為完整的語(yǔ)法結(jié)構(gòu),下一個(gè)問(wèn)題是:它的運(yùn)算順序是怎么樣的?

我們接觸到的語(yǔ)言,有些是按語(yǔ)句的先后順序運(yùn)算的,比如VBA;有些不是,比如Excel函數(shù),多層Excel函數(shù)是由里到外的運(yùn)算順序。

那么SQL呢?

一個(gè)完整的SELECT語(yǔ)句運(yùn)算順序如下:

(1),首先運(yùn)算的是FROM子句,根據(jù)FROM子句中指定的一個(gè)或多個(gè)表創(chuàng)建工作表。

(2),如果存在WHERE子句,則WHERE子句對(duì)步驟1獲得的工作表進(jìn)行條件篩選,刪除不符合條件的記錄。

(3),如果存在GROUP BY子句,則對(duì)步驟2生成的結(jié)果表按指定字段進(jìn)行分組,生成一份新的結(jié)果表。

(4),如果存在HAVING子句,則對(duì)步驟3的結(jié)果表按指定條件進(jìn)行篩選,刪除掉不滿足篩選條件的記錄。

(5),執(zhí)行SELECT子句,刪除不包含在SELECT 字段名 ,所指定的字段。如果SELECT子句中包含關(guān)鍵字DISTINCT,則執(zhí)行去重復(fù)運(yùn)算……

(6),如果有ORDER BY子句,則按指定的排序規(guī)則對(duì)結(jié)果表進(jìn)行排序操作。

(7),如果有TOP謂詞,則再進(jìn)行TOP運(yùn)算……

……

你看,SQL的運(yùn)算順序,既不是語(yǔ)句的先后順序,也不是由內(nèi)到外的順序;比如,最先出現(xiàn)的SELECT 字段名 并非首先運(yùn)算的,它的運(yùn)算順序處在HAVING子句之后和ORDER BY子句之前。DISTINCT處在TOP之前,但TOP的運(yùn)算又在DISTINCT之后。

3.

舉一個(gè)小栗子。

         

有一條SQL語(yǔ)句,如下:

SELECT 商品購(gòu)買(mǎi)日期 AS 日期 ,姓名 FROM [數(shù)據(jù)表$] WHERE 日期>#2018/1/10#

語(yǔ)句的意思是查詢數(shù)據(jù)表中“商品購(gòu)買(mǎi)日期”的值大于2018/1/10的日期和姓名兩個(gè)字段的數(shù)據(jù)。它使用了別名,將原字段名“商品購(gòu)買(mǎi)日期”重命名為“日期”(商品購(gòu)買(mǎi)日期 AS 日期)。

該語(yǔ)句運(yùn)算后,系統(tǒng)會(huì)發(fā)出以下錯(cuò)誤提示:

         

問(wèn)題出在哪兒哩?——WHERE 日期>#2018/1/10#

WHERE子句里的“日期”是什么呢?數(shù)據(jù)表內(nèi)并沒(méi)有日期這個(gè)字段名呀?

有朋友會(huì)想,笨蛋,日期是我做的別名呀,商品購(gòu)買(mǎi)日期 AS 日期……

別名是沒(méi)錯(cuò)的,但問(wèn)題在于,SELECT語(yǔ)句的運(yùn)算順序,WHERE子句是先于SELECT 字段名 部分的。也就是說(shuō)當(dāng)WHERE子句運(yùn)算時(shí),別名還沒(méi)起呢……

         

4,

最后說(shuō)句話,非常重要,嗯,晚安。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
SQL入門(mén)第11課:SELECT語(yǔ)句的語(yǔ)法結(jié)構(gòu)和運(yùn)算順序
MySQL SELECT查詢
常用的SQL語(yǔ)句
sql學(xué)習(xí)資料
SQL查詢語(yǔ)句 select 詳解
標(biāo)準(zhǔn)SQL語(yǔ)法使用
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服