mysql 集合 思想 SQL程式設計思想 一切皆關係

2021-10-18 03:26:51 字數 1691 閱讀 1759

sql程式設計思想:一切皆關係

2020-4-10

在計算機領域有許多偉大的設計理念和思想,例如:在 unix 中,一切皆檔案。

在物件導向的程式語言中,一切皆物件。

關聯式資料庫同樣也有自己的設計思想:在 sql 中,一切皆關係。

關係模型

關係模型(relational model)由 e.f.codd 博士於 1970 年提出,以集合論中的關係概念為基礎;無論是現實世界中的實體物件還是它們之間的聯絡都使用關係表示。我們在資料庫系統中看到的關係就是二維表(table),由行(row)和列(column)組成。因此,也可以說關係表是由行構成的集合。

關係模型由資料結構、關係操作、完整性約束三部分組成。

關係模型中的資料結構就是關係表,包括基礎表、派生表(查詢結果)和虛擬表(檢視)。

常用的關係操作包括增加、刪除、修改和查詢(crud),使用的就是 sql 語言。其中查詢操作最為複雜,包括選擇(selection)、投影(projection)、並集(union)、交集(intersection)、差集(exception)以及笛卡兒積(cartesian product)等等。

完整性約束用於維護資料的完整性或者滿足業務約束的需求,包括實體完整性(主鍵約束)、參照完整性(外來鍵約束)以及使用者定義的完整性(非空約束、唯一約束、檢查約束和預設值)。

面向集合

sql(結構化查詢語言)是操作關聯式資料庫的標準語言。sql 非常接近英語,使用起來非常簡單。它在設計之初就考慮了非技術人員的使用需求,我們通常只需說明想要的結果(what),而將資料處理的過程(how)交給資料庫管理系統。所以說,sql 才是真正給人用的語言!

接下來我們具體分析一下關係的各種操作語句;目的是為了讓大家了解 sql 是一種面向集合的程式語言,它操作的物件是集合,操作的結果也是集合。在關聯式資料庫中,關係、表、集合三者通常表示相同的內容。

select

下面是乙個簡單的查詢語句:select employee_id, first_name, last_name, hire_date from employees;

它的作用就是從 employees 表中查詢員工資訊。顯然,我們都知道 from 之後是乙個表(關係、集合)。不僅如此,整個查詢語句的結果也是乙個表。所以,我們可以將上面的查詢作為表使用:select *from (select employee_id, first_name, last_name, hire_date from employees) t;

括號內的查詢語句被稱為派生表,我們給它指定了乙個別名叫做 t。同樣,整個查詢結果也是乙個表;這就意味著我們可以繼續巢狀,雖然這麼做很無聊。

我們再看乙個 postgresql 中的示例:-- postgresql

select *from upper('sql');

| upper |

| sql |

upper() 是乙個大寫轉換的函式。它出現再 from 子句中,意味著它的結果也是乙個表,只不過是 1 行 1 列的特殊表。

select 子句用於指定需要查詢的字段,可以包含表示式、函式值等。select 在關係操作中被稱為投影(projection),看下面的示意圖應該就比較好理解了。

mysql 集合 思想 mysql 面向集合查詢

面向集合的思想 sql是為查詢和管理關係型資料庫中的資料而專門設計的一種標準語言。我們通常認為的關係型是說的資料庫中表與表的關係,這個理解是有問題的,這裡的關係其實是數學術語上的關係。為什麼這麼說?因為關係型資料庫是以關係模型為基礎,而關係模型是以集合論和謂詞邏輯兩大數學理論為依據的。集合論中,關係...

MySQL 實用 SQL 語句集合

寫在前面的話 本文主要用於記錄工作中不經常使用但是偶爾用到又非常有用的 sql 語句,持續不斷不定期更新。資料庫大小統計 1.檢視 mysql 某個庫的所有表大小,記錄數,占用空間等。select table name,data length,index length,data length ind...

mysql集合運算教程 SQL之集合運算

union 並集 集合運算 1.union all集合運算 該集合運算返回在輸入的多集 現的所有行,它實際上不會對行進行比較,也不會刪除重複行。假設查詢query1返回m行,查詢query2返回n行,則該集合運算後返回 m n 行 1 select country,region,city fromh...