目錄
有了資料庫,還要通過查詢來獲得資料。sql是常用的查詢語言,但我想用更抽象的查詢語言來表達,從思路上去理解而忽略實現細節。下面將介紹關係代數。
在介紹查詢語言之前,先定義乙個資料庫例項:
sailors(sid: integer, sname: string, rating: interger, age: real)
boats(bid: integer, bname: string, color: string)
reserves(sid: integer, bid: integer, day: date)
選擇和投影均可對單個關係進行操作。選擇行的操作符為 σ
\sigma
σ,投影列的操作符為 π
\piπ,兩種操作均可以新增檢索條件。
等級大於8的水手: σra
ting
>8(
sail
ors)
\sigma}(sailors)
σratin
g>8
(sai
lors
)所有水手名字和等級:πsn
ame,
rati
ng(s
ailo
rs
)\pi}(sailors)
πsname
,rat
ing
(sai
lors
)每個關係都可以看作例項的集合,因此可以對兩個關係進行集合操作。集合操作包括交,並,差以及笛卡爾積,操作符分別為 ⋂
\bigcap
⋂,⋃\bigcup
⋃,−-
−,×\times
×。兩個關係進行集合操作的結果仍為關係。
連線操作包括條件連線、相等連線和自然連線,操作符為 ⋈
\join
⋈。連線本質上是求笛卡爾積,條件連線是只對符合條件的元組進行連線,相等連線是條件為相等表示式的連線,自然連線是只對存在同名字段的元組進行連線。
所有水手預訂的船隻:sai
lors
⋈res
erve
s⋈bo
at
ssailors\join reserves\join boats
sailor
s⋈re
serv
es⋈b
oats
除並不是基本操作,雖然可以用操作符 ∖
\setminus
∖ 表示,但實際上除是由其它操作定義的。考慮兩個關係例項 a
aa 和 b
bb,a
aa 有且僅有字段 x
xx 和 y
yy,而 b
bb 只有乙個字段 y
yy。a∖b
a\setminus b
a∖b 定義為滿足如下條件的 x
xx 的集合,對於 b
bb 中每個元組 y
yy,在 a
aa 中都有乙個元組 y> y> 與之對應。 a ∖b a\setminus b a∖b 定義為:πx( a)−π x((π x(a) ×b)− a) \pi(a) - \pi((\pi(a) \times b) - a) πx(a) −πx ((πx (a) ×b)− a)raghu ramakrishnan, johannes gehrke. database management systems (third edition)[m]. 北京:清華大學出版社, 2003. 概述 傳統的集合運算 並,差,交,笛卡爾積 專門的關係運算 r和s 具有相同的目n 即兩個關係都有n個屬性 相應的屬性取自同乙個域 r s 仍為n目關係,由屬於r或屬於s的元組組成 r s r和s 具有相同的目n 相應的屬性取自同乙個域 r s 仍為n目關係,由屬於r而不屬於s的所有元組組成 r s... 定義如下 專門的關係運算 除給定關係r x,y 和s y,z 其中x,y,z為屬性組。r中的y與s中的y可以有不同的屬性名,但必須出自相同的域集。r與s的除運算得到乙個新的關係p x p是r中滿足下列條件的元組在x屬性列上的投影 元組在x上分量值x的象集yx包含s在y上投影的集合。r s yx x在... 關聯式資料庫的資料操作分為查詢和更新兩類。查詢語句用於各種檢索操作,更新操作用於插入 刪除和修改等操作。關係查詢語言根據其理論基礎的不同分成兩大類 1.關係代數語言 查詢操作是以集合操作為基礎運算的dml語言。2.關係演算語言 查詢操作是以謂詞演算為基礎運算的dml語言。關係代數的五個基本運算 關係...資料庫關係代數
資料庫 關係代數除法
資料庫的關係代數