1. 還原論
1.1. 認為可以把高級現象還原為低級基本現象的學說
1.2. 將復雜的東西看成是由簡單單元組合而成的
1.2.1. 以賦值、條件分支、回圈等作為基本處理單元,并將系統整體分割成很多這樣的單元的思維方式
1.2.2. 檔案系統也是將大量的資料分割成記錄這樣的小單元進行處理的
2. 整體論
2.1. 用系統、整體的觀點考察有機界的理論
2.2. 也稱“機體論”
2.3. SQL中沒有賦值或者回圈的處理,資料也不以記錄為單位進行處理,而以集合為單位進行處理
2.3.1. SQL更像一種函式式語言
3. 遞回集合
3.1. 馮·諾依曼提出用遞回集合定義自然數,是在1923年發表的論文《關于超限序數的引入》中
3.1.1. SQL可以通過COUNT函式計算出元素個數,與馮·諾依曼方法的定義方式兼容性很好
3.2. 偉大的哲學家弗雷格(Friedrich Ludwig Gottlob Frege),他幾乎以一己之力創建了關系模型基礎之一的謂詞邏輯
3.3. 因完善了現代集合論體系并提出良序定理和選擇公理而聞名的數學家策梅洛(Ernst Friedrich Ferdinand Zermelo)
3.4. 弗雷格方法和馮·諾依曼方法很像,區別在于不用空集表示0,而用包含空集的集合來表示
3.5. 自然數的定義是由皮亞諾列舉的5個條件給出的,馮·諾依曼等人只是根據皮亞諾公理生成了自然數而已
3.6. 使用λ演算函式來構建自然數的方法
3.6.1. 使用λ演算構建的自然數被阿隆佐·邱奇(Alonzo Church)以自己的姓氏命名為了“邱奇數”
3.6.2. 其本質卻是輸入輸出均為函式的高階函式
4. 用CASE運算式代替IF陳述句和CASE陳述句
4.1. CASE運算式與1+(2-4)或者(x*y)/z一樣,都是運算式,在執行時會被整體當作一個值來處理
4.2. 常量可以理解為變數個數為0的運算式
4.3. CASE運算式最侄訓作為一個確定的值來處理
4.4. 可以把CASE運算式當作聚合函式的引數來使用
5. 用GROUP BY和關聯子查詢代替回圈
5.1. SQL中沒有專門的回圈陳述句
5.1.1. 使用游標實作回圈,但是這樣的話還是面向程序的做法
5.1.2. 去掉普通編程語言中的回圈正是SQL語言設計之初的目的之一
5.2. 將關系整體作為操作的物件,目的是避免回圈
5.3. 面向程序語言在回圈時經常用到的處理是“控制、中斷”
5.3.1. 在SQL中,這兩個處理可以分別用GROUP BY子句和關聯子查詢來表達
5.3.2. 關聯子查詢適合用來分割處理單元
6. 表中的行沒有順序
6.1. 對于檔案來說,行的順序是非常重要的
6.2. 表有意地放棄了行的順序這一形象的概念,從而使它具有了更高的抽象度
6.3. 依賴順序的不好的寫法
6.3.1. 在定義視圖時指定ORDER BY子句(如果某種資料庫支持這種寫法,那么它本身就有問題)
6.3.2. Oracle中的rownum這樣依賴具體實作的“行編號”列
7. 將表看成集合
7.1. 理解表的抽象性的最好的方法是使用自連接
8. 理解EXISTS謂詞和“量化”的概念
8.1. 謂詞邏輯有100多年的歷史,是現代邏輯學的標準邏輯體系
8.2. 對于SQL來說,量化符就是EXISTS謂詞
8.3. 更應該靈活掌握的其實是其否定形式——NOT EXISTS的用法
8.3.1. 對于SQL中不具備的全稱量化符,我們只能通過在程式中使用NOT EXISTS來表達
8.3.2. 通過德·摩根定律和NOT EXISTS來表達全稱量化的方法
8.3.3. 使用NOT EXISTS的查詢陳述句,可讀性都不太好
8.3.3.1. 同樣的功能也可以用HAVING子句或者ALL謂詞來實作
8.3.4. NOT EXISTS有一個很大的優點,即性能比HAVING子句和ALL謂詞要好得多
9. 學習HAVING子句的真正價值
9.1. 與WHERE子句不同,HAVING子句正是設定針對集合的條件的地方
10. 不要畫長方形,去畫圓
10.1. 能夠準確描述靜態資料模型的標準工具是維恩圖,即“圓”
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/551877.html
標籤:其他
上一篇:shp資料插入sde連接的PostgreSQL庫(一)----基于 IntelliJ IDE的GeoTools快速搭建環境
下一篇:返回列表