DB2與oracle的區別2

2021-06-17 18:53:26 字數 4579 閱讀 6330

db2與oracle的區別

1、db2 訪問前10行資料與oracle區別

db2 :   

select * from test fetch first 10 rows only

oracle :  

select * from test where rownum<=10

查詢語句

db2:不提供**轉換

select * from employee where empno=1010;

oracle:提供**轉換

select * from employee where empno='1010';

2、db2 insert into 與oracle區別

db2 允許有類似這樣多行插入:

insert into staff values(1212,'cemy',20,'sales',3,90000,30000);

(1212,'cemy',20,'sales',3,90000,30000);

oracle: 

www.2cto.com

sql>  insert into staff values(1212,'cemy',20,'sales',3,90000,30000),(1212,'cemy'

,20,'sales',3,90000,30000)

3、db2 update 與oracle update

db2db2 update staff set (salary,comm)=(80000,50000);

db2 update staff set salary=80000,comm=50000;

oracle:

sql> update staff set salary=80000,comm=50000;

已更新 1 行。i

4、取得系統日期

oracle:

select sysdate from dual;

db2:

select current timestamp from sysibm.sysdummy1;

5、轉換日期時間到字元型別:

oracle 

to_char(date_expression_r_r, 'yyyy-mm-dd') 

to_char(date_expression_r_r, 'hh24:mi:ss') 

db2 

char(date_expression_r_r,iso) 

char(time_expression_r_r,iso)

6、轉換日期時間字串到日期時間型別:

oracle 

to_char(date_expression_r_r, 'yyyy-mm-dd') 

to_char(date_expression_r_r, 'hh24:mi:ss') 

db2 

date('2005-05-20') 

time('18:59:59') 

tiemstamp('2007-2-1', '21:12:12') 

tiemstamp('2007-2-1 21:12:12')

www.2cto.com

db2也有to_char 和 to_date函式,但只能提供固定的轉換格式,如下

to_char (timestamp_expression_r_r,'yyy-mm-dd hh24:mi:ss') 

to_date (string_expression_r_r, 'yyy-mm-dd hh24:mi:ss')

7、快速清空大表

oracle:

truncate table tablename ;

db2:

alter table tablename active not logged initially with empty table;

8、建立類似表

oracle:

create table a as select * from b ;

db2:

create table a like b ;

9、修改字段長度或型別:

oracle:

alter table nodes modify node_name varchar(32);

db2:

alter table nodes alter node_name set data type varchar(32);

10、空值處理得到abc

oracle:

select 'abc' || c1 from t1 (c1 is null) 

db2 :

select 'abc『 || coalesce(c1,'') from t1

11、建立 indexes

oralce:

create table t1 .............in data_ta

create index ........ on t1  ...... in indx_ts

www.2cto.com

db2:

create table t1 ........ in data_ts index in indx_ts

create index  .....on t1

12、更改列名

oracle :

alter table test rename column mail to mail2;

db2 

不提供更改列名功能(解決辦法同刪除,或者通過建立乙個新視**決)

13、更改列型別

oracle :alter table test modify column (mail2 integer);

db2    :alter table test alter mail varchar(256) 只可以加寬,不能更改型別

14 建立procedure的引數的區別

1)引數型別和引數名稱的位置不同

db2:

create procedure pro1 (in orgid int)

oracle:

create procedure pro1 (orgid in int)

2)同時作為輸入輸出引數的寫法不同

db2:  

create procedure pro1 (inout orgid int)    inout連著寫

oracle: 

www.2cto.com

create procedure pro1 (orgid in out int)    in out中間空格隔開,而且必須in在out之前

3)沒有輸入或輸出引數時

db2: 

create procedure pro1 ()   

oracle:

create procedure pro1 不能有空的括號

變數定義和begin end體的位置不同

db2中變數定義在begin end體內,並且每個變數都要用declare宣告;儲存過程結束時,end後跟p1,並且不需要分號

oracle中變數定義必須在begin end體外,變數都不需要用declare宣告(有種說法是,第乙個變數需要declare,其他變數不需要);儲存過程結束時,end後跟儲存過程的名稱,並且需要分號       

db2:

create procedure pro1()

language sql   

p1: begin

--變數定義

declare insert_date timestamp;

declare alldept_no  varchar(20);

--具體操作 

www.2cto.com

select a from tab_1;

.........

end p1

oracle: 

create procedure pro1

is--變數定義

insert_date timestamp;

alldept_no  varchar(20);

begin

--具體操作

select a from tab_1;

.........

end pro1;

15、控制語句的不同

db2:   

if …then ......elseif then .... end if;

oracle:

if …then ......elsif  then .... end if;

16、如何執行指令碼sql檔案

oracle:

@$path/filename.sql;

db2: 

www.2cto.com

db2 -tvf $path/filename.sql

17、檢視當前使用者的表和檢視

db2:

list   tables

oracle:  

select   *   from   tbab;

db2:drop   table刪除表和定義。list   tables發現表不存在了。

oracle:drop   table刪除表的內容保留表的定義。可以看到表。

mysql 與DB2 的區別

記錄一些常用的函式 一,更新當前時間 mysql update sys user set update data sysdate where id db2 update sys user set update data to char current timestamp yyyy mm dd hh2...

DB2 和 oracle 的 substr區別

db2 的 substr 方法 語法 substr arg1,pos,substr函式返回arg1中pos位置開始的length個字元,如果pos位置開始沒有字元,則返回空格 如果沒有指定length,則返回剩餘的字元。oracle 的 substr 方法 1.substr str,num1,num...

db2與oracle mysql使用區別

1,增加列 相同 alter table test add mail varchar 128 2,刪除列 oracle 與mysql相同 alter table test drop column mail db2 alter table test drop column mail 刪除列後需要reo...