乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       L羅樂(lè) 2019-08-29

      望向孤單的晚燈 是那傷感的記憶 再次泛起心里無(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:字段查詢(xún))我們說(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)行篩選,刪除掉不滿(mǎ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ǔ)句的意思是查詢(xún)數(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ō)句話(huà),非常重要,嗯,晚安。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多