在公司做專案用到了db2資料庫,以前沒有用過這個資料庫。熟悉oracle的朋友可能對資料庫的邏輯結構和物理結構都比較熟悉,db2資料庫在這方面和oracle也是沒有什麼太大的區別的。
1、db2 訪問前10行資料與oracle區別
db2 :
select * from test fetchfirst 10 rows only
oracle :
select * from test whererownum<=10
查詢語句
db2:不提供**轉換
select * from employeewhere empno=1010;
oracle:提供**轉換
select * from employeewhere empno='1010';
2、db2 insert into與oracle區別
db2 允許有類似這樣多行插入:
insert into staffvalues(1212,'cemy',20,'sales',3,90000,30000);
(1212,'cemy',20,'sales',3,90000,30000);
oracle:
sql> insert into staffvalues(1212,'cemy',20,'sales',3,90000,30000),(1212,'cemy'
,20,'sales',3,90000,30000)
3、db2 update 與oracleupdate
db2db2 update staff set(salary,comm)=(80000,50000);
db2 update staff setsalary=80000,comm=50000;
oracle:
sql> update staff setsalary=80000,comm=50000;
已更新1 行。
4、取得系統日期
oracle:
select sysdate from dual;
db2:
select current timestampfrom 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-121:12:12')
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 tablenameactive 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 modifynode_name varchar(32);
db2:
alter table nodes alternode_name set data type varchar(32);
10、空值處理得到abc
oracle:
select 'abc' || c1 fromt1 (c1 is null)
db2 :
select 'abc『 ||coalesce(c1,'') from t1
11、建立 indexes
oralce:
create table t1.............in data_ta
create index ........ ont1 ...... in indx_ts
db2:
create table t1 ........in data_ts index in indx_ts
create index .....on t1
12、更改列名
oracle :
alter table test renamecolumn mail to mail2;
db2
不提供更改列名功能(解決辦法同刪除,或者通過建立乙個新視**決)
13、更改列型別
oracle :alter table testmodify column (mail2 integer);
db2 :alter table test alter mail varchar(256)只可以加寬,不能更改型別
14 建立procedure的引數的區別
1)引數型別和引數名稱的位置不同
db2:
create procedure pro1 (inorgid int)
oracle:
create procedure pro1(orgid in int)
2)同時作為輸入輸出引數的寫法不同
db2:
create procedure pro1(inout orgid int) inout連著寫
oracle:
create procedure pro1(orgid in out int) inout中間空格隔開,而且必須in在out之前
3)沒有輸入或輸出引數時
db2:
create procedure pro1()
oracle:
create procedure pro1不能有空的括號
變數定義和begin end體的位置不同
db2中變數定義在beginend體內,並且每個變數都要用declare宣告;儲存過程結束時,end後跟p1,並且不需要分號
oracle中變數定義必須在beginend體外,變數都不需要用declare宣告(有種說法是,第乙個變數需要declare,其他變數不需要);儲存過程結束時,end後跟儲存過程的名稱,並且需要分號
db2:
create procedure pro1()
language sql
p1: begin
--變數定義
declare insert_date timestamp;
declare alldept_no varchar(20);
--具體操作
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:
db2 -tvf$path/filename.sql
17、檢視當前使用者的表和檢視
db2:
list tables
oracle:
select * from tbab;
db2:drop table刪除表和定義。list tables發現表不存在了。
oracle:drop table刪除表的內容保留表的定義。可以看到表。
建立 DB2 資料庫
可以使用 tivoli privacy manager 資料庫建立程式或使用資料庫產品介面可以建立 tivoli privacy manager 資料庫 表和配置資料庫。使用 db2 資料庫建立程式 使用 tivoli privacy manager 資料庫建立程式來建立 tivoli privac...
DB2 資料庫物件
資料庫物件 sql可分為三大類 1 ddl,資料定義語言,用於建立 修改 刪除資料庫物件 2 dml,資料操縱語言,用於選擇 插入 更新和刪除資料庫記錄 3 dcl,資料控制語言,用於提供資料物件訪問控制 資料型別 1 內建資料型別 2 用於自定義資料型別 a 自定義區分型別,udt允許在已有的內建...
db2解除安裝資料庫
db2的解除安裝跟其他資料庫不同,需要按照一定的步驟來解除安裝,如果想要徹底解除安裝,首先將資料庫中的各個資料庫刪除 db2 drop db dbname 然後刪除例項,刪除例項前,需要先執行 db2stop 然後執行刪除例項命令 db2idrop db2 此處是例項名 然後在從控制面板解除安裝。如...