主頁 > 資料庫 > 讀SQL進階教程筆記15_SQL編程思維

讀SQL進階教程筆記15_SQL編程思維

2023-05-08 08:29:10 資料庫

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快速搭建環境

下一篇:返回列表

標籤雲
其他(158610) Python(38118) JavaScript(25405) Java(18023) C(15222) 區塊鏈(8262) C#(7972) AI(7469) 爪哇(7425) MySQL(7171) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5336) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4566) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2432) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1965) Web開發(1951) HtmlCss(1932) python-3.x(1918) 弹簧靴(1913) C++(1912) xml(1889) PostgreSQL(1874) .NETCore(1857) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • 讀SQL進階教程筆記15_SQL編程思維

    1. 還原論 1.1. 認為可以把高級現象還原為低級基本現象的學說 1.2. 將復雜的東西看成是由簡單單元組合而成的 1.2.1. 以賦值、條件分支、回圈等作為基本處理單元,并將系統整體分割成很多這樣的單元的思維方式 1.2.2. 檔案系統也是將大量的資料分割成記錄這樣的小單元進行處理的 2. 整體 ......

    uj5u.com 2023-05-08 08:29:10 more
  • shp資料插入sde連接的PostgreSQL庫(一)----基于 IntelliJ IDE的G

    前言 早就聽聞大名鼎鼎的GeoTools,因為自己不搞Java,所以之前沒用過, 背景 最近有個需求,一個白模系統,具體是資料是用SDE匯入到postgresql中,然后用arcgis server發布了矢量,最后用 arcgis api for js 4.x拉伸,得到有高度的白模。以前的資料都是通 ......

    uj5u.com 2023-05-08 08:23:31 more
  • 資料庫系統概論—安全、完整性

    資料庫系統概論—基礎篇(3) 三.資料庫安全性 1.資料庫安全性概述 資料庫的安全性指保護資料庫以防不合法使用所造成的資料泄露、更改或破壞 2.資料庫安全性控制 2.1用戶身份鑒別 靜態口令鑒別 動態口令鑒別 生物鑒別特征 智能卡鑒別 2.2存取控制 自主存取控制:給用戶限權(DAC,C1級) 強制 ......

    uj5u.com 2023-05-08 08:21:50 more
  • 2、etcd單機部署和集群部署

    上一章我們認識了etcd,簡單的介紹了 etcd 的基礎概念,但是理解起來還是比較抽象的。這一章我們就一起來部署下 etcd 。這樣可以讓我們對 etcd 有更加確切的認識。 1、etcd單實體部署 對于平常的學習,其實搭建一個單機節點是夠了的。接下來就講講怎么搭建單機節點。 本次部署是在 cent ......

    uj5u.com 2023-05-07 09:20:22 more
  • ☆常用的Sql陳述句匯總(DDL/DML)

    常用的sql陳述句匯總 1、獲取所有表名、表資訊 里面有表注釋 | 資料庫種類 | sql | 備注 | | | | | | mysql | -- 獲取所有表名、視圖名show tables-- 獲取 dev_test_data資料庫 所有表、視圖資訊select * from information ......

    uj5u.com 2023-05-07 09:20:02 more
  • Semi-Join Subquery優化策略

    Semi-Join Subquery優化策略 Semi-Join Subquery(半連接子查詢):對應IN或EXISTS子查詢,僅需要檢查"外表記錄"在"子查詢結果集"中是否存在匹配記錄,不需要計算"子查詢結果集"中記錄匹配次數,也不需要回傳"子查詢結果集"中匹配記錄內容 在MariaDB(MyS ......

    uj5u.com 2023-05-07 09:19:40 more
  • 實驗小記之Linux上的Oracle11gR2單實體靜默安裝和建庫

    說明:本文的所有步驟不適用于生產環境,僅用于個人測驗環境的快速部署和學習,下述操作程序在Oracle Linux 7.9上安裝Oracle 11.2.0.4單實體為例。 1 安裝環境檢查 安裝環境的檢查可以參考官方檔案Oracle Database Quick Installation Guide ......

    uj5u.com 2023-05-07 09:19:31 more
  • MySQL如何獲取binlog的開始時間和結束時間

    MySQL資料庫恢復到指定時間點時,我們必須通過MySQL全備+MySQL增量備份(可選)+MySQL的二進制日志(binlog)進行重放來恢復到指定時間點,實際的生產環境中,可能一段時間內生成了多個二進制日志檔案(binlog), MySQL本身不會存盤二進制日志檔案(binlog)的開始時間和結 ......

    uj5u.com 2023-05-07 09:19:25 more
  • GaussDB(DWS)字串處理函式回傳錯誤結果集排查

    摘要:在使用字串處理函式時,有時會出現非預期結果的場景。在排除使用問題后,應該從encoding和資料本身開始排查。 本文分享自華為云社區《GaussDB(DWS)字串處理函式回傳錯誤結果集排查》,作者: -CHEN111- 。 在使用字串處理函式時,有時會出現非預期結果的場景。在排除使用問題 ......

    uj5u.com 2023-05-07 09:19:19 more
  • MySQL備份命令幫助手冊

    借助于 mysqldump 命令可以進行資料庫的備份。 用法: mysqldump [OPTIONS] database [tables] 或:mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] 或:mysqldump [OPTION ......

    uj5u.com 2023-05-07 09:19:14 more