說說db2資料庫

2021-06-18 04:23:42 字數 4486 閱讀 3655

在公司做專案用到了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 此處是例項名 然後在從控制面板解除安裝。如...