Oracle 和 DB2的区别如下:
1、取前N条记录
Oracle:Select from TableName where rownum <= N;
DB2:Select from TableName fetch first N rows only;
2、取得系统日期
Oracle:Select sysdate from dual;
DB2:Select current timestamp from sysibmsysdummy1;
3、空值转换
Oracle:Select productid,loginname,nvl(cur_rate,'0') from TableName ;
DB2:Select productid,loginname,value(cur_rate,'0') from TableName;
Coalesce(cur_rate,'0')
4、类型转换(8版有了to_char,to_date,9版新增了to_number)
Oracle:select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;
DB2:select varchar(current timestamp) from sysibmsysdummy1;
## Oracle数据类型改变函数:to_char()、to_date()、to_number()等;
如果仅仅取年,月,日等,可以用to_char(sysdate, 'YYYY'),to_char('MM') ,to_char('DD')取得。
只取年月日TRUNC(SYSDATE),
取时分秒TO_CHAR(SYSDATE,'HH24:MI:SS')。
## DB2数据类型改变函数:char()、varchar()、int()、date()、time()等;
取得年,月,日等的写法:YEAR(current timestamp),MONTH(current timestamp),DAY(current timestamp),HOUR(current timestamp),MINUTE(current timestamp),SECOND(current timestamp),MICROSECOND(current timestamp),
只取年月日可以用DATE(current timestamp),取时分秒TIME(current timestamp)。
Char()是定长字符串(1-255),varchar()为非定长字符串(1-32672)
日期,时间形态变为字符形态: char(current date),char(current time)
将字符串转换成日期或时间形态:TIMESTAMP('2002-10-2012:00:00'),DATE('2002-10-20'),
DATE('10/20/2002'),TIME('12:00:00')
## 目前DB2 V8也支持to_char和to_date
5、快速清空大表
Oracle:truncate table TableName ;
DB2:alter table TableName active not logged initially with empty table;
6、关于ROWID
Oracle它是由数据库唯一产生的,在程序里可以获得
DB2 v8也有此功能。
7、To_Number
Oracle:select to_number('123') from dual;
DB2:select cast('123' as integer) from sysibmsysdummy1;
SELECT CAST ( current time as char(8)) FROMsysibmsysdummy1
8、创建类似表
Oracle:create table a as select from b ;
DB2:create table a like b ;
CREATE TABLE tab_newAS select col1,col2…FROMtab_old DEFINITION ONLY (8版有效,9版无效)
9、decode方法
Oracle:decode方法(DECODE(条件,值1,翻译值1,值2,翻译值2,值n,翻译值n,缺省值))或者case语句
DB2中只有CASE表达式
SELECT id ,name ,
CASE
WHEN integer(flag)=0 THEN ‘假’
WHEN integer(flag)=1 THEN ‘真’
ELSE ‘异常’
END
FROM TEST
或者
SELECT id ,name ,
CASE integer(flag)
WHEN 0 THEN ‘假’
WHEN 1 THEN ‘真’
ELSE ‘异常’
END
FROM TEST
10、子查询(8版,9版也支持子查询)
Oracle:直接用子查询
Db2:with语句
WITH a1 AS
(select max(id) as aa1 from test )
select id ,aa1 from test ,a1
11、数据类型
比较大的差别:
Oracle:char 2000
DB2: char 254
Oracle: date datetime
Db2: DATE:日期TIME:时间TIMESTAMP:日期时间
1、数据类型转换函数
整型转字符型
字符串转整形
字符串转浮点型
浮点型转字符串
字符串转日期
字符串转时间戳
日期转字符串
ORACLE
to_char(1)
to_number('1')
to_number('11')
to_char(11)
to_date('2007-04-26','yyyy-mm-dd')
to_date('2007-04-26 08:08:08','YYYY-MM-DD HH24:MI:SS')
to_char(to_date('2007-04-29','yyyy-mm-dd'),'yyyy-mm-dd')
DB2
char(1)
int('1')
double('11')
char(11)
date('2007-04-26')
to_date('2007-04-26 08:08:08','YYYY-MM-DD HH24:MI:SS')
char(date('2007-04-29'))
兼容写法
cast(1 as char)
cast('1' as int)
无
无
无
兼容
无
2、Where条件弱类型判断
oracle: where 字符型字段 in (整形) 是允许,DB2不允许
select 'abc' from dual where '1' in (1) 在oracle下可通过
select 'abc' from sysibmsysdummy1 where '1' in (1) 在DB2下报错
oracle:where 字符型字段=数字型字段 允许,DB2不允许
select 'abc' from dual where '1'=1 在oracle下可通过
select 'abc' from sysibmsysdummy1 whre '1'=1 在DB2下报错
3、replace关键字
oracle支持,DB2不支持 create or replace语句在DB2下是非法的
4、子查询别名
ORACLE 支持select from(select 1 from dual) 或者 select from(select 1 from dual) t
DB2 支持select from(select 1 from sysibmsysdummy1) t 或者 select from(select 1 from sysibmsysdummy1) as t
固兼容的写法是select from(子查询) t
5、DATE数据类型的区别
ORACLE中DATE型也是带有时分秒的,但DB2下DATE只是年月日,如'2007-04-28',且可作为字符串直接 *** 作,DB2中要记录时分秒必须采用TIMESTAMP型
一个采用hibernate后常见的兼容问题是:
如果在映射文件中定义了某个字段为Date型
<property name="createTime" type="javautilDate" >
<column name="CREATE_TIME" length="7" />
</property>
则在DB2下,此字段必须定义为timestamp,而不能定义成DATE,不然会报出字符串右截断的错误
对于DB2来说,在查询条件中可以直接用字符串指定日期或时间戳类型字段的值,例如 where create_date = '2007-04-26' 、where create_timestamp = '2007-04-26 08:08:08' ,无须使用字符串转日期函数
6、分页的处理
如果采用JDBC分页的话,注意rownum在DB2中不受支持,比如从masa_area表中取得area_id最小的10条记录,语句分别如下,注意这里的别名t书写方法
ORACLE: select t from (select rownum as r1 ,masa_area from masa_area order by area_id) t where tr1<=10
DB2: select t from (select rownumber() over() as r1 ,masa_area from masa_area order by area_id) t where tr1<=10
7、decode函数
decode函数在DB2不被支持,兼容的写法是采用case when
8、NVL函数
nvl写法在DB2不被支持,兼容的写法是采用coalesce
ORACLE: select NVL(f_areaid,'空') from masa_user 等同于 select coalesce(f_areaid,'空',f_areaid) from masa_user
DB2: select coalesce(f_areaid,'空',f_areaid) from masa_user
9、substr的不同
DB2 substr举例如下:
masa_group表的f_groupCode字段定义成VARCHAR(100),所以下面这个语句不会出错,如果是substr(f_groupCode,1,101)就出错了
select from masa_group where substr(f_groupCode,1,50) = '001006' order by f_groupcode
在DB2下无错,但是
select from masa_group where substr('001006', 1, 50) = '001006' order by f_groupcode
就报错,说第三个参数超限
这是因为'001006'已经定义为一个长度为6的charater了
IBM的DB2。
关系数据库领域的开拓者和领航人
Oracle
大型的数据库系统。
Informix
目的是为Unix等开放 *** 作系统提供专业的关系型数据库产品。
Sybase
Sybase首先提出Client/Server数据库体系结构的思想,并率先在SybaseSQLServer中实现。
SQLServer
最初由微软和IBM合作开发完成OS/2。后微软同Sybase签订了合作协议,使用Sybase的技术开发基于OS/2平台的关系型数据库——SQLServer。
PostgreSQL
目前PostgreSQL是唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。
mySQL
目前MySQL被广泛地应用在Internet上的中小型网站中。(开放源码、体积小、速度快、总体拥有成本低)
Aess数据库
界面友好、易学易用、开发简单、接口灵活。
Aess主要适用于中小型应用系统,或作为客户机/服务器系统中的客户端数据库。
去买这本书吧
OCA认证考试指南(IZO-052):
Oracle Database 11g Administrat
作者:(美国)(John Watson)沃森 译者:王跃利 韩宏志
·出版社:清华大学出版社
·页码:519 页
·出版日期:2009年
·ISBN:9787302196297
·条形码:9787302196297
·包装版本:1版
·装帧:平装
·开本:16
·中文:中文
内容简介
《OCA认证考试指南(IZO-052):Oracle Database 11g Administrat》旨在对参加OCA Oracle Database 11g Administration I考试的读者提供帮助。每一章都配备了练习题、自测题、实践题、本章知识点回顾和小结,从各个方面使读者对本章所学内容进行充分的消化和吸收。《OCA认证考试指南(IZO-052):Oracle Database 11g Administrat》是OCA认证考试最权威的辅导教程,也是Oracle从业人员必备的参考书。
《OCA认证考试指南(IZO-052):Oracle Database 11g Administrat》全面覆盖了OCA认证考试(1Z0-052)的所有要点:
数据库体系结构
创建Oracle数据库
管理Oracle实例
配置和管理Oracle网络
管理数据库存储结构
管理模式对象、数据、并发性和撤销数据
管理用户安全
实现Oracle数据库的安全
数据库维护和性能管理
备份和恢复
移动数据
增强的智能基础结构
目录
第1章 Oracle服务器技术简介
1.1 Oracle产品系列一览
1.1.1 服务器技术
1.1.2 开发工具和语言
1.1.3 Oracle应用程序
练习1.1研究所在环境的DBMS
1.2 解释关系结构
1.2.1 行和表
1.2.2 数据规范化
1.3 了解SQL语言
1.4 了解DBA的角色
1.5 小结
1.6 本章测试题
1.6.1 自测题
1.6.2 实践题
1.6.3 自测题答案
1.6.4 实践题答案
第2章 了解数据库体系结构
2.1 描述单实例体系结构
2.1.1 单实例数据库体系结构
2.1.2 分布式系统体系结构
练习2.1确定数据库是单实例还是分布式系统的一部分
2.2 解释内存结构
2.2.1 数据库高速缓存区
2.2.2 日志缓冲区
2.2.3 共享池
2.2.4 大池
2.2.5 Java池
2.2.6 流池
练习2.2了解实例的内存结构
2.3 描述进程结构
2.3.1 SMON
2.3.2 PMON
2.3.3 DBWn
2.3.4 LGWR
2.3.5 CKPT
2.3.6 MMON
2.3.7 MMNL
当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。
关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。
Oracle。
Oracle是1983年推出的世界上第一个开放式商品化关系型数据库管理系统。它采用标准的SQL结构化查询语言,支持多种数据类型,提供面向对象存储的数据支持,具有第四代语言开发工具,支持Unix、Windows NT、OS/2、Novell等多种平台。除此之外,它还具有很好的并行处理功能。Oracle产品主要由Oracle服务器产品、Oracle开发工具、Oracle应用软件组成,也有基于微机的数据库产品。主要满足对银行、金融、保险等企业、事业开发大型数据库的需求。
2SQL Server。
SQL即结构化查询语言(Structured Query Language,简称为SQL)。SQL Server最早出现在1988年,当时只能在OS/2 *** 作系统上运行。2000年12月微软发布了SQL Server 2000,该软件可以运行于Windows NT/2000/XP等多种 *** 作系统之上,是支持客户机/服务器结构的数据库管理系统,它可以帮助各种规模的企业管理数据。
随着用户群的不断增大,SQL Server在易用性、可靠性、可收缩性、支持数据仓库、系统集成等方面日趋完美。特别是SQL Server的数据库搜索引擎,可以在绝大多数的 *** 作系统之上运行,并针对海量数据的查询进行了优化。目前SQL Server已经成为应用最广泛的数据库产品之一。
由于使用SQL Server不但要掌握SQL Server的 *** 作,而且还要能熟练掌握Windows NT/2000 Server的运行机制,以及SQL语言,所以对非专业人员的学习和使用有一定的难度。
3Sybase。
1987年推出的大型关系型数据库管理系统Sybase,能运行于OS/2、Unix、Windows NT等多种平台,它支持标准的关系型数据库语言SQL,使用客户机/服务器模式,采用开放体系结构,能实现网络环境下各节点上服务器的数据库互访 *** 作。技术先进、性能优良,是开发大中型数据库的工具。Sybase产品主要由服务器产品Sybase SQL Server、客户产品Sybase SQL Toolset和接口软件Sybase Client/Server Interface组成,还有著名的数据库应用开发工具PowerBuilder。
1、su – oracle 不是必需,适合于没有DBA密码时使用,可以不用密码来进入sqlplus界面
2、sqlplus /nolog 或sqlplus system/manager 或/sqlplus system/manager@ora9i
3、SQL>connect / as sysdba ;(as sysoper)或connect internal/oracle AS SYSDBA (scott/tiger)conn sys/change_on_install as sysdba
4、SQL>startup; 启动数据库实例
5、 查看当前的所有数据库: select from v$database
扩展资料:
ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。
oracle数据库逻辑结构
它由至少一个表空间和数据库模式对象组成。这里,模式是对象的集合,而模式对象是直接引用数据库数据的逻辑结构。
模式对象包括这样一些结构:表、视图、序列、存储过程、同义词、索引、簇和数据库链等。逻辑存储结构包括表空间、段和范围,用于描述怎样使用数据库的物理空间。
文件结构
数据库的物理存储结构是由一些多种物理文件组成,主要有数据文件、控制文件、重做日志文件、归档日志文件、参数文件、口令文件、警告文件等。
参考资料来源:百度百科-Oracle数据库
1977年,Larry Ellison、Bob Miner和Ed Oates等人组建了Relational软件公司(Relational Software Inc,RSI)。他们决定使用C语言和SQL界面构建一个关系数据库管理系统(Relational Database Management System,RDBMS),并很快发布了第一个版本(仅是原型系统)。
1979年,RSI首次向客户发布了产品,即第2版。该版本的RDBMS可以在装有RSX-11 *** 作系统的PDP-11机器上运行,后来又移植到了DEC VAX系统。
1983年,发布的第3个版本中加入了SQL语言,而且性能也有所提升,其他功能也得到增强。与前几个版本不同的是,这个版本是完全用C语言编写的。同年,RSI更名为Oracle Corporation,也就是今天的Oracle公司。
1984年,Oracle的第4版发布。该版本既支持VAX系统,也支持IBM VM *** 作系统。这也是第一个加入了读一致性(Read-consistency)的版本。
1985年,Oracle的第5版发布。该版本可称作是Oracle发展史上的里程碑,因为它通过SQLNet引入了客户端/服务器的计算机模式,同时它也是第一个打破640KB内存限制的MS-DOS产品。
1988年,Oracle的第6版发布。该版本除了改进性能、增强序列生成与延迟写入(Deferred Writes)功能以外,还引入了底层锁。除此之外,该版本还加入了PL/SQL和热备份等功能。这时Oracle已经可以在许多平台和 *** 作系统上运行。
1991年,Oracle RDBMS的61版在DEC VAX平台中引入了Parallel Server选项,很快该选项也可用于许多其他平台。
1992年,Oracle 7发布。Oracle 7在对内存、CPU和I/O的利用方面作了许多体系结构上的变动,这是一个功能完整的关系数据库管理系统,在易用性方面也作了许多改进,引入了SQLDBA工具和database角色。
1997年,Oracle 8发布。Oracle 8除了增加许多新特性和管理工具以外,还加入了对象扩展(Object Extension)特性。
2001年,Oracle 9i release 1发布。这是Oracle 9i的第一个发行版,包含RAC(Real Application Cluster)等新功能。
2002年,Oracle 9i release 2发布,它在release 1的基础上增加了集群文件系统(Cluster File System)等特性。
2004年,针对网格计算的Oracle 10g发布。该版本中Oracle的功能、稳定性和性能的实现都达到了一个新的水平。
2007年年7月12日,甲骨文公司推出的最新数据库软件Oracle 11g,Oracle 11g有400多项功能,经过了1500万个小时的测试,开发工作量达到了36万人/月。相对过往版本而言,Oracle 11g具有了与众不同的特性。
以上就是关于Oracle 和 DB2有哪些区别全部的内容,包括:Oracle 和 DB2有哪些区别、常见的数据库应用系统有哪些(目前常用的数据库系统有哪些)、如何学习OCA等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)