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...