在DB2中如何實現Oracle的相關功能(四)
作者﹕CCBZZP
在現實的應用中大家可能經常會碰到在DB2中如何實現Oracle的某些功能﹐
在此我簡單地總結一下﹐實現某一功能可能會有很多種方法﹐在此就沒有全部列出﹐
歡迎大家繼續﹐以便和大家共享﹐共同探討﹐共同近步﹗(以下主要以Oracle
8I,9I和DB2 7.X為例)。
1.如何實現分頁顯示的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
SQL>select rownum,* from BSEMPMS where rownum >=5 and rownum <=100;
DB2 可以這樣實現﹕
select * from (select ROW_NUMBER() over() as a, db2admin.bsempms.* from
db2admin.bsempms) as temp where a>=5 and a<=100 ;
2.利用別的表創建表的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
SQL>create table a as select * from b ;
DB2 可以這樣實現﹕
create table a like b ;
3.如何更改用戶密碼的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
SQL>alter user user123 identified by passWord_new;
DB2 可以這樣實現﹕
connect to dbname user db2admin using oldpassw new newpassw confirm newpassw ;
4.如何增加用戶的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
SQL>create user user123 identified by password_new;
DB2 可以這樣實現﹕
添加用户:
“开始/设置/控制面板/用户”添加一个用户名(例:db2admin)
分配权限:
grant dbadm on database to user 用户名
5.兩個結果集互減的函數的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
SQL>SELECT * FROM BSEMPMS_OLD MINUS SELECT * FROM BSEMPMS_NEW;
DB2 可以這樣實現﹕
SELECT * FROM BSEMPMS_OLD EXCEPT SELECT * FROM BSEMPMS_NEW;
SELECT * FROM BSEMPMS_OLD EXCEPT ALL SELECT * FROM BSEMPMS_NEW;
6.兩個結果集互加的函數的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
SQL>SELECT * FROM BSEMPMS_OLD INTERSECT SELECT * FROM BSEMPMS_NEW;
SQL>SELECT * FROM BSEMPMS_OLD UNION SELECT * FROM BSEMPMS_NEW;
SQL>SELECT * FROM BSEMPMS_OLD UNION ALL SELECT * FROM BSEMPMS_NEW;
DB2 可以這樣實現﹕
SELECT * FROM DB2ADMIN.BSEMPMS
UNION
SELECT * FROM DB2ADMIN.BSEMPMS ;
SELECT * FROM DB2ADMIN.BSEMPMS
UNION ALL
SELECT * FROM DB2ADMIN.BSEMPMS ;
7.如何找数据库表的主键字段的名称的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
SQL>SELECT * FROM user_constraints WHERE CONSTRAINT_TYPE='P' and table_name='TABLE_NAME';
DB2 可以這樣實現﹕
select colnames from syscat.indexes where tabname='TABLE_NAME' ;
待續...