文章來源地址http://www.zghlxwxcb.cn/news/detail-436186.html
1.?還原論
1.1.?認(rèn)為可以把高級(jí)現(xiàn)象還原為低級(jí)基本現(xiàn)象的學(xué)說
1.2.?將復(fù)雜的東西看成是由簡單單元組合而成的
1.2.1.?以賦值、條件分支、循環(huán)等作為基本處理單元,并將系統(tǒng)整體分割成很多這樣的單元的思維方式
1.2.2.?文件系統(tǒng)也是將大量的數(shù)據(jù)分割成記錄這樣的小單元進(jìn)行處理的
2.?整體論
2.1.?用系統(tǒng)、整體的觀點(diǎn)考察有機(jī)界的理論
2.2.?也稱“機(jī)體論”
2.3.?SQL中沒有賦值或者循環(huán)的處理,數(shù)據(jù)也不以記錄為單位進(jìn)行處理,而以集合為單位進(jìn)行處理
2.3.1.?SQL更像一種函數(shù)式語言
3.?遞歸集合
3.1.?馮·諾依曼提出用遞歸集合定義自然數(shù),是在1923年發(fā)表的論文《關(guān)于超限序數(shù)的引入》中
3.1.1.?SQL可以通過COUNT函數(shù)計(jì)算出元素個(gè)數(shù),與馮·諾依曼方法的定義方式兼容性很好
3.2.?偉大的哲學(xué)家弗雷格(Friedrich Ludwig Gottlob Frege),他幾乎以一己之力創(chuàng)建了關(guān)系模型基礎(chǔ)之一的謂詞邏輯
3.3.?因完善了現(xiàn)代集合論體系并提出良序定理和選擇公理而聞名的數(shù)學(xué)家策梅洛(Ernst Friedrich Ferdinand Zermelo)
3.4.?弗雷格方法和馮·諾依曼方法很像,區(qū)別在于不用空集表示0,而用包含空集的集合來表示
3.5.?自然數(shù)的定義是由皮亞諾列舉的5個(gè)條件給出的,馮·諾依曼等人只是根據(jù)皮亞諾公理生成了自然數(shù)而已
3.6.?使用λ演算函數(shù)來構(gòu)建自然數(shù)的方法
3.6.1.?使用λ演算構(gòu)建的自然數(shù)被阿隆佐·邱奇(Alonzo Church)以自己的姓氏命名為了“邱奇數(shù)”
3.6.2.?其本質(zhì)卻是輸入輸出均為函數(shù)的高階函數(shù)
4.?用CASE表達(dá)式代替IF語句和CASE語句
4.1.?CASE表達(dá)式與1+(2-4)或者(x*y)/z一樣,都是表達(dá)式,在執(zhí)行時(shí)會(huì)被整體當(dāng)作一個(gè)值來處理
4.2.?常量可以理解為變量個(gè)數(shù)為0的表達(dá)式
4.3.?CASE表達(dá)式最終會(huì)作為一個(gè)確定的值來處理
4.4.?可以把CASE表達(dá)式當(dāng)作聚合函數(shù)的參數(shù)來使用
5.?用GROUP BY和關(guān)聯(lián)子查詢代替循環(huán)
5.1.?SQL中沒有專門的循環(huán)語句
5.1.1.?使用游標(biāo)實(shí)現(xiàn)循環(huán),但是這樣的話還是面向過程的做法
5.1.2.?去掉普通編程語言中的循環(huán)正是SQL語言設(shè)計(jì)之初的目的之一
5.2.?將關(guān)系整體作為操作的對(duì)象。目的是避免循環(huán)
5.3.?面向過程語言在循環(huán)時(shí)經(jīng)常用到的處理是“控制、中斷”
5.3.1.?在SQL中,這兩個(gè)處理可以分別用GROUP BY子句和關(guān)聯(lián)子查詢來表達(dá)
5.3.2.?關(guān)聯(lián)子查詢適合用來分割處理單元
6.?表中的行沒有順序
6.1.?對(duì)于文件來說,行的順序是非常重要的
6.2.?表有意地放棄了行的順序這一形象的概念,從而使它具有了更高的抽象度
6.3.?依賴順序的不好的寫法
6.3.1.?在定義視圖時(shí)指定ORDER BY子句(如果某種數(shù)據(jù)庫支持這種寫法,那么它本身就有問題)
6.3.2.?Oracle中的rownum這樣依賴具體實(shí)現(xiàn)的“行編號(hào)”列
7.?將表看成集合
7.1.?理解表的抽象性的最好的方法是使用自連接
8.?理解EXISTS謂詞和“量化”的概念
8.1.?謂詞邏輯有100多年的歷史,是現(xiàn)代邏輯學(xué)的標(biāo)準(zhǔn)邏輯體系
8.2.?對(duì)于SQL來說,量化符就是EXISTS謂詞
8.3.?更應(yīng)該靈活掌握的其實(shí)是其否定形式——NOT EXISTS的用法
8.3.1.?對(duì)于SQL中不具備的全稱量化符,我們只能通過在程序中使用NOT EXISTS來表達(dá)
8.3.2.?通過德·摩根定律和NOT EXISTS來表達(dá)全稱量化的方法
8.3.3.?使用NOT EXISTS的查詢語句,可讀性都不太好
8.3.3.1.?同樣的功能也可以用HAVING子句或者ALL謂詞來實(shí)現(xiàn)
8.3.4.?NOT EXISTS有一個(gè)很大的優(yōu)點(diǎn),即性能比HAVING子句和ALL謂詞要好得多
9.?學(xué)習(xí)HAVING子句的真正價(jià)值
9.1.?與WHERE子句不同,HAVING子句正是設(shè)置針對(duì)集合的條件的地方
10.?不要畫長方形,去畫圓
10.1.?能夠準(zhǔn)確描述靜態(tài)數(shù)據(jù)模型的標(biāo)準(zhǔn)工具是維恩圖,即“圓”
文章來源:http://www.zghlxwxcb.cn/news/detail-436186.html
到了這里,關(guān)于讀SQL進(jìn)階教程筆記15_SQL編程思維的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!