说说oracle中的面向对象与面向集合
这一篇算是对近期自己学习的一个心得总结
一、oracle的面向对象
SQL是面向集合的这个大家都知道,但是不可否认现在的oracle中有很多地方都体现着面向对象的思维。(这也算是各大语言殊途同归的一个征兆吧)
为什么说oracle中有很多的面向对象的思维呢?举一个例子来说明一下,我觉得最能体现出来这一点要算是游标了,当然还有包(package)
begin
declare
cursor students
is
select sid,name,age,hobby from my_test;
student students%rowtype;
begin
for student in students loop
dbms_output.put_line('学号:'||student.sid||'学生姓名:'||student.name||';');
end loop;
end;
end; --运行结果
学号:76学生姓名:joy;
学号:77学生姓名:joy;
学号:78学生姓名:joy;
学号:79学生姓名:joy;
学号:80学生姓名:joy;
学号:81学生姓名:joy;
学号:82学生姓名:joy;
学号:83学生姓名:joy;
学号:84学生姓名:joy;
学号:85学生姓名:joy;
学号:86学生姓名:joy;
学号:87学生姓名:joy;
学号:88学生姓名:joy;
学号:89学生姓名:joy;
……
其中的for循环有没有很有C#中foreach的赶脚呢?
student.sid没有有对象的赶脚呢?
另外包(package)也是一个具有很强的面向对象的家伙儿,比如最常使用的dbms_output.put_line()等等一些内置的函数,很有面向对象中类和方法的赶脚,只是oracle不这么叫罢了。面向对象是一种思维模式,也许oracle在不断的更新过程中也借鉴了一些这方面的内容,方便开发者更加快速更加舒服的使用也说不定。
接下来在谈谈oracle的面向集合
二、oracle的面向集合
SQL是面向集合的,在oracle集合这篇博客中自己也写了一些东西,此处着重写一些自己在这方面的一些见解。
关系型数据库是按照一定的关系把业务数据按照一定的相同性整合在一起,SQL语句是为了更好的处理这些数据而存在的,所以想要提升SQL的效率,很多时候就需要知道oracle到底是怎么工作的,他在运行一段SQL语句时,是按照什么样的顺序来实现自己对于数据的处理的,这就牵扯到了解释计划和执行计划。
oracle10g以后采用的是基于开销的优化器(CBO),通过统计出来的一些数据来运行众多执行计划中的一种,当然这一种并不一定是最高效和稳定的。
用集合的思想来进行编程,为的就是尽可能的减少对数据块的读取,因为一般情况下在I/O方面花费的效率还是很可观的,另外使用面向集合的方法也可以使SQL看起来更加的简洁明了,优雅动人。不过这些需要一个过程
最后借用别人的一句话,做一个虎头虎脑的结尾:谁都能写出计算机认识的代码,但是只有有思想的程序员才能写出人人都能看懂的程序代码
说说oracle中的面向对象与面向集合的更多相关文章
- python中的面向对象和面向过程
一.面向对象和面向过程 一.什么是面向过程 核心是过程二字:面向过程是一种流水线的工作流程,是先做什么在做什么 二.什么是面向对象 核心 是对象二字:是一种编程思想,上帝思维,一切皆对象,编程中负责调 ...
- 2018/2/14 设计模式学习笔记(一) 自己实现ArrayList,LinkedList和Iterator,以及在此过程中对于面向对象,面向接口,还有抽象类的一些思考感悟
因为本人目前为止学习编程不过七个月,所以后面的感悟对于一些大神来说可能嗤之以鼻,但对于一些刚刚入门的萌新来说在理解面向对象的思想上,以及抽象类和接口应该怎么设计等方面应该还是会有所帮助的 首先我们定义 ...
- 面向对象和面向过程,python中的类class,python中程序的入口——main方法,
1.程序入口,让main显现出来: print(__name__)#__name___是模块中的隐藏字段,当前模块运行的函数名 if __name__ == __main__ __main__() # ...
- 彻底理解Oracle中的集合操作与复合查询
--Oracle中的复合查询 复合查询:包含集合运算(操作)的查询 常见的集合操作有: union: 两个查询的并集(无重复行.按第一个查询的第一列升序排序) union all:两个查询的并集(有重 ...
- Oracle中的集合运算
前言:在实际项目中对多表进行集合运算使用非常广泛,以下是对集合操作的部分总结. 一,建表,插入测试数据 create table a( numbers integer ) create table b ...
- 浅谈Objective—C中的面向对象特性
Objective-C世界中的面向对象程序设计 面向对象称程序设计可能是现在最常用的程序设计模式.如何开发实际的程序是存在两个派系的-- 面向对象语言--在过去的几十年中,很多的面向对象语言被发明出来 ...
- mysql 面向集合查询
面向集合的思想 SQL是为查询和管理关系型数据库中的数据而专门设计的一种标准语言.我们通常认为的关系型是说的数据库中表与表的关系,这个理解是有问题的,这里的关系其实是数学术语上的关系.为什么这么说?因 ...
- JavaSE——面向对象与面向过程、类与对象、(属性、方法、构造器)等
一:面向对象与面向过程 二者都是一种思想,面向对象是相对于面向过程而言的. 面向过程: 1.面向过程思想强调的是过程(动作). 2.在面向过程的开发中,其实就是面向着具体的每一个步骤和过程,把每一个步 ...
- C#学习笔记——面向对象、面向组件以及类型基础
C#学习笔记——面向对象.面向组件以及类型基础 目录 一 面向对象与面向组件 二 基元类型与 new 操作 三 值类型与引用类型 四 类型转换 五 相等性与同一性 六 对象哈希码 一 面向对象与面向组 ...
随机推荐
- 百度校招面试经历及总结(已发offer)
听说发面经可以攒rp,希望早点给我确定的offer通知,也希望看到这个面经的小伙伴能顺利拿到心仪的offer~ 职位:机器学习-数据挖掘工程师 9.15 上午11点 一面 1.介绍项目 2.考研意向, ...
- jquery是如何清除ajax缓存的
大家都知道万恶的IE在ajax中往往只读取第一次ajax请求时候的数据,其余时候都是从cache提取数据,(太懒了T_T).原生的JS清除ajax缓存的方法多,但是终觉有点繁琐,如果是用jquery的 ...
- BZOJ1051 受欢迎的牛
http://www.lydsy.com/JudgeOnline/problem.php?id=1051 Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A ...
- 学习总结 DML数据库增删改语句
insert into score t values('111','3-105',88)--插入一行数据 insert into score(sno,cno) values('111','3-105' ...
- sql server分页
表结构 CREATE TABLE v_home ( vid int IDENTITY(1,1) not null,-- AUTO_INCREMENT, chapter varchar(20) not ...
- vs2010 编译curl-7.42.1
curl是一个sftp ssl 等功能工具. dos 进入到curl-7.42.1\lib下来:逐步执行以下操作 call "C:/Program Files/Microsoft Visua ...
- javascript事件机制
① javascript绑定事件的方式 http://blog.iderzheng.com/dom-javascript-event-binding-comparison/ ② javascript事 ...
- Linux下解压命令
.tar.xz 先用命令[xz -d ***.tar.xz]解压,然后用[tar xvf ***.tar]解包 也可以直接用命令[tar xvJf ***.tar.xz]解压
- linux 下wifi 功能的实现
一.嵌入式linux四件套配置 1.网卡选型的依据: a.网卡不能乱选,否则没戏.网卡的依据是,kernel的menuconfig -> device drivers -> network ...
- 3D模型文件读写.Net SDK
AnyCAD .Net/C++ SDK支持多种3D/2D文件格式,比如BREP.STEP.IGES.STL.DXF.3DS.OBJ.FBX.SKP.IFC.DAE……等,根据使用场景提供不同的API. ...