对象查询语言(OQL)的应用实例

1、绪论

  两个多星期前,个人导师布置了一道做业,就是利用对象查询语言(OQL)对常规的SQL需求进行求解。而对于我一个在面向对象数据库方面,经验可谓无足轻重的新手来讲,确实难如下手。不用说,我确定在拿到题目的瞬间,就想到网上查看有没有相似的答案,但是也基本是瞬间让我倒吸了口冷水:目前有的大部分都是SQL语言的,而就连OQL方面的内容却也是零星散乱的,更加不要说是答案了。不过幸亏,在通过两三天都苦熬到凌晨1、两点钟的状况下,本身对OQL有了基本的看法。在做业完成以后,也获得了导师的承认,因此我以为有必要分享一下我的的解题思路和看法。数据库

 

2、面向对象数据库设计过程

  这里明明不是说该怎么解题吗,为何提起面向对象数据库设计过程了呢?因为导师仅给了题目,而没有对对象数据库的结构和联系进行描述,也就是说解题的范围很广。因此,只有明确了对象查询语言(OQL)的应用,是在整个面向对象数据库设计过程的那一阶段,才能帮助咱们更好地“凭空”造出一个对象数据库,进而更好地理解题目。数据库设计

  首先,对象数据库的设计过程分为五步走: 需求分析  -> 画对象联系图,即OR图 ->   创建模型  -> ADT建库  -> OQL数据操做    。总体来看,OQL数据操做的确与对象数据库的设计过程关系不大,但我此处申明的是:要先有库,才能查询。spa

 

3、题目与答案

 

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="李强");
相关文章
相关标签/搜索