DB2和Oracle的一些异同点

发表于:2007-07-13来源:作者:点击数: 标签:
1.Table space for indexes 的不同 Oralce: CreateTABLE T1 .............IN DATA_TA CreateIndex ........ ONT1 ...... ININDX_TS DB2: Create TABLE T1 ........ IN DATA_TS INDEX IN INDX_TS CreateINDEX .....ON T1 2.RowID Oracle: Oracle 有RowID ,它
1.Table space for indexes 的不同

Oralce:

Create TABLE T1 .............IN DATA_TA

Create Index ........ ON T1  ...... IN INDX_TS

DB2:

Create TABLE T1 ........ IN DATA_TS INDEX IN INDX_TS

Create INDEX  .....ON T1

2.RowID

Oracle:

Oracle 有RowID ,它是由数据库唯一产生的,在程序里可以获得

DB2:

DB2的相对应的这个值不能被程序获得

3.一些转换



Oracle:

Oracle 支持一些转换,比如:

Create table t1(c1 int);

Select * from t1 where c1='1'

Select  'abc'||2  from t1

DB2:

DB2不支持一些转换,比如:

Create table t1(c1 int);

Select * from t1 where c1=CAST('1' AS INT)

Select  'abc'||CHAR(2)  from t1

4.函数的值做为表中的缺省值

Oracle:

Oracle 支持把函数的值做为表中的缺省值,比如:

Create table t1(C1 Number DEFAULT FN() NOT NULL,

C2 DATE DEFAULT NOT NULL SYSDATE

)

DB2:

DB2不支持把函数的值做为表中的缺省值,比如:

Create table t1(C1 INT NOT NULL,

C2 TIMESTAMP DEFAULT CURRENT TIMESTAMP

)

这个是不允许的

5.一些内建的函数







6.公用的同义词(Public Synonyms)

Oracle:

Oracle 支持公用的同义词            

DB2:

DB2不支持公用的同义词



7.Date/Time





8.外连接





现在,Oracle 9i也支持这种ANSI join 语法

9.字符串和null的合并

Select 'abc'||c1 from T1

C1 is null

Result :

Oracle : abc

DB2: null

要想得到'abc',DB2中需要这样处理

Select  'abc'||coalesce(c1,'') from T1

  

原文转自:http://www.ltesting.net