當前位置:首頁 » 編程語言 » 關系代數與sql語言關系
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

關系代數與sql語言關系

發布時間: 2023-05-31 12:46:49

sql與關系代數、關系演算之間的對應關系

SQL是關系資料庫的標准語言,對關系模型的發展和商用DBMS的研製起著重要的作用。SQL語言是介乎於關系代數和元組演算之間的一種語言。

⑵ SQL語言及關系代數解答,非常感謝!

由於樓上的5——8寫的很好了,所以我就懶省事照搬過來了

1——4題答案在圖片上;

5.createviewAAAas

selectmaker,model,speedfromproctt1,PCt2wheret1.model=t2.model

unionallselectmaker,model,speedfromproctt1,Laptopt2wheret1.model=t2.model

6.withtmpas(selectmodel,,speedfromLaptop)

selectt2.makerfromtmpt1,proctt2

wheret1.speed=(selectmax(speed)fromtmp)

andt1.model=t2.model

7.updateProctsetmaker='A'wheremaker='B'

8.selectavg(price)from(

selectmodel,pricefromPCwherespeed>=150

unionallselectmodel,pricefromlaptopwherespeed>=150)

⑶ 資料庫系統原理之關系代數

關系代數基於集合(關系),定義了一系列對集合(關系)對操作。如並,差,笛卡爾積,選擇,更名,投影等基本操作,以及基於基本操作推導出來的擴展操作。
關系代數作用於一個或多個關系,然後產生一個新的關系。可以將關系代數理解為函數,接受一個關系輸入,返回一個新對關系。舉個例子,我們將並操作命名為 Union ,那麼並操作可以表示為:

對於其他對操作猜型岩如差操作,選擇操作等,都有相應對數學符號進行表示,但在中輸入這些符號比較困難,再加上我學習關系代數是了解基本的概念知識,這里就不使用數學符號表示了,而是以文字代替。
關系代數定義了基於集合(關系)的操作,其是 SQL 的重要基礎(另一個重要基礎是關系演算),了解了關系代數的概念以及各個操作要達到的目的之後,對 SQL 中對一些概念也會更加清晰,如連接操作。
本文首先介紹關系代數中的基礎操作,再介紹擴展操作。

關系代數的基礎操作有:並,差,笛卡爾積,選擇,更名,投影等。有些操作如並,差等要求參與運算的關系需要具備並相容性。所謂並相容性,就是兩個關系的屬性數目(度)相同,並且每個度所在的域相同。
如 R(學生,學號,地址) 和 S(課程,課程號) 兩個關系由於度和屬性所在的域不相同,因此不具備並相容性,也就無法進行並,差等操作。
相應的, R2(學生,學號,地址) 和 S(教師,教師號,地址) 由於度和屬性所在的域相同,因此具備並相容性。

並操作就是將兩個關系租盯合並為一個關系,在合並時去掉重復的元組。為什麼要去掉重復項呢?這是集合的特質,集合要求不能有重復項。
R 並 S 和 S 並 R 得到的結果是一樣的,即並操作滿足交換律。
舉個例子,有兩個關系 R(學生) 和 S(教師):

這兩個關系進行並操作的結果為:

差操作用來選擇出現在一個關系但並未出在另一個關系中的元組。
還是以上面兩個關系 R(學生) 和 S(教師) 為例,R 差 S 的結果為:

S 差 R 的結果為:

其中元組 T(Jerry,2,澳大利亞) 在兩個關系中都出現,是兩個關系的交集。因此差操作就是從一個關系中去除和另一個關系的交集所得到的集合。
差操作不滿足交換律。

笛卡爾積用來將兩個關系連接起來,笛卡爾積的結果將兩個關系中所有可能的元組組合起來。假設關系 R 的元組數目為 M,度數為 I,關系 S 的元組數目為 N,度數為 J,那麼 R 和 S 進行笛卡爾積運算得到的新關系的元組數目為 M * N,度數為 I + J。
舉個例子,有兩個關系 R(學生) 和 S(課程) :

那麼對 R 和 S 進行笛卡爾積的結果為:

笛卡爾積用來將兩個關系連接在一起,獲取所有可能的結果,其是連接操作的基礎。

選擇操作就是從一個關系中,選擇出滿足條件的元組。
如從上面的學生表中,選擇出學號大於等於 2 的學生,結果為:

選擇條件由與或非邏輯表達式構成。

投影操作是從給定的關系中,選擇出某些屬性屬性構成新的關系。如從學生表中投影出一個新的關系 R(姓名,地址) :

關系代數常用的擴展操作有交操作,Theta 連接操作,自然連接操作,外連接操作,除操作等。擴展操作可以由基礎操作推導而來。

交操作用來從兩個關系中,選擇出同時存在於兩個關系中的元組。如上面 R(學生) 和 S(教師) 進行交操作的結果為:

Theta 連接操作會從兩個關系的笛卡爾積中,選擇出某個條件的元組,並去掉重復項。例如在上面笛卡爾積例子,選擇出課程號不為 c1 並且學號不為 s1 的元組:

連接操作一般和投影操作配合使用,比如從上面的結果集中投影出 R(姓名,課程) :

Theta 連接操作中有個特殊的操作,叫做等值連接,即選擇條件為判斷是否相等。

自然連接可以認為是一種特殊的等值連接,其要求兩個關系具有相同的屬性,並且判斷條件為兩個關系中的某兩個相同屬性的值相等。
自然連接是最常用的連接操作。
假如有兩個關系 R(學生 ) 和 S(班級) :

對這兩個關系進行自然連接的結果為:

外連接就是在自然連接的結果集中,將空值元組和穗御沒有匹配到的元素放入到結果集中。
假如有兩個關系 R(學生 ) 和 S(班級) :

首先對這兩個關系進行自然連接:

我們在自然連接的結果集中,機上空值元組和沒有匹配到的元組:

以上就是外連接的結果,也叫做全外連接:保證兩端的元素不丟失。對應的,還有左外連接和右外連接,左外連接會保證左側的元素不丟失,右外連接會保證右側的元素不丟失。
因此上面兩個進行左外連接的結果為:

進行右外連接的結果為:

除操作是對兩個關系進行「除法」操作,要求「除數」關系是「被除數」關系的真子集。除操作會從「被除數」關系中,選擇出一個新的關系,設為 N,N 也是 「被除數」關系的真子集。N 需要滿足一個條件:
N 和「除數」關系的笛卡爾積是「被除數」關系的最大真子集。
好繞啊···
我們還是直接看例子吧。
假設有兩個關系: R(A1,A2,A3) 和 S(A3) :

對 R 和 S 進行除操作,得到的結果為:

如果 S 關系為:

那麼對 R 和 S 進行除操作的結果為:

從上面的例子來看,除操作適用於「滿足全部····」的查詢。舉個例子,從學生表中查詢選擇了所有課程或者選擇了軟體測試和軟體工程這兩門課程的學生。
假設存在一個關系 R(學生) 和 S(課程) :

現在我們要查詢選擇了軟體測試這門課的所有學生,則被除數關系為 R(學生) ,除數關系為:

對兩個關系進行除操作,得到的結果為:

如果我們只需要獲取學生的姓名,不需要學號這一列,那麼可以再對結果集進行投影操作:

本文介紹了關系代數以及關系代數中常用的基礎操作和擴展操作,基礎操作包括並,差,笛卡爾積,選擇,投影,更名等,某些基礎要做要求兩個參與運算的關系具有並相容性。擴展操作可以由基礎操作推導而來,可以完成更復雜的操作。
關系代數是 SQL 語言的基礎,SQL 語言是在關系代數上的一層封裝,目的是方便程序員使用。
關系代數的操作接受一個或多個關系作為輸入,再輸出一個新的關系,不同的關系操作可以進行相互的組合。例如可以先進行選擇操作再進行投影操作,先進行自然連接操作再進行選擇操作等等。根據不同的需求需要靈活的組合這些操作。

完。

⑷ 簡述SQL與關系代數的聯系和區別

  1. 聯系:關系代數是sql的理論基礎。

  2. 區別:sql是結構化查詢語言,是資料庫具體的技術標准和規范。關系代數是數學理論。

⑸ 述關系代數運算中的每一種運算與SQL 查詢語句有什麼關系

關系運算的投影,就是SQL查詢一列(豎),比如Select
sno
from
stu。而關系運算的選擇,就是查詢幾行(橫),比如,select
*
from
stu。關系的聯接運算,就是SQL的連接查詢(內,外,左,右,自然,等值等等),比如
Select
*
(或者某列)
from
stu,sc
where
stu.sno=sc.sno
關系的除運算應用較少也不好理解,這里不考慮。

⑹ 關系代數與SQL語句的關系舉例說明

SQL語句用法及關系代數運算是資料庫原理課中的重點和難點內容,關系代數是一種抽象數學語言,是關系數據操縱語言的一種傳統表達方式.SQL是業界公認的一種結構化的查詢語言,雖然各類資料庫管理系統中SQL語言有不同語法結構,但差別不大,且已形成了關系資料庫的國際標准語言.

⑺ sql語言屬於具有關系代數和關系演算雙重特點的語言

是的,SQL(Structured Query Language)語言具有關系代數和關系演算雙重特點。

SQL實例

因此,SQL語言既繼承了關系代數的操作符和集合論的概念,也借鑒了關系演算的形式化查詢思想,使得它具有關系代數和關系演算雙重特點衫拆兄。這使得SQL語言成為關系御運型資料庫系統中最常用和最重要的查詢和操作或襲語言之一。

⑻ 如何把sql語言轉換成關系代數

sql和關系代數實現查詢的方法是一樣的,只是表現形式不一樣。關系代數用選擇、投影、連接、除來實現查詢,SQL通過select--from--where來實現。加上where條件後就相當於關系代數中的選擇,select後面的屬性列相當於投影,from後面如果有幾個數據表,則在where子句中需要加上各個數據表的連接屬性是相同的這個查詢條件,也就相當於連接了。

⑼ 關系代數與SQL語句:

我用一個例子進行講述,希望您可以理解其中的含義:例題:有以下三個關系:
關系XSJB(學生信息) 關系KC(課程) 關系SC(選課)
XH XM NI XB KCH KCM XH KCH G
1001 張明 20 女 001 離散數學 1001 001 88
1002 吳海 21 男 002 數據結構 1001 002 80
1003 孫軍 23 男 003 資料庫原理 1001 003 80
2001 王一 25 女 004 計算機網路 2002 005 85
2002 黃三 20 男 005 英語 2003 001 70
2003 趙平 19 男 2003 003 85
2003 002 90
005 85
上面三張表中XH、XM、NI、XB、KCH、KCM、G分別表示學生的學號、姓名、年齡、性別、課程號、課程名、成績
檢索課程號為「001」的課程名。(用關系代數和SQL語言表示)
關系代數:
πkcm(σkch='001'(XSJB))

SQL語言:
select KCM
from XSJB
where KCH='001'

⑽ sql語言是一種介於關系代數和關系演算之間的什麼

SQL語言是一種介於關系代數與關系演算之間的結構化查詢語言。