數據庫原理與應用(SQLServer)第2章關系數據庫課件_第1頁
數據庫原理與應用(SQLServer)第2章關系數據庫課件_第2頁
數據庫原理與應用(SQLServer)第2章關系數據庫課件_第3頁
數據庫原理與應用(SQLServer)第2章關系數據庫課件_第4頁
數據庫原理與應用(SQLServer)第2章關系數據庫課件_第5頁
已閱讀5頁,還剩74頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第2章 創(chuàng)建數據庫和創(chuàng)建表數據庫原理與應用(SQL Server)12.1 關系模型2.2 關系代數2.3 關系演算2.4 SQL簡介22.1 關系模型2.1.1關系數據結構1. 關系1)域(Domain)定義2.1 域是一組具有相同數據類型的值的集合。例如,整數、正整數、實數、大于等于0且小于等于100的正整數、0,1,2,3,4等都可以是域。2.)笛卡爾積(Cartesian Product) 定義2.2 設定一組域D1, D2, , Dn,在這組域中可以是相同的域。定義D1, D2, , Dn,的笛卡爾積為 D1D2Dn=(d1, d2, , dn) | diDi, i=1, 2, ,

2、n 數據庫原理與應用(SQL Server)32.1.1 關系數據結構其中每一個元素(d1, d2, , dn)叫做一個n元組(n-tuple)或簡稱元組(Tuple),元素中的每個值di(i=1, 2, n)叫做一個分量(Component)。 如果Di(i=1, 2, n)為有限集,其基數(Cardinal number)為mi(i=1, 2, n),則D1D2Dn的基數為笛卡爾積可以表示為一個二維表,表中每一行對應一個元組,每一列的值來自一個域?!纠?.1】 笛卡爾積舉例 數據庫原理與應用(SQL Server)42.1.1 關系數據結構 給出3個域: D1=學號集合stno=12100

3、1, 121002 D2=姓名集合stname=周浩然, 王麗萍 D3=性別集合 stsex=男, 女 則D1, D2, D3,的笛卡爾積為: D1D2D3=(121001,周浩然, 男), (121001,周浩然, 女), (121001,王麗萍, 男), (121001,王麗萍, 女), (121002,周浩然, 男), (121002,周浩然, 女), (121002,王麗萍, 男), (121002,王麗萍, 女)其中(121001,周浩然, 男), (121001,周浩然, 女), (121002,王麗萍, 男)等都是元組,121001, 121002,周浩然,王麗萍 數據庫原理與應

4、用(SQL Server)52.1.1 關系數據結構 男, 女等都是分量,這個笛卡爾積的基數是222=8,即共有8個元組,可列成一張二維表,如表2.1所示。表2.1 D1, D2, D3的笛卡爾積 數據庫原理與應用(SQL Server)62.1.1 關系數據結構3.)關系(Relation)定義2.3 笛卡爾積D1D2Dn的子集稱為D1,D2,Dn上的關系,表示為R(D1,D2,Dn)這里的R表示關系的名稱,n是關系的目或度(Degree)。當n=1時,稱該關系為單元關系或一元關系。當n=2時,稱該關系為二元關系。當n=m時,稱該關系為m元關系。關系中的每個元素是關系中的元組,通常用t表示。

5、在一般情況下,D1,D2,Dn的笛卡爾積是沒有實際意義的,只有它的某個子集才有實際意義,舉例如下。 數據庫原理與應用(SQL Server)72.1.1 關系數據結構【例2.2】 關系舉例在例2.1的笛卡爾積中,許多元組是沒有意義的,因為一個學號只標識一個學生的姓名,一個學生只有一個性別,表2.1的一個子集才有意義,才可以表示學生關系,將學生關系取名為S,表示為S(stno, stname, stsex),列成二維表如表2.2所示。表2.2 S關系 數據庫原理與應用(SQL Server)82.1.1 關系數據結構(1)關系的元組、屬性和候選碼關系是笛卡爾積的有限子集,所以關系也是一個二維表。

6、 元組(Tuple)表的每一行,對應一個元組。 屬性(Attribute)表的每一列,對應一個域,由于域可以相同,為了加以區(qū)分,必須對每一列起一個唯一的名字,稱為屬性。 候選碼(Candidate key)若關系中某一屬性組的值能唯一地標識一個元組,則稱該屬性組為候選碼。 數據庫原理與應用(SQL Server)92.1.1 關系數據結構候選鍵碼中的諸屬性稱為為主屬性(Prime attribute),不包含在任何候選碼中的屬性稱為非主屬性(Non-prime attribute)或非碼屬性(Non-key attribute)。在最簡單的情況下,候選碼只包含一個屬性,在最極端的情況下,關系模

7、式的所有屬性組成這個關系模式的候選碼,稱為全碼(All-key)。 主碼(Primary key)在一個關系中有多個候選碼,從中選定一個作為主碼。(2)關系的類型關系有3種類型:基本關系(又稱基本表或基表)、查詢表和視圖表。 數據庫原理與應用(SQL Server)102.1.1 關系數據結構 基本關系:實際存在的表,是實際存儲數據的邏輯表示 查詢表:查詢結果對應的表 視圖表:由基本表或其它視圖標導出的表,是虛表,不對應實際存儲的數據(3)關系的性質關系具有以下的性質: 列的同質性:每一列中的分量是同一類型的數據,來自同一個域。 列名唯一性:每一列具有不同的屬性名,但不同列的值可以來自同一個域

8、。 數據庫原理與應用(SQL Server)112.1.1 關系數據結構 元組相異性:關系中任意兩個元組的候選碼不能相同。 行序的無關性:行的次序可以互換。 列序的無關性:列的次序可以互換。 分量原子性:分量值是原子的,即每一個分量都必須是不可分的數據項。(4)規(guī)范化關系模型要求關系必須是規(guī)范化(normalization)的,規(guī)范化要求關系必須滿足一定的規(guī)范條件,而在規(guī)范條件中最基本的一條是每一個分量必須是不可分的數據項。規(guī)范化的關系簡稱為范式(Normal Form)。 數據庫原理與應用(SQL Server)122.1.1 關系數據結構例如,表2.3所示的關系就是不規(guī)范的,存在”表中有表

9、”的現象。 表2.3 非規(guī)范化關系2. 關系模式在關系數據庫中,關系模式是型,關系是值。關系是元組的集合,關系模式是對關系的描述,所以關系模式必須指出這個元組集合的結構,即它由哪些屬性構成,這些屬性來自哪些域。 數據庫原理與應用(SQL Server)132.1.1 關系數據結構定義2.4 關系模式(Relation Schema)可以形式化地表示為R(U, D, DOM, F)其中:R是關系名,U是組成該關系的屬性名集合,D是屬性所來自的域,DOM是屬性向域的映象集合,F是屬性間的數據依賴關系集合。關系模式通??梢院営洖镽(U)或 R(A1, A2, , An)其中,R是關系名,A1, A2

10、, , An 為屬性名。關系是關系模式在某一時刻的狀態(tài)或內容。關系模式是靜態(tài)的、穩(wěn)定的,而關系是動態(tài)的、隨時間不斷變化的,因為關系操作在不斷地更新著數據庫中的數據。 數據庫原理與應用(SQL Server)142.1.1 關系數據結構在實際應用中,我們常常把關系模式和關系統(tǒng)稱為關系。3. 關系數據庫在一個給定的應用領域中,所有實體及實體之間聯(lián)系的關系的集合構成一個關系數據庫。關系數據庫的型稱為關系數據庫模式,是對關系數據庫的描述,包括若干域的定義和在這些域上定義的若干關系模式。關系數據庫的值是這些關系模式在某一時刻對應的關系的集合。 數據庫原理與應用(SQL Server)152.1.2 關系

11、操作1. 基本的關系操作關系操作包括查詢(Query)操作和插入(Insert)、刪除(Delete)、修改(Update)操作兩大部分。查詢操作是關系操作最重要的部分,可分為選擇(Select)、投影(Project)、連接(Join)、除(Devide)、并(Union)、差(Except)、交(Intersection)、笛卡爾積等。其中的5種基本操作是并、差、笛卡爾積,選擇、投影,其它操作可由基本操作來定義和導出。關系操作的特點是集合操作方式,即操作的對象與結果都是集合。這種操作方式亦稱為一次一集合(set-at-a-time)方式,相應地,非關系模型的數據操作方式則為一次一記錄(re

12、cord-at-a-time)方式。 數據庫原理與應用(SQL Server)162.1.2 關系操作2. 關系操作語言關系操作語言是數據庫管理系統(tǒng)提供的用戶接口,是用戶用來操作數據庫的工具,關系操作語言靈活方便,表達能力強大,可分為關系代數語言、關系演算語言和結構化查詢語言三類。(1)關系代數語言用對關系的運算來表達查詢要求的語言,如ISBL。(2)關系演算語言 用謂詞來表達查詢要求的語言,又分為元組關系演算語言和域關系演算語言,前者如ALPHA,后者QBE。 數據庫原理與應用(SQL Server)172.1.2 關系操作(3)結構化查詢語言介于關系代數和關系運算之間,具有關系代數和關系演

13、算雙重特點,如SQL。以上三種語言,在表達能力上是完全等價的。關系操作語言是一章高度非過程化語言,存取路徑的選擇由數據庫管理系統(tǒng)的優(yōu)化機制自動完成。 數據庫原理與應用(SQL Server)182.1.3 關系的完整性1. 實體完整性(Entity Integrity)規(guī)則2.1實體完整性規(guī)則 若屬性(一個或一組屬性) A是基本關系R的主屬性,則A不能取空值??罩?null value)指”不知道”或”不存在”的值。例如,在學生關系S(stno, stname, stsex)中,學號stno是這個關系的主碼,則stno不能取空值。又如在選課關系選課(學號, 課程號, 分數)中,”學號, 課程號

14、”為主碼,則”學號”和”課程號”兩個屬性都不能取空值。實體完整性規(guī)則說明如下:(1)實體完整性規(guī)則是針對基本關系而言。一個基本表通常對應現實世界的一個實體集。 數據庫原理與應用(SQL Server)192.1.3 關系的完整性(2)現實世界中的實體是可區(qū)分的,即它們具有某種唯一性標識。(3)相應地,關系模型中以主碼作為唯一性標識。(4)主碼中的屬性即主屬性不能取空值。2. 參照完整性(Referential Integrity)在現實世界中實體之間存在的聯(lián)系,在關系模型中都是用關系來描述,自然存在關系與關系間的引用,參照完整性一般指多個實體之間的聯(lián)系,一般用外碼實現,舉例如下?!纠?.3】

15、學生實體與學院實體可用以下關系表示,其中的主碼用下劃線標識。 數據庫原理與應用(SQL Server)202.1.3 關系的完整性學生(學號, 姓名, 性別, 出生日期, 專業(yè), 總學分, 學院號)學院(學院號, 學院名, 院長) 這兩個關系存在屬性的引用,學生關系引用了學院關系的主碼”學院號”,學生關系”學院號”必須是確實存在的學院的學院號,即學院關系有該學院的記錄。 【例2.4】 學生、課程、學生與課程之間的聯(lián)系可用以下3個關系表示,其中的主碼用下劃線標識。 學生(學號, 姓名, 性別, 出生日期, 專業(yè), 總學分) 課程(課程號,課程名,學分) 選課(學號,課程號,分數) 數據庫原理與應

16、用(SQL Server)212.1.3 關系的完整性這3個關系存在屬性的引用,選課關系引用了學生關系的主碼”學號”和課程關系的主碼”課程號”,選課關系”學號”和”課程號”的取值需要參照學生關系的”學號”取值和課程關系的”課程號”取值?!纠?.5】 學生關系的內部屬性之間存在引用關系,其中的主碼用下劃線標識。學生(學號, 姓名, 性別, 出生日期, 專業(yè), 總學分, 班長學號)在該關系中,”學號”屬性是主碼,”班長學號”屬性是所在班級班長的學號,它引用了本關系”學號”屬性,即”班長學號”必須是確實存在的學生學號。 數據庫原理與應用(SQL Server)222.1.3 關系的完整性定義2.5

17、設F是基本關系R的一個或一組屬性,但不是關系R的碼,Ks是基本關系S的主碼。如果F與Ks相對應,則稱F是R是的外碼(Foreign Key)。并稱基本關系R為參照關系(Referencing Relation),基本關系S為被參照關系(Referenced Relation)或目標關系(Target Relation)。關系R和S不一定是不同的關系。在例2.3中,學生關系的”學院號”與學院關系的主碼”學院號”相對應,所以,”學院號”屬性是學生關系的外碼,學生關系是參照關系,學院關系是被參照關系。在例2.4中,選課關系”學號”和學生關系的主碼”學號”相對應,選課關系”課程號”和課程關系的主碼”課

18、程號”相對應, 數據庫原理與應用(SQL Server)232.1.3 關系的完整性所以,”學號”屬性和”課程號”屬性是選課關系的外碼,選課關系是參照關系,學生關系和課程關系都是被參照關系。在例2.5中,”班長學號”屬性與本身的主碼”學號”屬性相對應,所以,”班長學號”屬性是學生關系的外碼,學生關系既是參照關系,也是被參照關系。外碼不一定要與相應的主碼同名,在例2.5中,學生關系的主碼名是”學號”,外碼名是”班長學號”。但在實際應用中,為了便于識別,當外碼與相應的主碼屬于不同的關系時,往往取相同的名字。參照完整性規(guī)則就是定義外碼與主碼之間的引用規(guī)則。 數據庫原理與應用(SQL Server)2

19、42.1.3 關系的完整性規(guī)則2.2 參照完整性規(guī)則 若屬性(或屬性組) F是基本關系R的外碼,它與基本關系S的主碼Ks相對應(基本關系R和S不一定是不同的關系),則對于R中每個元組在F上的值必須為 或者取空值(F的每個屬性值均為空值); 或者等于S中某個元組的主碼值。在例2.3中,學生關系每個元組的”學院號”屬性只能取下面兩類值:(1)空值,表示尚未給該學生分配學院;(2)非空值,被參照關系”學院號”中一定存在一個元組,它的主碼值等于該參照關系”學院號”中的外碼值。 數據庫原理與應用(SQL Server)252.1.3 關系的完整性3. 用戶定義完整性(User-defined Integ

20、rity)用戶定義的完整性是針對某一具體關系數據庫的約束條件,使某一具體應用涉及數據必須滿足語義要求。 用戶定義的完整性數據也稱為域完整性或語義完整性,通過這些規(guī)則限制數據庫只接受符合完整性約束條件的數據值,不接受違反約束條件的數據,從而保證數據庫的中數據的有效性和可靠性。 按應用語義,屬性數據有:(1)類型與長度限制。(2)取值范圍限制。 例如,學生關系中”性別”數據只能是男或女,選課關系中”成績”數據為1到100之間,等等。 數據庫原理與應用(SQL Server)262.2 關系代數關系代數是一種抽象的查詢語言,它用對關系的運算來表達查詢。關系代數是施加于關系上的一組集合代數運算,關系代

21、數的運算對象是關系,運算結果也是關系。關系代數中的操作可以分為兩類: (1)傳統(tǒng)的集合運算,如并、交、差、笛卡兒積。這類運算將關系看成元組的集合,運算時從行的角度進行。(2)專門的關系運算,如選擇、投影、連接、除。這些運算不僅涉及行而且也涉及到列。關系代數使用的運算符:(1)傳統(tǒng)的集合操作:U(并)、(差)、 (交)、 (笛卡兒積)。 數據庫原理與應用(SQL Server)272.2 關系代數(2)專門的關系操作: (選擇)、 (投影)、 (連接)、(除)。(3)比較運算符:(大于)、(大于等于)、(小于)、(小于等于)、(等于)、(不等于)。(4)邏輯運算符: (與)、 (或)、 (非)。

22、 數據庫原理與應用(SQL Server)282.2.1 傳統(tǒng)的集合運算傳統(tǒng)的集合運算有并、差、交和笛卡爾積運算,它們都是二目運算。設關系R和關系S具有相同的n目(即兩個關系都有n個屬性),且相應的屬性取自同一個域,t是元組變量,tR表示t是R的一個元組。以下定義并、差、交和笛卡爾積運算。1. 并(Union)關系R和關系S的并記為 ,即其結果仍為n目關系,由屬于R或屬于S的元組組成。 數據庫原理與應用(SQL Server)292.2.1 傳統(tǒng)的集合運算2. 差(Except)關系R和關系S的差記為 ,即其結果仍為n目關系,由屬于R且不屬于S的所有元組組成。 3. 交(Intersectio

23、n)關系R和關系S的交為 ,即 數據庫原理與應用(SQL Server)關系R和關系S的差記為 302.2.1 傳統(tǒng)的集合運算結果仍為n目關系,由既屬于R又屬于S的元組組成。關系的交可用差來表示,即4. 笛卡爾積(Cartesian Product)這里的笛卡爾積是廣義笛卡爾積,因為笛卡爾積的元素是元組。設n目和m目的關系R和S,它們的笛卡兒積是一個(n+m)目的元組集合。元組的前n列是關系R的一個元組,后m列是關系S的一個元組。若R有r個元組,S有s個元組,則關系R和關系S的笛卡兒積應當有rs個元組,記為RS,即 數據庫原理與應用(SQL Server)312.2.1 傳統(tǒng)的集合運算【例2.

24、6】 有2個關系R、S,如圖2.1所示,求以下各傳統(tǒng)的集合運算的結果。(1) (2) (3) (4)RS 數據庫原理與應用(SQL Server)322.2.1 傳統(tǒng)的集合運算 圖2.1 2個關系R、S解:(1) 由屬于R和屬于S的所有不重復的元組組成。(2) 由屬于R且不屬于S的所有元組組成。(3) 由既屬于R又屬于S的元組組成。(4) RS 為R和S的笛卡兒積,共有33=9個元組傳統(tǒng)的集合運算結果如圖2.2所示。 數據庫原理與應用(SQL Server)332.2.1 傳統(tǒng)的集合運算 圖2.2 傳統(tǒng)的集合運算結果 數據庫原理與應用(SQL Server)342.2.2 專門的關系運算專門的

25、關系運算有選擇、投影、連接和除等運算。在介紹專門的關系運算前,引入以下符號。(1)分量設關系模式為 ,它的一個關系設為R, 表示t 是R 的一個元組, 則 表示元組t 中屬性Ai 上的一個分量。(2)屬性組若 ,其中 是 中的一部分,則 稱A為屬性組或屬性列。 表示元組t 在屬性列A 上諸分量的集合。 則表示 中去掉 后剩余的屬性組。 數據庫原理與應用(SQL Server)352.2.2 專門的關系運算(3)元組的連接R 為 n目關系,S 為 m目關系, 稱為元組的連接(Concatenation)或元組的連接。(4)象集給定一個關系 ,Z和X為屬性組,當時,x在R中的象集(Images S

26、et)定義為 表示 中屬性組 上值為 的諸元組在 上分量的集合。 數據庫原理與應用(SQL Server)362.2.2 專門的關系運算【例2.7】 在關系R 中, Z和X 為屬性組, X包含屬性x1, x2, 包含屬性z1, z2,如圖2.3所示,求X 在 R中的象集。 圖2.3 象集舉例 數據庫原理與應用(SQL Server)372.2.2 專門的關系運算解:在關系 R中, X可取值 的象集為 的象集為 的象集為1. 選擇(Selection)在關系R中選出滿足給定條件的諸元組稱為選擇,選擇是從行的角度進行的運算,表示為 =t | tRF(t)=真其中F是一個邏輯表達式,表示選擇條件,取

27、邏輯值”真”或”假”,t表示R中的元組,F(t)表示R中滿足F條件的元組。 數據庫原理與應用(SQL Server)382.2.2 專門的關系運算邏輯表達式F的基本形式是其中 由比較運算符(、)和邏輯運算符(、 )組成, , 等是屬性名、常量或簡單函數,屬性名也可用它的序號來代替。2. 投影(Projection)在關系R中選出若干屬性列組成新的關系稱為投影,投影是從列的角度進行的運算,表示為其中 A為R的屬性列。 數據庫原理與應用(SQL Server)392.2.2 專門的關系運算【例2.8】 關系R如圖2.4所示,求以下選擇和投影運算的結果。(1)(2) 解:(1) 由R的C屬性值為8的

28、元組組成。(2) 由R的A、B屬性列組成。 數據庫原理與應用(SQL Server)402.2.2 專門的關系運算選擇和投影運算結果如圖2.5所示。 3. 連接(Join)連接也稱為連接,它是從兩個關系R和S的笛卡爾積中選取屬性值滿足一定條件的元組,記作R S 數據庫原理與應用(SQL Server)412.2.2 專門的關系運算其中A和B分別為R和S上度數相等且可比的屬性組,為比較運算符,連接運算從R和S的笛卡爾積RS中選取R關系在A屬性組上的值和S關系在B屬性組上的值滿足比較運算符的元組。下面介紹幾種常用的連接。(1)等值連接(Equijoin)為等號”=”的連接運算稱為“等值連接”,記作

29、R S等值連接從R和S的笛卡爾積RS中選取A B屬性值相等的元組 數據庫原理與應用(SQL Server)422.2.2 專門的關系運算(2)自然連接(Natural join)自然連接是除去重復屬性的等值連接,記作R S等值連接與自然連接的區(qū)別如下: 自然連接一定是等值連接,但等值連接不一定是自然連接。因為自然連接要求相等的分量必須是公共屬性,而等值連接相等的分量不一定是公共屬性。 等值連接不把重復的屬性去掉,而自然連接要把重復屬性去掉。一般連接是從行的角度進行計算,而自然連接要取消重復列,它同時從行和列的角度進行計算。 數據庫原理與應用(SQL Server)432.2.2 專門的關系運算

30、(3)外連接(Outer join)兩個關系R和S在做自然連接時,關系R中某些元組可能在S中不存在公共屬性上值相等的元組,造成R中這些元組被舍棄,同樣,S中某些元組也可能被舍棄。如果把舍棄的元組保存在結果關系中,而在其它屬性上填空值(Null),這種連接稱為全外連接(Full Outer Join),符號為R S.如果只把左邊關系R中舍棄的元組保留,這種連接稱為左外連接(Left Outer join 或Left join),符號為R S.如果只把右邊關系S中舍棄的元組保留,這種連接稱為右外連接(Right Outer join 或Right join),符號為R S. 數據庫原理與應用(SQ

31、L Server)442.2.2 專門的關系運算【例2.9】 關系R、S如圖2.6所示,求以下各個連接運算的結果。(1)R S(2)R S(3)R S(4)R S(5)R S(6)R S 數據庫原理與應用(SQL Server)452.2.2 專門的關系運算 圖2.6 關系R、S解:(1)R S 該連接由R的C屬性值大于S的D屬性值的元組連接組成。 數據庫原理與應用(SQL Server)462.2.2 專門的關系運算(2)R S該等值連接由R的B屬性值等于S的B屬性值的元組連接組成(3)R S 該自然連接由R的B屬性值等于S的B屬性值的元組連接組成,并去掉重復列。(4)R S 該左外連接取出

32、左邊關系R中舍棄的所有元組,用空值填充右邊關系S中的屬性,再把產生的元組添加到自然連接結果中。(5)R S 該右外連接取出右邊關系S中舍棄的所有元組,用空值填充左邊關系R中的屬性,再把產生的元組添加到自然連接結果中。 數據庫原理與應用(SQL Server)472.2.2 專門的關系運算(6)R S該全外連接既做左外連接又做右外連接,并把產生的元組添加到自然連接結果中。各個連接運算的結果如圖2.7所示。 數據庫原理與應用(SQL Server)482.2.2 專門的關系運算4. 除(Division)給定關系R(X,Y)和S(Y,Z),其中X、Y、Z為屬性組。R中的Y與S中的Y可以有不同的屬性

33、名,但必須出自相同的域集。R與S的除運算得到一個新的關系P(X),P是R中滿足下列條件的元組在X屬性列上的投影:元組在X上的分量值x的象集Yx包含S在Y上投影的集合。記作 RS=tr X | trR Y(S) Yx其中的Yx為x在R中的象集,x=trX。除運算是同時從行和列的角度進行的運算。 數據庫原理與應用(SQL Server)492.2.2 專門的關系運算【例2.10】關系R,S如圖2.8所示,求RS。 解:在關系 中,A可取值a, b, ca的象集為 數據庫原理與應用(SQL Server)502.2.2 專門的關系運算b的象集為c的象集為S在 上的投影為可以看出,只有a的象集 包含了

34、S在 上的投影,所以RS=a如圖2.9所示。 數據庫原理與應用(SQL Server)512.2.2 專門的關系運算【例2.11】 設有如圖2.10所示的學生課程數據庫,包括學生關系S(Sno, Sname, Sex, Age, Speciality),各屬性含義為學號、姓名、性別、年齡、專業(yè);課程關系C(Cno, Cname, Teacher),各屬性含義為課程號、課程名、教師;選課關系SC(Sno, Cno, Grade),各屬性含義為學號、課程號、成績;試用關系代數表示下列查詢語句,并給出(1)、(5)、(10)的查詢結果。(1)查詢”電子信息工程”專業(yè)學生的學號和姓名。(2)查詢年齡小

35、于22歲的女學生學號、姓名和年齡。(3)查詢選修了”1001”號課程的學號、姓名。(4)查詢選修了”1001”號課程或”2004”號課程的學號。 數據庫原理與應用(SQL Server)522.2.2 專門的關系運算(5)查詢未選修”1001”課程的學號、姓名。(6)查詢選修課程名為”數據庫原理與應用”的學號和姓名。(7)查詢選修”郭亞平”老師所授課程的學生姓名。(8)查詢”劉德川”未選修課程的課程號。(9)查詢”李莎”的”英語”成績。(10)查詢選修了全部課程的學號和姓名。 數據庫原理與應用(SQL Server)532.2.2 專門的關系運算 數據庫原理與應用(SQL Server)542

36、.2.2 專門的關系運算解:(1)查詢結果如圖2.11所示。 數據庫原理與應用(SQL Server)552.2.2 專門的關系運算(2)(3) S)(4)(5) S)查詢結果如圖2.12所示。 數據庫原理與應用(SQL Server)562.2.2 專門的關系運算(6) SC S)(7) SC S) 數據庫原理與應用(SQL Server)572.2.2 專門的關系運算(8) SC) (9) SC (10) 查詢結果如圖2.13所示 數據庫原理與應用(SQL Server)582.3 關系演算關系演算以數理邏輯中的謂詞演算為基礎,關系演算可分為元組關系演算和域關系演算,前者以元組為變量,后者

37、以域為變量。2.3.1 元組關系演算在抽象的在元組關系演算中,為了討論方便,先允許關系是無限的,然后作適當修改,保證關系演算中每一個公式表達的是有限關系。在元組關系演算系統(tǒng)中,稱 數據庫原理與應用(SQL Server)592.3.1 元組關系演算為元組演算表達式,其中t是元組變量, 是元組關系演算公式,簡稱公式,它是由原子公式和運算符組成。原子公式有下列3種形式:(1)R(t)R是關系名,t是元組變量,R(t)表示t是關系R的元組,關系R可表示為(2)tiuj:t和u都是元組變量,是算術比較運算符,該原子公式表示命題”元組t的第i個分量與元組u的第j個分量之間滿足關系”,例如,t4u5,表示

38、元組的t第4個分量大于元組u的第5個分量。 數據庫原理與應用(SQL Server)602.3.1 元組關系演算(3)t ic或cti這里c是一個常量,該原子公式表示命題”元組t的第i個分量與常量a之間滿足關系” ,例如,t2=6,表示元組的t第2個分量等于6。在公式中各種運算符的優(yōu)先級從高到低依次為:算術運算符、量詞(、)、邏輯運算符( 、)。其中,為存在量詞符號, 為全稱量詞符號。若元組演算公式中的一個元組變量前有存在量詞()和全稱量詞(),則稱該變量為約束元組變量,否則稱自由元組變量。關系代數的5種基本運算可以用元組演算表達式表示如下。 數據庫原理與應用(SQL Server)612.3

39、.1 元組關系演算(1)并RS=t | R(t)S(t)。(2)差R-S=t | R(t)S(t)。(3)笛卡爾積RS=t(r+s)|(u(r)(v(s)(R(u)S(v)t1=u1tr=urtr+1=v1tr+s=vs)其中t(r+s)表示t有r+s個屬性。(4)投影i1,ik(R)=t(k) | (u)(R(u)t1=ui1tk=uik)。 數據庫原理與應用(SQL Server)622.3.1 元組關系演算(5)選擇 =t | R(t)F其中F是F的等價表示形式。上面定義的關系演算允許出現無限關系,例如, 表示所有不屬于R的元組,有無限多個,必須排除這類無意義的表達式。為此引入元組關系公

40、式 的域,即 。 是所引用的所有值的集合,通常要進行安全限制,定義 是一個有限符號集。 數據庫原理與應用(SQL Server)632.3.1 元組關系演算【例2.12】 有兩個關系R和S,如圖2.14所示,求以下元組關系演算結果:R1=t | R(t)S(t)R2=t | (u)(S(t)R(u)t2 u3)R3=t | (u)(R(t)S(u)t1 4z10 數據庫原理與應用(SQL Server)702.3.2 域關系演算(2)R2=xyz | R(xyz)S(xyz)z=8(3)R3=xyz | (u)( v)(R(zxu)W(yv)uv解:(1)R1由R中第2列大于4、第3列小于10

41、的元組組成。(2)R2由R中第2列、大等于8的元組組成 數據庫原理與應用(SQL Server)712.3.2 域關系演算(3)R3由R中第2列、W中第1列、R中第1列組成,這些元組滿足條件:R中第3列小于W中第2列。域關系演算結果如圖3.17所示?!纠?.15】 設R和S分別是三元和二元關系,試把表達式: 數據庫原理與應用(SQL Server)722.3.2 域關系演算轉換成等價的:(1)中文查詢句子。(2)元組關系演算表達式。(3)域關系演算表達式。解:(1)中文查詢含義為:從R與S的笛卡爾積中選擇R的第2列與S的第1列相等或者R的第3列與S的第1列相等的元組,并投影R的第1列和S的第2

42、列。(2)元組關系演算表達式為t(2)|(u)(v)(R(u)S(v)t1=u1t2=v2(u2=v1u3=v1)。(3)域關系演算表達式為xv | (x)( u)(R(xyz)S(uv)(y=uz=u) 數據庫原理與應用(SQL Server)732.4 SQL簡介2.4.1 SQL語言分類通常將SQL語言分為以下4類。(1)數據定義語言(Data Definition Language, DDL)用于定義數據庫對象,對數據庫、數據庫中的表、視圖、索引等數據庫對象進行建立和刪除,DDL包括CREATE、ALTER、DROP等語句。(2)數據操縱語言(Data Manipulation Language, DML)用于對數據庫中的數據進行插入、修改、刪除等操作,DML包括INSERT、UPDATE、DELETE等語句。 數據庫原理與應用(SQL Server)742.4.1 SQL語言分類(3)數據查詢語言(Data Query Language, DQL)用于對數據庫中的數據進行查詢操作,例如用 SE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論