對象查詢語言(OQL)的應用實例


一、緒論

  兩個多星期前,我的導師布置了一道作業,就是利用對象查詢語言(OQL)對常規的SQL需求進行求解。而對於我一個在面向對象數據庫方面,經驗可謂無足輕重的新手來說,確實難以下手。不用說,我肯定在拿到題目的瞬間,就想到網上查看有沒有類似的答案,可是也基本是瞬間讓我倒吸了口冷水:目前有的大部分都是SQL語言的,而就連OQL方面的內容卻也是零星散亂的,更加不要說是答案了。不過幸好,在經過兩三天都苦熬到凌晨一、兩點鍾的情況下,自己對OQL有了基本的見解。在作業完成之后,也得到了導師的認可,所以我覺得有必要分享一下個人的解題思路和見解。

 

二、面向對象數據庫設計過程

  這里明明不是說該怎么解題嗎,為什么提起面向對象數據庫設計過程了呢?由於導師僅給了題目,而沒有對對象數據庫的結構和聯系進行描述,也就是說解題的范圍很廣。所以,只有明確了對象查詢語言(OQL)的應用,是在整個面向對象數據庫設計過程的那一階段,才能幫助我們更好地“憑空”造出一個對象數據庫,進而更好地理解題目。

  首先,對象數據庫的設計過程分為五步走: 需求分析  -> 畫對象聯系圖,即OR圖 ->   建立模型  -> ADT建庫  -> OQL數據操作    。整體來看,OQL數據操作的確與對象數據庫的設計過程關系不大,但我此處申明的是:要先有庫,才能查詢。

 

三、題目與答案

 

1.檢索"英語"專業學生所學課程的信息,包括學號、姓名、課程名和分數。
  SELECT S.student_number,S.
student_name,S.C.course_name,S.C.grade FROM student S WHERE S.M.major_name="英語";

2檢索”數據庫原理”課程成績高於90分的所有學生的學號、姓名、專業和分數。
  
SELECT S.student_number,S.student_name,S.M.major_name,S.C.grade FROM student S WHERE S.C.course_name="數據庫原理" AND S.C.grade>90;

3檢索不學課程號為“C123”課程的學生信息,包括學號,姓名和專業。
  SELECT S.student_number,S.student_name,S.M.major_name FROM student S WHERE S.student_number NOT IN ( SELECT S.student_number FROM S.course C WHERE C.course_number="C123");


4檢索沒有任何一門課程成績不及格的所有學生的信息,包括學號、姓名和專業。
  SELECT S.student_number,S.student_name,S.M.major_name FROM student S WHERE S.student_number NOT IN ( SELECT S.student_number FROM S.course C WHERE C.grade < 60);


5檢索至少選修了李強同學所選修的全部課程的學生姓名。
  SELECT DISTINCT S.student_number FROM student S WHERE S.C.course_number IN ( SELECT S.C.course_number FROM student S WHERE S.student_name="李強");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM