对象查询语言(OQL)的应用实例
一、绪论
两个多星期前,我的导师布置了一道作业,就是利用对象查询语言(OQL)对常规的SQL需求进行求解。而对于我一个在面向对象数据库方面,经验可谓无足轻重的新手来说,确实难以下手。不用说,我肯定在拿到题目的瞬间,就想到网上查看有没有类似的答案,可是也基本是瞬间让我倒吸了口冷水:目前有的大部分都是SQL语言的,而就连OQL方面的内容却也是零星散乱的,更加不要说是答案了。不过幸好,在经过两三天都苦熬到凌晨一、两点钟的情况下,自己对OQL有了基本的见解。在作业完成之后,也得到了导师的认可,所以我觉得有必要分享一下个人的解题思路和见解。
二、面向对象数据库设计过程
这里明明不是说该怎么解题吗,为什么提起面向对象数据库设计过程了呢?由于导师仅给了题目,而没有对对象数据库的结构和联系进行描述,也就是说解题的范围很广。所以,只有明确了对象查询语言(OQL)的应用,是在整个面向对象数据库设计过程的那一阶段,才能帮助我们更好地“凭空”造出一个对象数据库,进而更好地理解题目。
首先,对象数据库的设计过程分为五步走: 需求分析 -> 画对象联系图,即OR图 -> 建立模型 -> ADT建库 -> OQL数据操作 。整体来看,OQL数据操作的确与对象数据库的设计过程关系不大,但我此处申明的是:要先有库,才能查询。
三、题目与答案
.检索"英语"专业学生所学课程的信息,包括学号、姓名、课程名和分数。
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="李强");
对象查询语言(OQL)的应用实例的更多相关文章
- jhat中的OQL(对象查询语言)
http://blog.csdn.net/wanglha/article/details/40181767 jhat中的OQL(对象查询语言) 如果需要根据某些条件来过滤或查询堆的对象,这是可能的,可 ...
- Java虚拟机性能监测工具Visual VM与OQL对象查询语言
1.Visual VM多合一工具 Visual VM是一个功能强大的多合一故障诊断和性能监控的可视化工具,它集成了多种性能统计工具的功能,使用 Visual VM 可以代替jstat.jmap.jha ...
- JVM 对象查询语言(OQL)[转载]
最近生产环境出现一个很奇怪的问题,测试环境无法重现,本地直连生产无法重现.于是用上 jmap + Java VisualVM 的 OQL (Object Query Language) 分析问题. 关 ...
- ORM查询语言OQL
ORM查询语言(OQL)简介--高级篇(续):庐山真貌 相关文章内容索引: ORM查询语言(OQL)简介--概念篇 ORM查询语言(OQL)简介--实例篇 ORM查询语言(OQL)简介--高级篇:脱胎 ...
- JAVA之旅(十二)——Thread,run和start的特点,线程运行状态,获取线程对象和名称,多线程实例演示,使用Runnable接口
JAVA之旅(十二)--Thread,run和start的特点,线程运行状态,获取线程对象和名称,多线程实例演示,使用Runnable接口 开始挑战一些难度了,线程和I/O方面的操作了,继续坚持 一. ...
- Object.create() 的含义:从一个实例对象,生成另一个实例对象
出处:https://wangdoc.com/javascript/oop/object.html#objectcreate 生成实例对象的常用方法是,使用new命令让构造函数返回一个实例.但是很多时 ...
- JS中构造函数与原型对象的同名属性,实例会取哪一个
构造函数与原型对象的同名属性,实例会取哪一个? 看了下面的过程,再回忆JS高程3里关于这部分的示意图.实例my在new的时候,本身就获得了a属性,所以my.a是1,倘若在new的时候如果没有赋予a属性 ...
- python中类对象、实例对象、类属性、实例属性、类方法、实例方法、静态方法
类对象.类属性与实例对象.实例属性的区别 在Python中一切皆是对象,类是一个特殊的对象即类对象,描述类的属性称为类属性.类属性在内存中只有一份,在__init__外部定义. 通过类创建的对象称为实 ...
- OQL对象查询语言
在用mat工具分析内存使用情况查询OutOfMemory原因时,OQL会有很大帮助,所以先在这里总结一下. 基本语法: select <javascript expression to sele ...
随机推荐
- 《Spring Cloud微服务 入门 实战与进阶》
很少在周末发文,还是由于昨晚刚收到实体书,还是耐不住性子马上发文了. 一年前,耗时半年多的时间,写出了我的第一本书<Spring Cloud微服务-全栈技术与案例解析>. 时至今日,一年的 ...
- Django中的跨域请求问题
本文目录 一 同源策略 二 CORS(跨域资源共享)简介 三 CORS基本流程 四 CORS两种请求详解 五 Django项目中支持CORS 回到目录 一 同源策略 同源策略(Same origin ...
- #3144. 「APIO 2019」奇怪装置
#3144. 「APIO 2019」奇怪装置 题目描述 考古学家发现古代文明留下了一种奇怪的装置.该装置包含两个屏幕,分别显示两个整数 \(x\) 和 \(y\). 经过研究,科学家对该装置得出了一个 ...
- Appium+java ---- Intellij IDEA +genymotion安装配置
引用文章:https://www.cnblogs.com/kaola8023/p/8442686.html Intellij IDEA 中配置Android SDK File-Project Stru ...
- Selenium+java - 使用csv文件做数据驱动
前言 早期我们使用TestNG 来做数据驱动进行测试,测试数据是写在测试用例脚本中.这会使得测试脚本的维护工作量很大.因此我们可以将测试的数据和脚本分开. 而我们经常使用会使用csv文件来做为导出数据 ...
- 拎壶学python3-----(2)python之if语句用法
在生活中我们经常遇到各种选择,比如玩色子,猜大小,再比如选择未来另一半.python也经常会遇到这样的选择,这时候if语句显得尤为重要. 下边我们看一个简单的例子 如果是二选一怎么做呢?如下 如果多个 ...
- 百度API车牌识别——Restful方式
源码下载地址:https://download.csdn.net/download/redhat588/11798294 Delphi xe 10.3.2 for windows 7 环境编译通过! ...
- php捕获Fatal error错误与异常处理
php中的错误和异常是两个不同的概念. 错误:是因为脚本的问题,比如少写了分号,调用未定义的函数,除0,等一些编译语法错误. 异常:是因为业务逻辑和流程,不符合预期情况,比如验证请求参数,不通过就用 ...
- SpringBoot(16)—@ConditionalOnBean与@ConditionalOnClass
@ConditionalOnBean与@ConditionalOnClass 上一篇讲的@Conditional可以通过条件控制是否注入Bean,这篇讲下有关Bean其它几个常用的注解使用方式 @Co ...
- C# - 操作Word文档小实验
前言 本篇主要记录:VS2019 WinFrm桌面应用程序实现对Word文档的简单操作. 准备工作 搭建WinFrm前台界面 添加必要的控件,如下图 NuGet包管理器 安装Microsoft.Off ...