數(shù)據(jù)庫原理及應(yīng)用——02.關(guān)系數(shù)據(jù)庫

1.關(guān)系數(shù)據(jù)結(jié)構(gòu)及形式化定義

1.關(guān)系

1.概述
單一的數(shù)據(jù)結(jié)構(gòu)——關(guān)系
現(xiàn)實世界的實體以及實體間的各種聯(lián)系均用關(guān)系來表示
邏輯結(jié)構(gòu)——二維表
從用戶角度,關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表
建立在集合代數(shù)的基礎(chǔ)之上
2.域,笛卡爾積,元組,基數(shù)
域是一組具有相同數(shù)據(jù)類型的值得集合。例如整數(shù),實數(shù),男和女......
給定一組域D1,D2,D3.....Dn.這些域中可以有相同的(意思就是D1可以是整數(shù)域,D2也可以是整數(shù)域)。
那么D1,D2,D3.....Dn的笛卡爾積全部(d1,d2,d3......dn)構(gòu)成的集合

笛卡爾積

笛卡爾積中的每一個元素(d1,d2,d3......dn)叫做元組
笛卡爾積元素(元組)中的每一個元素d1叫做分量
若D1,D2,......Dn是有限集合,其中包含的元素個數(shù)為M1,M2,......Mn個,那么M1M2......Mn就是這個笛卡爾積的基數(shù)(其實就是這個笛卡爾積一共有多少個元素*)

舉個例子來說明就是:令
Teacher=(張教授,李教授)
profession=(計算機專業(yè),網(wǎng)絡(luò)專業(yè))
Student=(小明,小葉)
上述的Teacher就相當(dāng)于是D1,profession就相當(dāng)于是D2,Student就相當(dāng)于是D3
那么他們的笛卡爾積中的元素一共有2×2×2=8個,也就是它的基數(shù)為8。例如(張教授,計算機專業(yè),小明),(李教授,計算機專業(yè),小葉)都是其中的一個元組。而在(張教授,計算機專業(yè),小明)這個元組中,張教授,計算機專業(yè),小明這三個元素就叫做分量。

笛卡爾積可以表示成一個二維表,表中的每一列對應(yīng)一個域,每一行對應(yīng)一個元組。如下圖:

笛卡爾積表示成二維表

3.關(guān)系,元組,屬性,候選碼
D1×D2×......×Dn的子集叫做在D1,D2,......,Dn上的關(guān)系,表示為R(D1,D2,......,Dn)
其中R關(guān)系名,n是關(guān)系的目或度
個人理解:關(guān)系是對于來說的,而元組是對于笛卡爾積來說的。元組就相當(dāng)于笛卡爾積的其中一個元素,而關(guān)系是對于構(gòu)成笛卡爾積的那幾個域來說。
關(guān)系中的每個元素叫做關(guān)系中的元組,用t表示
當(dāng)n=1時,關(guān)系叫做單元關(guān)系或者一元關(guān)系;當(dāng)n=2時,關(guān)系叫做二元關(guān)系
關(guān)系也是一個二維表,每一行對應(yīng)一個元組,每一列對應(yīng)一個域,如下圖:
關(guān)系的二維表

屬性:關(guān)系中不同列可以對應(yīng)相同的域,為了加以區(qū)分,必須給每一列起一個名字,稱為屬性,n元關(guān)系必有n個屬性。如上圖的SUPERVISOR,SPECIALITY就是屬性名
候選碼:如果關(guān)系中的某一屬性組的值能夠唯一地標(biāo)識一個元祖t,那么這個屬性組稱為候選碼。在上圖中,SPECIALITY列下的值都是一樣的不能區(qū)分到底是哪一行,就比如我告訴你我要找一個信息專業(yè)的學(xué)生,但是這個專業(yè)的學(xué)生肯定不止一個,所以你就無法找到具體哪個學(xué)生。
全碼:當(dāng)全部的屬性組都能夠唯一地標(biāo)識一個元祖t,那么這個關(guān)系模式的全部屬性組都是候選碼,叫做全碼。
主碼:若一個關(guān)系有多個候選碼,那么選定其中的一個叫做主碼。
主屬性:候選碼中的幾個屬性叫做主屬性,而不在候選碼里面的就叫做非主屬性或非碼屬性
4.三類關(guān)系
笛卡爾積沒有實際的意義,只有笛卡爾積的某個子集才具有真正的意義
(1).基本關(guān)系:實際存在的表,是實際存儲數(shù)據(jù)的邏輯表示
(1).查詢表:查詢結(jié)果對應(yīng)的表
(1).視圖表:由基本表或其它視圖表導(dǎo)出的表,是虛表,不對應(yīng)實際存儲的數(shù)據(jù)。
基本關(guān)系的性質(zhì):
(1).列是同性質(zhì)的。
(2).不同的列可以出自同一個域
(3).列的順序無所謂,可以隨意交換
(4).任意兩個元組的候選碼不能相同
(5).行的順序無所謂,可以隨意交換
(6).分量必須取原子值(也就是表中不能還有表)

2.關(guān)系模式

1.概述
關(guān)系模式是型,關(guān)系是值。關(guān)系模式是對關(guān)系的描述(元組集合的結(jié)構(gòu),屬性間的數(shù)據(jù)依賴關(guān)系集合等等)。
2.定義
R(U,D,DOM,F(xiàn))
其中,R為關(guān)系名,U是組成該關(guān)系的屬性名的集合,D是屬性組U中屬性所來自的域,DOM是屬性向域的映象集合,F(xiàn)是屬性間的數(shù)據(jù)依賴關(guān)系集合

例如,導(dǎo)師和研究生出自同一個域——人,取不同的屬性名,并在模式中定義屬性向域的映象,即說明他們分別出自哪個域:DOM(SUPERVISORPERSON)=DOM(POSTGRADUATE-PERSON)=PERSON

關(guān)系模式通??梢院営洖?strong>R(U)或者R(A1,A2,...,An)
3.關(guān)系模式與關(guān)系
關(guān)系模式
對關(guān)系的描述,是靜態(tài)的,穩(wěn)定的。比如我們看到的一張二維表的表頭,即有哪些列構(gòu)成,每個列的名稱,類型啊長度等等;
關(guān)系
關(guān)系模式在某一時刻的狀態(tài)或內(nèi)容,是動態(tài)的隨時間不斷變化的。關(guān)系是一張二維表的具體數(shù)據(jù),除去表頭外各數(shù)據(jù)間的聯(lián)系。由于二維表中是數(shù)據(jù)會時常修改,所以呈現(xiàn)出動態(tài)。

3.關(guān)系數(shù)據(jù)庫

1.定義
在給定的一個應(yīng)用領(lǐng)域中,所有關(guān)系的集合構(gòu)成一個關(guān)系數(shù)據(jù)庫。也就是許多張表構(gòu)成的集合。
2.關(guān)系數(shù)據(jù)庫的型和值
關(guān)系數(shù)據(jù)庫的型:關(guān)系數(shù)據(jù)庫模式。
關(guān)系數(shù)據(jù)庫的值:關(guān)系模式在某一時刻對應(yīng)的關(guān)系的集合,簡稱為關(guān)系數(shù)據(jù)庫。

2.關(guān)系操作

1.基本關(guān)系操作

1.查詢:選擇,投影,連接,除,并,交,差
2.數(shù)據(jù)更新:增加,刪除,修改
查詢的表達能力是其中最主要的部分。
選擇,投影,并,差,笛卡爾積是5種基本操作

2.關(guān)系數(shù)據(jù)庫的語言分類

1.關(guān)系代數(shù)語言
用關(guān)系的代數(shù)語言來表達查詢要求ISBL
2.關(guān)系演算語言
用謂詞來表達查詢要求:
-元組關(guān)系演算APLHA,QUEL
-域關(guān)系演算QBE
3.具有關(guān)系代數(shù)和關(guān)系演算雙重特點的語言SQL

3.關(guān)系的完整性

1.關(guān)系完整性的三類約束

1.實體完整性和參照完整性:
關(guān)系模型必須滿足的完整性約束條件稱為關(guān)系的兩個不變性,應(yīng)該由關(guān)系系統(tǒng)自動支持。
2.用戶定義的完整性:
特定的應(yīng)用領(lǐng)域需要遵循的約束條件

2.實體完整性

若屬性A是基本關(guān)系R的主屬性,則屬性A不能取空值。因為現(xiàn)實世界中的各個實體是可以區(qū)分的,即他們具有某種唯一標(biāo)識,而主碼中的主屬性就是這些唯一標(biāo)識,所以不能取空。

3.參照完整性

1.關(guān)系間的引用
例如有學(xué)生和專業(yè)兩個實體:
學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡),專業(yè)(專業(yè)號,專業(yè)名)
學(xué)生關(guān)系引用了專業(yè)關(guān)系的主碼—專業(yè)號,所以學(xué)生關(guān)系中的專業(yè)號必須是確實存在的專業(yè)的專業(yè)號。
另外,還有:

學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡)
課程(課程號,課程名,學(xué)分)
選修(學(xué)號課程號,成績)

2.外碼
如果F是基本關(guān)系R的一個或一組屬性,但不是關(guān)系R的碼。如果F與基本關(guān)系S的主碼Ks相對應(yīng),則稱F是基本關(guān)系R的外碼。R被稱為參照關(guān)系,S被稱為被參照關(guān)系,目標(biāo)關(guān)系。
例如:
學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡),專業(yè)(專業(yè)號,專業(yè)名)
其中,專業(yè)號是學(xué)生關(guān)系的外碼。學(xué)生關(guān)系是參照關(guān)系,專業(yè)關(guān)系是被參照關(guān)系。
另外,如下圖:

實體內(nèi)部外碼的引用

學(xué)號是主碼,班長是外碼,它引用的并不是其它關(guān)系而是自身,此時,學(xué)生關(guān)系既是參照關(guān)系又是被參照關(guān)系
因此,對于外碼這個概念來說,關(guān)系R和關(guān)系S不一定是不同的關(guān)系,但是目標(biāo)關(guān)系S的主碼一定要和參照關(guān)系的外碼定義在同一個域上。外碼不一定要和主碼同名,當(dāng)外碼與相應(yīng)的主碼不同關(guān)系時,往往取相同的名字,就如上面的學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡),專業(yè)(專業(yè)號,專業(yè)名)就有相同的名字。
3.參照完整性規(guī)則
如果屬性F是基本關(guān)系R的外碼,并且它和基本關(guān)系S的主碼Ks相對應(yīng)(R和S不一定是不同關(guān)系),那么對于R中的每個元組在F上的值必須為空值或者等于S中某個元祖的主碼值。

4.用戶自定義的完整性

  • 針對某一具體關(guān)系數(shù)據(jù)庫的約束條件,反映某一個具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求。
  • 關(guān)系模型應(yīng)提供定義和檢驗這類完整性的機制,以便用統(tǒng)一的系統(tǒng)方法來處理他們,而不要由應(yīng)用程序來承擔(dān)這一功能。

例如:課程(課程號,課程名,學(xué)分)

  • 課程號屬性必須取唯一值
  • 非主屬性課程名也不能取空值
  • 學(xué)分只能取正整數(shù),且只能{1,2,3,4}其中之一

4.關(guān)系代數(shù)

1.概述

關(guān)系代數(shù)運算符

關(guān)系代數(shù)運算符

2.傳統(tǒng)的集合運算

在做關(guān)系運算的時候,兩個關(guān)系要屬于同一類,例如學(xué)生這個關(guān)系和課程這個關(guān)系不能進行并操作運算。即需要滿足以下條件:

  • 具有相同的目(即兩個關(guān)系都有n個屬性)
  • 相同的屬性取自同一個域

現(xiàn)在有R和S兩個關(guān)系進行如下運算,得到的結(jié)果如下所示:
1.并:屬于R或者屬于S
2.差:屬于R但是不屬于S
3.交:既屬于R又屬于S
4.笛卡爾積
如果是笛卡爾積,那么關(guān)系的目可以不同,就是從R中取出一個元素和S中取出一個元素構(gòu)成新的一個元素。

笛卡爾積

3.專門的關(guān)系運算

1.一些記號

專門的關(guān)系運算中的幾個記號

關(guān)系

例如,在上圖中,整個表就是一個關(guān)系R(SUPERVISOR,SPECIALITY,POSTGRADUATE),而第一行(張清玫 信息專業(yè) 李勇)就是R中的一個元祖t,所以t[SUPERVISOR]=張清玫

專門的關(guān)系運算中的幾個記號

例如,還是在上圖中,A={SUPERVISOR,SPECIALITY},而第一行(張清玫 信息專業(yè) 李勇)就是R中的一個元祖t,所以t[A]=(張清玫,信息專業(yè)),A拔就={POSTGRADUATE}

專門的關(guān)系運算中的幾個記號

專門的關(guān)系運算中的幾個記號

象集可以理解為在X屬性上指定一個值例如X=2,把X=2的元組取出來,剩下的就是X的象集。如下圖中的例子:


象集

Student

Course

SC

如上面有三張表分別為:學(xué)生關(guān)系,課程關(guān)系,選修關(guān)系
2.選擇

  • 選擇又稱為限制,它是單目操作,不像加法等需要兩個或以上的關(guān)系來操作
  • 含義:在關(guān)系R中選擇出符合給定條件F(使邏輯表達式F為真)的諸個元組

例如:

選擇例1

選擇例2

3.投影
含義:從R中取出若干屬性列組成新的關(guān)系
例如,將Student關(guān)系中的學(xué)生姓名和學(xué)生所在系這兩個屬性列取出來,表達式如下:
投影表達式

結(jié)果為:
投影例1

4.連接
含義:從兩個關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組
連接

等值連接

等值連接

自然連接
自然連接

例如,現(xiàn)在有下面兩個關(guān)系R和S:

連接例1

一般連接的結(jié)果:
一般連接

等值連接的結(jié)果:
等值連接

自然連接的結(jié)果:
自然連接

外連接
外連接

關(guān)系R和S的外連接結(jié)果如下:
外連接結(jié)果

如上圖,左外連接就是保留R中本來要丟棄的,右外連接就是保留S中本來要丟棄的。因此,左外連接就是在外連接的基礎(chǔ)之上去掉最后一行(S),右外連接就是在外連接的基礎(chǔ)之上去掉倒數(shù)第二行(R)。
5.除

例如:
除例1

首先,R和S具有相同的屬性列B和C。在R中,A的取值有a1,a2,a3,a4四種選擇,當(dāng)去a1時,象集為b1,c2;b2,c3;b2,c1,可以發(fā)現(xiàn)這些象集包含了關(guān)系S在B和C屬性列上的全部值,因此a1就是R除S的結(jié)果。

5.關(guān)系演算

  • 關(guān)系演算以數(shù)理邏輯中的謂詞演算為基礎(chǔ)
  • 按照謂詞變元不同可以進行分類:
    1.元組關(guān)系演算:以元組變量為謂詞變元的基本對象,元組關(guān)系演算語言ALPHA
    2.域關(guān)系演算:以域變量為謂詞變元的基本對象,域關(guān)系演算語言QBE

1.元組關(guān)系演算語言ALPHA

由E.F.Codd提出,語句可以分為兩大類:

  • 檢索語句:GET
  • 更新語句:PUT,HOLD,UPDATE,DELETE,DROP

1.檢索操作

檢索操作的語句格式

簡單檢索GET (工作空間名) (表達式1)
例如:查詢所有被選修的課程號碼:GET W (SC.Cno);查詢所有學(xué)生的數(shù)據(jù):GET W (Student)

限定檢索GET (工作空間名) (表達式1) :條件
例如:查詢信息系(IS)中年齡小于20歲的學(xué)生的學(xué)號和年齡:GET W (Student.Sno,Student.Sage):Student.Sdept='IS'ΛStudent.Sage<20

帶排序的檢索:查詢計算機科學(xué)系(CS)學(xué)生的學(xué)號,年齡,結(jié)果按照年齡降序排列:GET W (Student.Sno,Student.Sage):Student.Sdept='CS' DOWN Student.Sage
帶定額的檢索:取出一個信息系學(xué)生的學(xué)號:GET W (1) (Student.Sno):Student.Sdept='IS'查詢信息系年齡最大的三個學(xué)生的學(xué)號及其年齡,結(jié)果按照年齡降序排序:GET W (3) (Student.Sno,Student.Sage):Student.Sdept='IS'Λ DOWN Student.Sage

用元組變量的檢索
元組變量的含義:表示可以在某一關(guān)系范圍內(nèi)變化(也稱為范圍變量)
元組變量的用途簡化關(guān)系名;操作條件中使用量詞時必須用到元組變量
定義元組變量:格式:RANGE 關(guān)系名 變量名 (注意:一個關(guān)系可以設(shè)置多個元組變量)

存在量詞?的檢索:查詢至少選修一門其先行課為6號課程的學(xué)生名字
RANGE Course CX
SC SCX
GET W (Student.Sname):?SCX(SCX.Sno=Student.Sno)Λ?CX(CX.Cno=SCX.CnoΛCX.Pcno='6')

帶有多個關(guān)系的表達式的檢索:查詢成績?yōu)?0分以上的學(xué)生名字與課程名字
RANGE SC SCX
GET W (Student.Sname,Course.Cname):?SCX(SCX.Grade>=90ΛSCX.Sno=Student.SnoΛSCX.Cno=Course.Cno)

全稱量詞?的檢索:查詢不選1號課程學(xué)生的名字
RANGE SC SCX
GET W (Student.Sname):?SCX(SCX.Sno≠Student.SnoVSCX.Cno≠'1')
這里的意思就是選擇不選一號課程的學(xué)生的名字或者你選了1號課程但是不在我的學(xué)生名單里面,二者中的一個都滿足條件
存在量詞表示:
RANGE SC SCX
GET W (Student.Sname):┐?SCX(SCX.Sno=Student.SnoΛSCX.Cno='1')
?任意┐?不存在雖然字面意思不同,但表達的意思都屬于全稱量詞,這里的意思就是不存在選一號課程的在我的學(xué)生名單里面的學(xué)生。
兩種量詞的檢索:查詢選修了全部課程的學(xué)生姓名
RANGE Course CX
SC SCX
GET W (Student.Sno):? CX ?SCX (SCX.Sno=Student.SnoΛSCX.Cno=CX.Cno)

蘊含的檢索:查詢最少選修200215122學(xué)生所選課程的學(xué)號
RANGE Course CX
SC SCX
SC SCY
GET W (Student.Sno):? CX (?SCX (SCX.Sno='200215122'ΛSCX.Cno=CX.Cno) —> ?SCY(SCY.Sno=Student.SnoΛSCY.Cno=CX.Cno))
箭頭的前半句描述的是"標(biāo)準"學(xué)生也就是學(xué)號為200215122的學(xué)生SCX,后半句描述的就是我要尋找的學(xué)生SCY

聚集函數(shù)(內(nèi)置函數(shù),可以簡化一些操作):

關(guān)系演算中的聚集函數(shù)

例如:
(1).查詢學(xué)生所在系的數(shù)目:GET W (COUNT(Student.Sdept))COUNT函數(shù)在計數(shù)時會自動排除重復(fù)值
(2).查詢信息系學(xué)生的平均年齡:GET W (AVG(Student.Sage):Student.Sdept='IS')

簡單來說其實就是表達式1(第一個括號)里面寫的是最后要得到的屬性組,后面的是判斷條件,DWON|UP后面的就是指排序的關(guān)鍵字(DOWN降序UP升序)

2.更新操作

  • 修改操作
  • 插入操作
  • 刪除操作

修改操作:(1).用HOLD語句將要修改的元組從數(shù)據(jù)庫中讀取到工作空間中:HOLD 工作空間名 (表達式1) [:操作條件]HOLD語句是帶上并發(fā)控制的GET語句。(2).用宿主語言修改工作空間中元組的屬性。(3).用UPDATE語句將語句修改后的元組送回數(shù)據(jù)庫中:UPDATE 工作空間名
例如:把200215121學(xué)生從計算機系轉(zhuǎn)到信息系HOLD W (Student.Sno,Student.Sdept):Student.Sno='200215121' (從Student關(guān)系中讀出95007學(xué)生的數(shù)據(jù)) MOVE 'IS' TO W.Sdept (用宿主語言進行修改) UPDATE W (把修改后的元組送回到Student關(guān)系)

插入操作:(1).用宿主語言在工作空間中建立新的元組。(2).用PUT語句把該元組存入指定的關(guān)系中:PUT 工作空間名 (關(guān)系名)PUT語句只對一個關(guān)系操作,關(guān)系操作中的聚集函數(shù)
例如:學(xué)校新開設(shè)了一門2學(xué)分的課程"計算機組織與結(jié)構(gòu)",其課程號為8,直接先行課為6號課程,插入該課程元組:MOVE '8' TO W.Cno MOVE '計算機組織與結(jié)構(gòu)' TO W.Cname MOVE '6' TO W.Cpno MOVE '2' TO W.Ccredit PUT W (Course)

刪除操作:(1).用HOLD語句將要刪除的元組從數(shù)據(jù)庫中讀取到工作空間中:(2).用DELETE語句刪除該元組:DELETE 工作空間名
例如:200215125學(xué)生因某些原因退學(xué),刪除該學(xué)生元組:HOLD W (Student):Student.Sno=‘200215125’ DELETE W
將學(xué)號200215121改為200215126:HOLD W (Student):Student.Sno='200215121' DELETE W MOVE '200215126' TO W.Sno MOVE '李勇' TO W.Sname MOVE '男' TO W.Ssex MOVE '20' TO W.Sage MOVE 'CS' TO W.Sdept PUT W (Student)
刪除全部學(xué)生:HOLD W (Student) DELETE W為保證參照完整性,刪除Student中的元組時要對應(yīng)地刪除SC中的元組:HOLD W (SC) DELETE W

總結(jié):
檢索操作GET 工作空間名 [(定額)] (表達式1) [:操作條件][DOWN|UP 表達式2]
插入操作:建立一個新的元組(直接使用MOVE語句給各屬性賦值)——PUT語句放入
修改操作HOLD取出元組數(shù)據(jù)——MOVE語句修改屬性——UPDATE把修改完的元組重新放入關(guān)系中
刪除操作HOLD取出元組數(shù)據(jù)——DELETE語句刪除元組

2.域關(guān)系演算語言QBE

  • 一種典型的域關(guān)系演算語言,由M.M.Zloof提出,以元組變量的分量即域變量作為謂詞變元的基本對象。
  • 是一種基于屏幕表格的查詢語言;查詢要求:以填寫表格的方式構(gòu)造查詢;用示例元素(域變量)來表示查詢結(jié)果可能的情況;查詢結(jié)果以表格形式顯示。

1.QBE的操作框架

QBE的操作框架

2.檢索操作

簡單查詢:求信息系全體學(xué)生的姓名
(1).用戶提出要求
(2).屏幕顯示空白表格

空白表格

(3).用戶在最左邊一欄輸入要查詢的關(guān)系名Student
輸入關(guān)系名

(4).系統(tǒng)顯示該關(guān)系的全部屬性名
顯示屬性名

(5).用戶在上面構(gòu)造查詢要求
構(gòu)造查詢要求

李勇是示例元素,即域變量
(6).屏幕顯示查詢結(jié)果
顯示查詢結(jié)果

構(gòu)造查詢的幾個要素

  • 示例元素,即域變量,一定要加下劃線(示例元素是這個域中可能的一個值,它不必是查詢的結(jié)果)。
  • 打印操作符P,實際上是在屏幕上顯示。
  • 查詢條件:可以使用運算符=,<,>,...,=可以省略。

例如:

查詢?nèi)w學(xué)生的全部數(shù)據(jù):
全體學(xué)生的全部數(shù)據(jù)
或者
顯示全部數(shù)據(jù)

條件查詢:求年齡大于19歲的學(xué)生的學(xué)號:

年齡大于19歲的學(xué)生的學(xué)號

求計算機科學(xué)系年齡大于19歲的學(xué)生的學(xué)號:
兩個條件寫在同一行
或者
兩個條件寫在不同行

查詢既選修1號課程又選修2號課程的學(xué)生的學(xué)號(條件查詢—與條件):
與條件

查詢計算機科學(xué)系的或者年齡大于16的學(xué)生的學(xué)號(條件查詢—或條件):
或條件
注意這里的Sno屬性下的兩個示例元素并不相同,如果相同那就是必須同時滿足計算機科學(xué)系和年齡大于19這兩個條件了。
查詢選修1號課程的學(xué)生姓名(條件查詢—多表連接)
多表連接

查詢沒有選修1號課程的學(xué)生的姓名(條件查詢—非條件)
非條件

查詢有兩個人以上選修的課程號:
有兩個人以上選修的課程號

QBE中的聚集函數(shù):
QBE中的聚集函數(shù)

例如:查詢信息系學(xué)生的平均年齡:
聚集函數(shù)—AVG

查詢結(jié)果排序:

  • 升序:在對應(yīng)列中填入AO.
  • 降序:在對應(yīng)列中填入DO.
  • 多列排序:用AO(i).DO(i).表示,i值越小,優(yōu)先級越高(所謂的優(yōu)先級就是指第一優(yōu)先級碰到相同的時候看第二優(yōu)先級的屬性)

例如:對全體男生的姓名,要求查詢結(jié)果按照所在系升序,對相同系的學(xué)生按照年齡降序排序。
查詢結(jié)果排序

3.更新操作

修改操作(U):例如把200215121學(xué)生的年齡改成18歲:

修改操作1
或者將操作符U放在關(guān)系名上
修改操作2
或者把200215121學(xué)生的年齡增加一歲
操作修改3

將計算機系的所有學(xué)生的年齡都增加一歲:
修改操作

插入操作(I):例如把信息系女生200215701,姓名張三,年齡17存入數(shù)據(jù)庫中:

插入操作

刪除操作(D):例如刪除學(xué)生200215089:

刪除操作

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、關(guān)系數(shù)據(jù)理論 1.關(guān)系模式的形式化定義 R(U, D, DOM, F) R:關(guān)系名,是符號化的元組語義...
    筱__閱讀 1,040評論 0 0
  • 數(shù)據(jù)字典 數(shù)據(jù)庫系統(tǒng)中存放三層結(jié)構(gòu)定義的數(shù)據(jù)庫稱為數(shù)據(jù)字典(DD),對數(shù)據(jù)庫的操作都要通過DD才能實現(xiàn)。DD系統(tǒng)中...
    panda_say閱讀 1,199評論 0 6
  • 作為一枚Java后端開發(fā)者,數(shù)據(jù)庫知識必不可少,對數(shù)據(jù)庫的掌握熟悉度的考察也是對這個人是否有扎實基本功的考察。特別...
    丶Orz丶閱讀 557評論 0 0
  • 1).創(chuàng)建數(shù)據(jù)庫 create database學(xué)生選課數(shù)據(jù)庫 2).創(chuàng)建四張表 Create table Stu...
    blvftigd閱讀 1,684評論 0 0
  • 今天,媽媽把我送到幼兒園里去看望老師了。在幼兒園里,我當(dāng)了一回小老師,我?guī)兔ΡO(jiān)督學(xué)前班的小同學(xué)聽寫,給他們...
    楊焯閱讀 97評論 0 0

友情鏈接更多精彩內(nèi)容