zoukankan      html  css  js  c++  java
  • 对象查询语言(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="李强");
  • 相关阅读:
    JavaWeb 输出九九乘法表,三角形,菱形
    模拟ATM机将输入的数据插入数据库
    JDBC连接数据库
    执行动态语句
    python深拷贝和浅拷贝
    redis数据库操作
    pymysql数据库操作
    linux 从Python 2.7升级至Python3.6.1
    模块---常用模块
    模块---安装模块
  • 原文地址:https://www.cnblogs.com/Raodi/p/11632346.html
Copyright © 2011-2022 走看看