資料庫關系代數例題
Ⅰ 資料庫關系代數求最大值
填坑。
邏輯:
先篩選出所有3班的學生(後面說學生表都指的是這個篩選後的結果,不做贅述)。將這張表與自己內連接,篩選條件是左邊學生的成績小於右邊學生的成績,這樣得到的新的表中左邊就是」『存在另一個學生的成績比他好』的學生「,再用3班所有的學生表減去這個新得到的表,就是」『不存在另一個學生的成績更好』的學生「,也就是」成績最好的學生了「。
關系代數:
用來演示的資料庫:
很明顯,得到的結果跟預想中的一致,是Derta醬。也就說明我們的表達式沒有問題了。
Ⅱ SQL、關系代數練習
一、
--1.建立學生表Student,其中以學號為主碼,以系號為外碼,姓名不可以為空值,性別取值為「男」或「女」
CREATETABLEStudent
(
Sno INT,
Name VARCHAR(20) NOTNULL,
Gender CHAR(2),
Class VARCHAR(20),
Major VARCHAR(20),
Dno CHAR(2)
CONSTRAINTpk_Student_SnoPRIMARYKEY(Sno),
CONSTRAINTfk_Student_DnoFOREIGNKEY(Dno)REFERENCESDept(Dno),
CONSTRAINTchk_Student_GenderCHECK(GenderIN('男','女'))
)
--2.檢索與「王強」在同一個班級的學生的學號、姓名、性別
SELECTSno,Name,Gender
FROMStudent
WHEREClass=(='王強')
--3.檢索管理學院沒有選修「電子商務」課程的學生的學號、姓名、班級、專業
SELECTS1.Sno,Name,Class,Major
FROMStudentS1
JOINDeptD
ONS1.Dno=D.Dno
WHEREDname='管理學院'
ANDSnoNOTIN
( SELECTS2.SnoFROMStudyS2
JOINCourseC
ONS2.Cno=C.Cno
WHERESubject='電子商務')
--4.檢索選修了「C語言」且C語言考試成績高於這門課平均成績的學生的學號、姓名
SELECTS1.Sno,Name
FROMStudentS1
JOINStudyS2
ONS1.Sno=S2.Sno
JOINCourseC1
ONS2.Cno=C1.Cno
WHERESubject='C語言'
ANDScore>( SELECTAVG(Score)
FROMStudyS3
WHERES3.Cno=S2.Cno)
--5.在院系表(Dept)中插入一條記錄,系號為06,系名為「物理系」,電話為8470660
INSERTINTODempVALUES('06','物理系','84706600')
--6.將「資料庫原理」課程的學時改為64,學分改為4
UPDATECourse
SETTime=64,
Credit=4
WHERESubject='資料庫原理'
--7.建立由班級、學號、姓名、課程號、課程名、學分、成績七個數據項組成的視圖
CREATEVIEWVW_SC
AS
SELECTClass,Sno,Name,Cno,Subject,Credit,Score
FROMStudentS1
JOINStudyS2
ONS1.Sno=S2.Sno
JOINCourseC
ONS2.Cno=C.Cno
二、
2.
Ⅲ 資料庫的關系代數問題
[例]設教學資料庫中有3個關系:
學生關系S(SNO,SNAME,AGE,SEX)
學習關系SC(SNO,CNO,GRADE)
課程關系C(CNO,CNAME,TEACHER)
下面用關系代數表達式表達每個查詢語句。
(1) 檢索學習課程號為C2的學生學號與成績。
πSNO,GRADE(σ CNO='C2'(SC))
(2) 檢索學習課程號為C2的學生學號與姓名
πSNO,SNAME(σ CNO='C2'(SSC))
由於這個查詢涉及到兩個關系S和SC,因此先對這兩個關系進行自然連接,同一位學生的有關的信息,然後再執行選擇投影操作。
此查詢亦可等價地寫成:
πSNO,SNAME(S)(πSNO(σ CNO='C2'(SC)))
這個表達式中自然連接的右分量為"學了C2課的學生學號的集合"。這個表達式比前一個表達式優化,執行起來要省時間,省空間。
(3)檢索選修課程名為MATHS的學生學號與姓名。
πSNO,SANME(σ CNAME='MATHS'(SSCC))
(4)檢索選修課程號為C2或C4的學生學號。
πSNO(σ CNO='C2'∨CNO='C4'(SC))
(5) 檢索至少選修課程號為C2或C4的學生學號。
π1(σ1=4∧2='C2'∧5='C4'(SC×SC))
這里(SC×SC)表示關系SC自身相乘的乘積操作,其中數字1,2,4,5都為它的結果關系中的屬性序號。
希望能解決您的問題。