畫了12張圖,只為了琢磨SQL設計思想,這次真懂了
前言
很多程式設計師視 SQL 為洪水猛獸。SQL 是一種為數不多的宣告性語言,它的執行方式完全不同於我們所熟知的命令列語言、面向物件的程式語言、甚至是函式語言(儘管有些人認為 SQL 語言也是一種函式式語言)。
關係模型
關係模型(Relational model)由 E.F.Codd 博士於 1970 年提出,以集合論中的關係概念為基礎;無論是現實世界中的實體物件還是它們之間的聯絡都使用關係表示。我們在資料庫系統中看到的關係就是二維表(Table),由行(Row)和列(Column)組成。因此,也可以說關係表是由資料行構成的集合。
關係模型由資料結構、關係操作、完整性約束三部分組成。
1.關係模型中的資料結構就是關係表,包括基礎表、派生表(查詢結果)和虛擬表(檢視)。
2.常用的關係操作包括增加、刪除、修改和查詢(CRUD),使用的就是 SQL 語言。其中查詢操作最為複雜,包括選擇(Selection)、投影(Projection)、並集(Union)、交集(Intersection)、差集(Exception)以及笛卡兒積(Cartesian product)等。
3.完整性約束用於維護資料的完整性或者滿足業務約束的需求,包括實體完整性(主鍵約束)、參照完整性(外來鍵約束)以及使用者定義的完整性(非空約束、唯一約束、檢查約束和預設值)。
我們今天的主題是關係操作語言,也就是 SQL。
面向集合
SQL(結構化查詢語言)是操作關係資料庫的標準語言。SQL 非常接近英語,使用起來非常簡單。它在設計之初就考慮了非技術人員的使用需求,我們通常只需說明想要的結果(What),而將資料處理的過程(How)交給資料庫管理系統。所以說,SQL 才是真正給人用的程式語言!
接下來我們具體分析一下關係的各種操作語句;目的是為了讓大家能夠了解 SQL 是一種面向集合的程式語言,它的操作物件是集合,操作的結果也是集合。