面向对象查询语言
演绎面向对象数据库及其查询语言

能 有 环 ) 的编 码 、 合 的 操 作 等 , 得 查 图 集 使
I 言具有三个基本性质 : QI 语 ① 它 是 基 于 规 则 的 . 大 多 数 基 于 规 是 则 的 逻 辑 数 据 语 言. 其 是 C 尤 OL 在
面 向 对 象 数 据 库 系 统 将 面 向 对 象 的 询语 言 表 达 能 力 增 强 。
研究结合起来 , 以复 杂 对 象 建 模 和 数 据 抽 强 了对 客 观 世 界 的模 拟 能 力 。② 封 装 性 屏 类 型 检 查 , 可 以 控 制 指 针 的 使 用 。@ 因
象能力为核心 , 以基 于 规 则 的 ((D ) B查 询 蔽 了实 现 细 节 和 复 杂 性 , 低 了数 据 库 应 在 严 格 表 达 数 据 库 操 作 所 必 须 的 性 质 基 ) 降
演 绎 数 据 库 ( D 就 是 将 人 工 智 能 大 多 数 纯 粹 的 面 向 对 象 数 据 库 在 商 业 性 具 有 程 序 设 计 的 强 类 型 机 制 , 在 其 他 语 D B) 这 中 的 知 识 及 其 推 理 机 制 引 入 传 统 数 据 库 应 用 中遇 到 了 困难 。 言 中 是 不 具 备 的 , B n C lo 如 a — i n提 出 的对 h
便 于 理 论 研 究 . 特 点 是 能 处 理 大 量 数 基 (D 是 用 递 归 的 Ho n 子 句 来 表 示 。 言 的 模 型 在 I 模 型 基 础 上增 加 了两 方 其 I B) r QI 据, 备逻 辑推 理能 力 , 具 比视 图 表 示 能 力 虽 然 面 向对 象 数 据 库 的 特 性 已 经 标 准 化 面 内容 : 法 和 表 ( I T) 型 。 方 法 是 满 方 IS 类 强 而 且能 处 理 递 归定 义 。逻 辑 语 言 具 有 非 了 。 他 们 没 有 一 般 可 按 受 的 准 确 模 型 。 足 某 一 类 型 约 束 的 函 数 , 可 以 以 内 涵 或 但 它
数据库技术及应用考试

数据库技术及应用考试(答案见尾页)一、选择题1. 数据库技术的基础是什么?A. 关系模型B. 面向对象模型C. 逻辑模型D. 结构模型2. 关系数据库中,哪一种数据结构支持高并发读写?A. 表关系模型B. 面向对象模型C. 文档关系模型D. 键值对模型3. 在数据库设计中,哪一个术语描述了表之间的关系?A. 结构定义B. 数据字典C. 模式D. 结构视图4. 数据库管理系统的主要功能包括哪些?A. 数据定义B. 数据查询C. 数据更新D. 数据控制5. 以下哪个不是关系型数据库的术语?A. 表B. 列C. 行D. 域6. 在SQL中,用于数据查询的命令是?A. SELECTB. INSERTC. UPDATED. DELETE7. 在数据库系统中,哪一个概念描述了数据的逻辑结构?A. 存储模式B. 内模式C. 外模式D. 全局模式8. 数据库管理系统通常提供的两种数据模型是什么?A. 关系模型和层次模型B. 关系模型和网状模型C. 关系模型和层次模型D. 关系模型和网状模型9. 在数据库应用开发中,哪一个步骤不属于需求分析阶段?A. 需求收集B. 需求分析C. 需求规格说明书编写D. 需求评审10. 在数据库性能优化中,哪一个策略通常不适用于数据库分区?A. 负载均衡B. 分区键选择C. 数据分布D. 数据压缩11. 数据库系统的基础是什么?A. 计算机硬件B. 数据库管理系统(DBMS)C. 数据库管理员(DBA)D. 数据库应用程序12. 关系型数据库与非关系型数据库的主要区别是什么?A. 数据结构化程度B. 查询语言C. 一致性保证D. 扩展性13. 数据库设计中,哪个阶段会进行数据模型设计?A. 需求分析阶段B. 概念设计阶段C. 逻辑设计阶段D. 物理设计阶段14. 在SQL语言中,哪种语法结构可以用来创建一个表?A. CREATE TABLEB. ALTER TABLEC. DROP TABLED. UPDATE TABLE15. 什么是事务处理?A. 数据库维护B. 数据操作C. 数据完整性保障D. 数据安全性控制16. 在数据库应用开发中,哪种技术通常用于实现数据的持久化?A. 文件系统B. 缓存技术C. 数据库系统D. 对象关系映射(ORM)17. 数据库系统的核心是哪个组成部分?A. 数据模型B. 数据库管理系统C. 数据库管理员D. 数据库客户端程序18. 在数据库设计中,哪个步骤用于确定如何在数据库中表示实体和关系?A. 需求分析B. 概念设计C. 逻辑设计D. 物理设计19. 在数据库设计中,以下哪个术语用来描述数据库中数据的结构化表示?A. 模式B. 内模式C. 外模式D. 用户模式20. 关系型数据库管理系统中,哪个概念用来描述数据的逻辑结构?A. 表B. 列C. 主键D. 外键21. 在SQL语言中,用于查询数据库中的数据被称为?A. 插入B. 更新C. 删除D. 查询22. 以下哪个术语描述了数据库事务的特性?A. 原子性B. 一致性C. 隔离性D. 持久性23. 在数据库系统中,哪个组成部分负责存储和管理数据?A. 应用程序B. 数据库管理系统C. 数据库管理员D. 数据库客户端24. 在关系型数据库中,表与表之间的关联通常是通过什么方式实现的?A. 主键-外键约束B. 触发器C. 索引D. 存储过程25. 数据库恢复的主要目的是什么?A. 修复损坏的数据文件B. 重新创建丢失的数据表C. 恢复数据库到某个特定时间点的状态D. 重新分配数据库空间26. 在数据库设计中,哪个步骤是关于定义数据结构和关系?A. 需求分析B. 概念设计C. 逻辑设计D. 物理设计27. 数据库系统是由哪几个部分组成的?A. 数据库、数据库管理系统、数据库管理员、硬件平台和软件平台B. 数据库、DBMS、网络、硬件平台和软件平台C. 数据库、DBMS、数据库管理员、硬件平台和软件平台D. 数据库、DBMS、硬件平台和软件平台28. 关系数据库中的关系模型是用什么来表示数据的结构?A. 树状图B. 网状图C. 表格D. 图29. 在数据库设计中,用来描述实体之间关系的术语是()。
面向对象程序设计语言-VBA

2. 自定义型:它是用关键词Type定义的,如:
Type Point X as Integer Y as integer
End Type
即定义了一个点(point)的数据结构,声明和 使用变量形式如:
Dim pCurPoint as Point =10 =10
3. 对象型:
所有的数据库中使用的数据库的对象,如数据表、 查询、窗体和报表,也有对应的Access数据类型。
以Access建立的数据库对象及其属性可被看成是 VB程序代码中的变量及其指定的值,例如含有客户地 址数据的文本框。可以使用以下语句:
Forms! Customers! Address = “123 Elm St.”
关键字Forms定义对象的类型。感叹号“!”(程 序设计称之为bang符号)分隔开格式名和控件对象名。 “!”类似于在处理DOS文件时,使用的“\”路径分 隔符。
“Function”的英文含意就是“函数”。它在这 儿用来作为函数申明的一个内容。在它后面跟着的就 是这个函数的函数名。在这个函数名后面的括号中, 列的是这个函数中的参数。每个函数之间要用逗号隔 开,并用“As”语句后跟“数据类型”来定义数据的 类型。括号外面的“As 数据类型”用来定义“函数名” 的。它表示函数返回的数据的数据类型。
模块对象是将Visual Basic for Application(简称 宏语言VBA)编写的过程和声明作为一个整体进行保存的 过程的集合。一个模块包含一个声明区域,且可以包含 一 个 或 多 个 程 序 ( 以 sub 开 头 ) 或 函 数 ( 以 Function 开 头),模块的声明区域是用来声明模块使用的项目(通 常是变量)。
数组中各元素在通常情况下类型必须相同,但若 数组类型为Variant时,可包含不同类型的数据。
jdbctemplate queryforobject 查询基本数据类型-概述说明以及解释

jdbctemplate queryforobject 查询基本数据类型-概述说明以及解释1.引言1.1 概述在Java开发中,操作数据库是非常常见的任务。
Spring框架提供了JdbcTemplate类来简化与数据库的交互,其中queryForObject方法是用于查询数据库并返回单个对象的方法之一。
在本文中,我们将重点介绍如何使用JdbcTemplate的queryForObject方法来查询数据库中的基本数据类型,并展示一些具体的示例。
通过学习本文,读者将能够更加熟练地使用JdbcTemplate来处理数据库操作。
1.2 文章结构:本文主要分为三个部分,分别是引言、正文和结论。
在引言部分,将介绍本文的概述、文章结构和目的,帮助读者了解本文的主题和内容安排。
在正文部分,将首先介绍jdbctemplate的基本概念和简介,然后详细介绍queryForObject方法的用法和特点,最后以查询基本数据类型为例进行示例说明。
在结论部分,将对本文进行总结,讨论jdbctemplate queryForObject方法的应用场景,并展望这一方法在未来的发展前景。
通过这样逐步展开的结构,读者可以逐步深入理解jdbctemplate queryForObject方法在查询基本数据类型中的应用和意义。
1.3 目的本文的目的是介绍使用Spring框架中的JdbcTemplate查询基本数据类型的方法。
通过学习本文,读者将了解如何使用JdbcTemplate的queryForObject方法来查询数据库中的基本数据类型,例如整数、字符串、日期等。
我们将通过具体的示例演示如何使用queryForObject方法,并讨论一些注意事项和最佳实践。
通过本文的学习,读者将能够更加灵活地利用JdbcTemplate来处理数据库查询操作。
2.正文2.1 jdbctemplate简介JdbcTemplate是Spring框架中对JDBC操作进行封装的模块,它大大简化了JDBC编程的复杂性。
四种程序设计语言比较

过程式语言的并发机制主要有会合,异步发送。
类型系统:
对于过程式语言和面向对象语言,都有顺序、条件、循环三种控制语句。过程式程序语言中多类型的雏型是联合和变体记录,程序根据运行中判别式的值自动呈现结构不同的类型,但在引用和处理中还要显式指明处理的是哪个类型变体。以便静态编译。过程式语言在处理变长数组时效率不高。
总的来说,过程式的程序设计是一种自上而下的设计方法,设计者用一个main函数概括出整个应用程序需要做的事,而main函数由对一系列子函数的调用组成。对于main中的每一个子函数,都又可以再被精炼成更小的函数。重复这个过程,就可以完成一个过程式的设计。其特征是以函数为中心,用函数来作为划分程序的基本单位,数据在过程式设计中往往处于从属的位置。
逻辑式程序设计语言:
逻辑程序设计的风格不是描述计算过程而是证明过程。一般构造一个希望的解,证明它就是所希望的解。构造过程就实施了计算。第二个特点是描述性。第三个特点是大量利用表的数据结构和递归。
Prolog程序公理部分是事实和规则(无条件和条件子句),查询是求证目标。它在封闭世界(限于规则和事实库)完成证明的演绎过程。回溯是实现各子目标同时满足的唯一方法。
由以上表中可以看出,这五个特征对“面向对象”是缺一不可的。
表达能力:
面向对象语言有4个主要特点:认识性、类别性、多态性、继承性,它们和动态绑定的结合使用,体现出面向对象语言强大的表达能力。
执行效率:
面向对象语言中,c++的执行效率也比较高,但是诸如java语言,由于是解释执行,需要生成中间代码,所以效率相对来说较低。
2、过程式程序设计语言:
过程式程序设计语言是一种为程序设计人员提供准确定义任务执行步骤的语言。在过程式程序设计语言中,程序设计人员可以指定计算机将要执行的详细的算法步骤。有时,也把过程式程序设计语言看成是指令式程序设计语言。所不同的是,过程式程序设计语言中包含了过程调用。在过程式程序设计语言中,可以使用过程或例程或方法来实现代码的重用而不需复制代码。
计算机软件开发考试试题

计算机软件开发考试试题一、选择题1. 下列哪种编程语言属于面向对象编程语言?A. CB. PythonC. AssemblyD. Fortran2. 在Java中,以下哪个关键字用于定义类的继承关系?A. classB. interfaceC. extendsD. implements3. 在数据库中,以下哪种语言用于对数据库进行查询操作?A. JavaB. SQLC. PythonD. C++4. 在HTML中,以下哪个标签用于定义一个段落?A. <p>B. <h1>C. <div>D. <span>5. 在软件开发中,以下哪个模型最适合用于快速开发原型?A. 瀑布模型B. 增量模型C. 原型模型D. 螺旋模型二、填空题6. C#中用于输出内容到控制台的关键字是__。
7. 在Python中,用于创建循环结构的关键字是__。
8. 在数据库中,用于查询所有数据的关键字是__。
9. HTML中的超链接标签是__。
10. 软件开发中用于管理代码版本的工具是__。
三、简答题11. 请简要解释什么是面向对象编程?列举面向对象编程的优点。
12. 请简要介绍一下SQL语言,列举SQL语言中常用的操作。
13. 请解释什么是响应式网页设计并说明其重要性。
14. 请简要介绍软件开发中常用的敏捷开发方法并列举其优势。
四、编程题15. 请写一个Java程序,实现以下功能:从1累加到100并输出结果。
以上为计算机软件开发考试试题,希望能够准确回答每道题目。
祝考试顺利!。
持久对象原生数据库查询语言 设计白皮书

持久对象原生数据库查询语言设计白皮书William R. Cook Carl RosenbergerDepartment of Computer Sciences db4objects Inc.The University of Texas at Austin 1900 South Norfolk StreetAustin, TX 78712-0233, U.S.A. San Mateo, CA, 94403, U.S.A.wcook@ carl@2005年8月23日摘要大部分 Java 和 .NET 持久架构提供的接口在执行查询时必须以架构特定的查询语言书写。
这些接口是基于字符串的:查询语句被定义在字符串中,并通过持久引擎进行解释。
基于字符串的查询接口对程序员的生产力有相当大的负面影响。
对于像编译时的类型检查、自动对齐、重构,这些开发环境特性,查询语言是不可用的。
程序员必须用两种语言开展工作:程序实现语言和数据库查询语言。
本文介绍原生数据库查询语言,以简练且类型安全的方式直接使用 Java 和 C# 方法表达查询。
探讨了原生数据库查询语言设计并提供了概括性的实现和优化方面的议题。
同时,本文也探讨了目前原生数据库查询语言设计的优势和劣势。
1 介绍当今的对象数据库和对象关系映射(ORM)工具在对象持久化做出了巨大的成就,让开发者能很自然的进行对象持久化,而在面向对象程序中的查询语言看起来有些不协调。
这些查询语言用单一的字符串表达,或利用对象视图把分散的字符串组合起来。
让我们看一小段例子。
本文中所有例子,我们都使用下面的类:// Javapublic class Student {private String name;private int age;public String getName(){name;return}public int getAge(){age;return}}// C#public class Student {private string name;private int age;public string Name {get { return name; }}public int Age {get{ return age; }}}怎样利用现有的对象查询语言或 API 找到“年龄小于 20 岁的所有学生”?OQL [8, 1]String oql ="select * from student in AllStudents where student.age < 20";OQLQuery query = new OQLQuery(oql);Object students = query.execute();JDOQL [7, 9]Query query =persistenceManager.newQuery(Student.class, "age < 20");Collection students = (Collection)query.execute();db4o SODA, 使用 C# [4]Query query = database.Query();query.Constrain(typeof(Student));query.Descend("age").Constrain(20).Smaller();IList students = query.Execute();上面的方法都存在一些普遍问题:z现代集成开发环境(IDEs)不会检查内嵌字符串的语义和语法错误。
面向对象数据库考试

面向对象数据库考试(答案见尾页)一、选择题1. 什么是面向对象数据库?A. 一种数据库,其数据结构以对象为单位进行组织B. 一种关系型数据库C. 一种非关系型数据库D. 一种基于Web的数据库2. 面向对象数据库与传统数据库的主要区别是什么?A. 数据模型B. 存储机制C. 操作语言D. 应用领域3. 在面向对象数据库中,什么是类?A. 一种数据类型B. 一种对象C. 一种属性D. 一种方法4. 面向对象数据库中的继承是如何实现的?A. 封装B. 多态C. 继承D. 抽象5. 在面向对象数据库中,什么是多态?A. 一种数据类型B. 一种对象C. 一种属性D. 一种方法6. 面向对象数据库中的封装是什么意思?A. 将数据隐藏在对象内部B. 将数据暴露给外部使用C. 一种数据类型D. 一种对象7. 面向对象数据库中的抽象是什么?A. 一种数据类型B. 一种对象C. 一种属性D. 一种方法8. 在面向对象数据库中,什么是关联?A. 两个对象之间的直接联系B. 两个对象之间的间接联系C. 一种数据类型D. 一种对象9. 面向对象数据库中的枚举是一种什么类型的对象?A. 数据类型B. 对象C. 属性D. 方法10. 在面向对象数据库中,什么是序列化?A. 一种数据类型B. 一种对象C. 一种属性D. 一种方法11. 面向对象数据库(OODB)与关系型数据库的主要区别是什么?A. OODB支持多种数据类型B. OODB具有更好的数据完整性C. OODB使用面向对象的查询语言(OQL)D. OODB更适合于处理大量复杂数据12. 在面向对象数据库中,什么是类和实例?A. 类是对一组具有相同属性的对象的抽象描述B. 实例是类的具体实现C. 类和实例共同定义了对象的行为D. 类是对象的蓝图,实例是根据蓝图创建的13. 在面向对象数据库中,什么是封装?A. 将数据隐藏在对象内部B. 将数据转换为公共APIC. 将数据与操作数据的代码捆绑在一起D. 将数据与对象的状态分开14. 面向对象数据库中的多态性是什么意思?A. 不同的类可以共享接口B. 同一个接口可以被不同的对象以不同的方式实现C. 对象可以继承多个接口D. 对象可以拥有自己的数据15. 在面向对象数据库中,什么是多线程?A. 同一进程内的多个线程B. 数据库中的多个用户同时进行的操作C. 数据库管理系统的一个特性D. 以上都不是16. 面向对象数据库中的关联关系有哪些类型?A. 一对一关联B. 一对多关联C. 多对多关联D. 依赖关系17. 在面向对象数据库中,什么是抽象类?A. 包含所有字段的类B. 包含所有方法的类C. 包含部分字段和方法的类D. 用于定义接口的类18. 面向对象数据库中的持久化是指什么?A. 将数据存储在磁盘上B. 将数据存储在内存中C. 将数据转换为可存储的形式D. 将数据与对象的状态分开19. 在面向对象数据库中,什么是集合?A. 一种数据结构,用于存储同类对象B. 一种数据结构,用于存储不同类型的对象C. 一种数据结构,用于存储对象的引用D. 一种数据结构,用于存储对象的索引20. 在面向对象数据库中,对象之间的关系可以通过什么来定义?A. 类与类之间的关系B. 属性与属性之间的关系C. 方法与方法之间的关系D. 继承与继承之间的关系21. 面向对象数据库的体系结构通常包括哪些层次?A. 存储层B. 操作层C. 对象类层D. 对象实例层22. 面向对象数据库中,什么是封装?A. 将数据与操作数据的函数放在一起B. 将数据与操作数据的函数分别放置C. 将数据与操作数据的函数分别放置在不同的组件中D. 将数据与操作数据的函数分别放置在不同的层次中23. 面向对象数据库中的继承有哪些类型?A. 单继承B. 多继承C. 接口继承D. 抽象继承24. 在面向对象数据库中,什么是动态聚类?A. 自动根据数据内容将对象分组B. 根据查询需求动态创建新的对象类C. 根据历史数据预测未来数据的内容D. 根据历史数据预测未来数据的内容,并自动创建新的对象类25. 面向对象数据库的查询语言通常是什么?A. SQLB. OQL(Object Query Language)C. NoSQLD. DQL(Database Query Language)26. 在面向对象数据库中,什么是泛化?A. 将数据与操作数据的函数放在一起B. 将数据与操作数据的函数分别放置C. 将数据与操作数据的函数分别放置在不同的组件中D. 将数据与操作数据的函数分别放置在不同的层次中27. 面向对象数据库中的多态性如何实现?A. 继承B. 封装C. 抽象D. 多态性28. 什么是面向对象数据库中的关联?A. 数据之间的直接联系B. 数据之间的间接联系C. 数据之间的依赖关系D. 数据之间的平等关系29. 在面向对象数据库中,什么是聚合?A. 数据对象之间的组合B. 数据对象之间的聚集C. 数据对象之间的关联D. 数据对象之间的依赖关系30. 面向对象数据库中的继承有几种类型?A. 一级继承B. 二级继承C. 三级继承D. 四级继承31. 在面向对象数据库中,什么是抽象数据类型(ADT)?A. 一种数据库的数据模型B. 一种数据库的操作接口C. 一种数据库的数据结构D. 一种数据库的数据访问方法32. 什么是面向对象数据库的四层模式结构?A. 表模式、用户模式、存储模式和概念模式B. 表模式、用户模式、局部模式和全局模式C. 表模式、视图模式、存储模式和概念模式D. 表模式、用户模式、全局模式和存储模式33. 在面向对象数据库中,什么是对象类?A. 数据对象的抽象B. 数据对象的实例C. 数据对象的组织D. 数据对象的定义34. 什么是继承在面向对象数据库中的含义?A. 子类可以继承父类的属性和方法B. 子类可以覆盖父类的属性和方法C. 子类可以添加新的属性和方法D. 子类可以限制父类的属性和方法35. 什么是泛型在面向对象数据库中的用途?A. 为了增加数据库的灵活性B. 为了增加数据库的可扩展性C. 为了增加数据库的性能D. 为了增加数据库的复杂性36. 什么是聚合在面向对象数据库中的含义?A. 两个或多个对象之间的直接联系B. 两个或多个对象之间的间接联系C. 两个或多个对象之间的弱联系D. 两个或多个对象之间的强联系37. 在面向对象数据库中,什么是动态绑定?A. 在运行时确定对象的方法调用B. 在编译时确定对象的方法调用C. 在运行时确定对象的数据成员访问D. 在编译时确定对象的数据成员访问38. 什么是反射在面向对象数据库中的用途?A. 为了增加数据库的灵活性B. 为了增加数据库的可扩展性C. 为了增加数据库的性能D. 为了增加数据库的复杂性二、问答题1. 什么是面向对象数据库?2. 面向对象数据库与传统数据库的区别是什么?3. 如何实现面向对象数据库中的对象持久化?4. 面向对象数据库的优势和劣势是什么?5. 什么是对象关系数据库?它与面向对象数据库有什么区别?6. 什么是数据库事务?它为什么重要?7. 什么是数据库索引?它有什么作用?8. 什么是数据库备份和恢复?它为什么重要?参考答案选择题:1. A2. A3. B4. C5. D6. A7. D8. A9. A 10. B11. C 12. A 13. A 14. B 15. A 16. ABCD 17. D 18. C 19. A 20. D21. ACD 22. A 23. ABCD 24. B 25. B 26. C 27. D 28. A 29. B 30. A31. B 32. A 33. A 34. A 35. A 36. A 37. A 38. A问答题:1. 什么是面向对象数据库?面向对象数据库(Object-Oriented Database,简称OODB)是一种采用面向对象方法论和关系模型相结合的数据库管理系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
该类对象与其他类对象的联系(引用)
方法(Method)
与类相关的函数,可作用与该类对象的函数 代码不是ODL的成分,由宿主实现
ODL——方法的说明
署名
方法的名字 返回值的类型 参数种类
In Out InOut
参数类型
异常(Exception)处理
ODL中与查询相关的特性
ODL(Object Definition Language)
用面向对象的术语,说明数据库结构的标 准语言
用于书写面向对象数据库的设计说明 可直接转换成对OODBMS的(实现)说明
ODL——对象的操作
ODL,Interface
属性(Attribute)
该class的特性
OQL——实例
Interface Star (extent Stars key name) { attribute string name; attribute Struct Addr {string street,string city}address; relationship Set<Movie> starredIn inverse Movie::stars; }
OQL类型系统
OQL中的类型与ODL一致 ODL只涉及变量(类型) OQL将涉及常量(值)
OQL类型系统
常量的表示
基本类型 原子类型 整数、浮点数、字符、字符串、布尔型 枚举类型 由ODL中定义的值
OQL类型系统
常量的表示
复杂类型 Set(…) Bag(…) List(…) Array(…) Struct(…)
第八章 面向对象查询语言
Object-Oriented Query Languages
概述
面向对象
面向对象数据模型
面向对象方法中引入数据库的概念(持久化) 以面向对象的方法构造数据库
关系对象数据模型
关系数据模型中引入面向对象的概念 引入新的数据类型,作为类型扩展
概述
面向对象查询语言
Struct(foo:bag(2,1,2),bar:“baz”)
OQL路径表达式
采用点‘.’的方式访问变量的分量 如果a表示属于类C的对象,p是该类的某个
特性(属性、联系或方法),则a.p表示把p 用于a的结果
如果p是属性,则a.p就是对象a的该属性值 如果p是联系,则a.p就是通过联系p与a相连的对
OQL
对象查询语言
OQL:OБайду номын сангаасject Query Language 以ODMG对象模型为基础的类似SQL的查询语言 作为OOP宿主语言的扩展
OQL混入宿主语言(不是嵌入) 完整描述:ODMG-93
OQL——实例
Interface Movie (extent Movies key(title,year)) { attribute string title; attribute integer year; attribute integer length; attribute enumeration(color,blackAndWhite) filmType; relationship Set<Star> stars inverse Star::starredIn; relationship Studio ownedBy inverse Studio::owns; }
OQL——实例
Interface Studio (extent Studios key name) { attribute string name; attribute string address; relationship Set<Movie> owns inverse Movie::ownedBy; }
Raises(<异常名>)
ODL——方法的说明
Interface Movie Key(title,year) { …… //attributes & relationships float lengthInHours() Raises(noLengthFound); starNames(out Set<string>); otherNames(in Star,out Set<Movie>) Raises(noSuchStar); };
OODBMS OQL
ORDBMS SQL3
概述
ODMG Object Database Management Group ODMG-93
吸取OMG的COM(Common Object Model)、 IDL(Interface Definition Language)
增加数据库内容,形成OM、ODL OQL 力图成为OODBMS的标准
象或对象的聚集 如果p是方法,则a.p就是把p用于a的结果
OQL路径表达式
例:如果myMovie是宿主语言的变量,其值是 Movie对象,则
myMovie.length(对象中的属性名)是该电影的长度 myMovie.lengthInHours()(对象中的方法名)的值是实
数,通过把方法lengthInHours()作用于对象myMovie的 结果 mymovie.stars(对象中的联系名)的值是通过联系stars 与电影(对象)myMovie相连的Star对象的集合 myMovie.starNames(myStars)本身不返回任何值,但以 参数myStars作为输出,返回电影对象myMovie中的影星 姓名(集)
ODL——类的范围
ODL的说明
是该类对象的当前集合名,类似于关系名 extent <范围名> 范围名可以与类名不一致 将以范围名被引用
ODL——类的范围
Interface Movie (extent Movies Key(title,year)) { …… //attributes & relationships float lengthInHours() Raises(noLengthFound); starNames(out Set<string>); otherNames(in Star,out Set<Movie>) Raises(noSuchStar); };