db2存储结构换Oracle,DB2中实现Oracle的功能
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' ;
1.如何查有多少個數據庫實例的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
SQL>SELECT * FROM V$INSTANCE;
DB2 可以這樣實現﹕
在命令窗口執行 db2ilist
2.如何查詢數據庫有多少表的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
SQL>select * from all_tables;
DB2 可以這樣實現﹕
在命令中心執行
select?*?from syscat.tables;
3.如何知道表鎖的情況的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
SQL>SELECT S.SID SESSION_ID, S.USERNAME, DECODE(LMODE, 0,?'None', 1, 'Null', 2, 'Row-S?(SS)', 3, 'Row-X (SX)', 4, 'Share', 5, 'S/Row-X (SSX)', 6, 'Exclusive', TO_CHAR(LMODE))?MODE_HELD, DECODE(REQUEST, 0, 'None', 1, 'Null', 2, 'Row-S (SS)', 3, 'Row-X (SX)', 4,?'Share', 5, 'S/Row-X (SSX)', 6, 'Exclusive', TO_CHAR(REQUEST)) MODE_REQUESTED,?O.OWNER||'.'||O.OBJECT_NAME||' ('||O.OBJECT_TYPE||')', S.TYPE LOCK_TYPE, L.ID1 LOCK_ID1,?L.ID2 LOCK_ID2 FROM V$LOCK L, SYS.DBA_OBJECTS O, V$SESSION S WHERE L.SID = S.SID AND?L.ID1 = O.OBJECT_ID
DB2 可以這樣實現﹕
在你執行你的存儲過程之前,執行命令打開鎖的監視開光
db2 update monisor switches using lock on ;
然后執行你的存儲過程,在執行存儲過程期間的時候使用命令
db2 get snapshot for locks on yourdatdabasename ;
就可以看見了你鎖情況了
4.如何對鎖住的表進行解鎖的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
SQL>alter system kill session 'sid,service#';
DB2 可以這樣實現﹕
db2 force application all ;
db2 terminate ;
5.測試SQL語句執行所用的時間的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
SQL>set timing on ;
SQL>select * from tablename;
DB2 可以這樣實現﹕
db2batch -d 庫名 -f 含有SQL語句的文件名 ;
1.如何查看數據庫的版本的Oracle和DB2的寫法
Oracle可以這樣實現﹕
SQL>connectsystem/manager124@test;
已聯機.
SQL>select*fromv$version;
BANNER
----------------------------------------------------------------
Oracle9iEnterpriseEditionRelease9.2.0.1.0-Production
PL/SQLRelease9.2.0.1.0-Production
CORE?9.2.0.1.0?Production
TNSfor32-bitWindows:Version9.2.0.1.0-Production
NLSRTLVersion9.2.0.1.0-Production
DB2可以這樣實現﹕
在命令窗口執行db2level
D:\SQLLIB\BIN>db2level
DB210851Instance"DB2"usesDB2coderelease"SQL07020"withlevelidentifier
"03010105"andinformationaltokens"DB2v7.1.0.40","n010415"and"WR21254".
2.如何快速清空一個大表的Oracle和DB2的寫法
Oracle可以這樣實現﹕
SQL>truncatetabletable_name;
DB2可以這樣實現﹕
altertabletable_nameactivenotloggedinitiallywithemptytable;
3.如何查看表空間的使用狀況的Oracle和DB2的寫法
Oracle可以這樣實現﹕
SELECTtablespace_name,max_m,count_blocksfree_blk_cnt,?sum_free_m,to_char(100*sum_free_m/sum_m,'99.99')||'%'AS
pct_free
FROM(SELECTtablespace_name,sum(bytes)/1024/1024ASsum_mFROMdba_data_filesGROUPBY?tablespace_name),
(SELECTtablespace_nameASfs_ts_name,max(bytes)/1024/1024ASmax_m,count(blocks)AS?count_blocks,
sum(bytes/1024/1024)ASsum_free_mFROMdba_free_spaceGROUPBY?tablespace_name)
WHEREtablespace_name=fs_ts_name
DB2可以這樣實現﹕
listtablespacecontainersfor你的表空間號showdetail;
4.如何從一時間點取出日期的各部分的常用的Oracle和DB2的寫法
Oracle可以這樣實現﹕
1>.取時間點的年份的寫法:
SELECTTO_CHAR(SYSDATE,'YYYY')FROMDUAL;
2>.取時間點的月份的寫法:
SELECTTO_CHAR(SYSDATE,'MM')FROMDUAL;
3>.取時間點的日的寫法:
SELECTTO_CHAR(SYSDATE,'DD')FROMDUAL;
4>.取時間點的時的寫法:
SELECTTO_CHAR(SYSDATE,'HH24')FROMDUAL;
5>.取時間點的分的寫法:
SELECTTO_CHAR(SYSDATE,'MI')FROMDUAL;
6>.取時間點的秒的寫法:
SELECTTO_CHAR(SYSDATE,'SS')FROMDUAL;
7>.取時間點的毫秒的寫法:(9I以上)
selectSUBSTR(systimestamp,20,6)fromdual;
8>.取時間點的日期的寫法:
SELECTTRUNC(SYSDATE)FROMDUAL;
9>.取時間點的時間的寫法:
SELECTTO_CHAR(SYSDATE,'HH24:MI:SS')FROMDUAL;
10>.日期,時間形態變為字符形態
SELECTTO_CHAR(SYSDATE)FROMDUAL;
11>.將字符串轉換成日期或時間形態:
SELECTTO_DATE('2003/08/01')FROMDUAL;
12>.返回參數的星期幾的寫法:
SELECTTO_CHAR(SYSDATE,'D')FROMDUAL;
13>.返回參數一年中的第幾天的寫法:
SELECTTO_CHAR(SYSDATE,'DDD')FROMDUAL;
14>.返回午夜和參數中指定的時間值之間的秒數的寫法:
SELECTTO_CHAR(SYSDATE,'SSSSS')FROMDUAL;
15>.返回參數中一年的第幾周的寫法:
SELECTTO_CHAR(SYSDATE,'WW')FROMDUAL;
DB2可以這樣實現﹕
1>.取時間點的年份的寫法:
SELECTYEAR(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
2>.取時間點的月份的寫法:
SELECTMONTH(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
3>.取時間點的日的寫法:
SELECTDAY(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
4>.取時間點的時的寫法:
SELECTHOUR(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
5>.取時間點的分的寫法:
SELECTMINUTE(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
6>.取時間點的秒的寫法:
SELECTSECOND(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
7>.取時間點的毫秒的寫法:
SELECTMICROSECOND(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
8>.取時間點的日期的寫法:
SELECTDATE(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
9>.取時間點的時間的寫法:
SELECTTIME(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
10>.日期,時間形態變為字符形態:
SELECTchar(currentdate)FROMSYSIBM.SYSDUMMY1;
SELECTchar(currenttime)FROMSYSIBM.SYSDUMMY1;
SELECTchar(currentdate+12hours)FROMSYSIBM.SYSDUMMY1;
11>.將字符串轉換成日期或時間形態:
SELECTTIMESTAMP('2002-10-20-12.00.00.000000')FROMSYSIBM.SYSDUMMY1;
SELECTTIMESTAMP('2002-10-2012:00:00')FROMSYSIBM.SYSDUMMY1;
SELECTDATE('2002-10-20')FROMSYSIBM.SYSDUMMY1;
SELECTDATE('10/20/2002')FROMSYSIBM.SYSDUMMY1;
SELECTTIME('12:00:00')FROMSYSIBM.SYSDUMMY1;
SELECTTIME('12.00.00')FROMSYSIBM.SYSDUMMY1;
12>.返回參數的星期幾的寫法:
SELECTDAYNAME(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
SELECTDAYOFWEEK(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
SELECTDAYOFWEEK_ISO(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
13>.返回參數一年中的第幾天的寫法:
SELECTDAYOFYEAR(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
14>.返回午夜和參數中指定的時間值之間的秒數的寫法:
SELECTMIDNIGHT_SECONDS(currenttimestamp)FORMSYSIBM.SYSDUMMY1;
15>.返回參數中一年的第幾周的寫法:
SELECTWEEK(currenttimestamp)FORMSYSIBM.SYSDUMMY1;
在DB2中如何實現Oracle的相關功能
在現實的應用中大家可能經常會遇到在DB2中如何實現Oracle的某些功能﹐在此我簡單地總結一下﹐實現某一功能可能會有很多種方法﹐在此就沒有全部列出﹐歡迎大家繼續﹐以便和大家共享﹐共同探討﹐共同近步﹗(以下主要以Oracle8I和DB2 7.X為例)。
1.如何取一表前n筆記錄的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
Select * from user.bsempms where rownum<=n;
DB2 可以這樣實現﹕
Select * from db2admin.bsempms fetch first n rows only;
另外也可以用 row_number() over() 去實現的;
2.如何取得當前日期的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
Select sysdate from dual;
DB2 可以這樣實現﹕
Select current timestamp from sysibm.sysdummy1;
3.如何連接字段的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
Select emp_no||emp_nam from bsempms;
Select concat(emp_no,emp_nam) from bsempms;
DB2 可以這樣實現﹕
Select emp_no||emp_nam from db2admin.bsempms;
select emp_no concat emp_nam from db2admin.bsempms;
4.如何查詢表的結構的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
Select sysdate from dual;
DB2 可以這樣實現﹕
Select current timestamp from sysibm.sysdummy1;
5.內連接INNER JOIN的Oracle和DB2的寫法
Oracle可以這樣實現﹕
Select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no;
DB2 可以這樣實現﹕
Select * from db2admin.bsempms inner join db2admin.bsdptms
on db2admin.bsempms.dpt_no=db2admin.bsdptms.dpt_no;
6.外連接的Oracle和DB2的寫法(右外連接,左外連接,完全外連接,組合外連接)
Oracle可以這樣實現﹕
Select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no(+);
Select a.* from bsempms a,bsdptms b wherea.dpt_no(+)=b.dpt_no;
DB2 可以這樣實現﹕
Select * from db2admin.bsempms right outer join db2admin.bsdptms
on db2admin.bsempms.dpt_no=db2admin.bsdptms.dpt_no;
Select * from db2admin.bsempms left outer join db2admin.bsdptms
on db2admin.bsempms.dpt_no=db2admin.bsdptms.dpt_no;
Select * from db2admin.bsempms full outer join db2admin.bsdptms
on db2admin.bsempms.dpt_no=db2admin.bsdptms.dpt_no;
7.如何執行腳本SQL文件的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
SQL>@$PATH/filename.sql;
DB2 可以這樣實現﹕
db2 -tvf $PATH/filename.sql 文件中每行以 ; 結尾
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的db2存储结构换Oracle,DB2中实现Oracle的功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 隔离型RS232串口电路
- 下一篇: VS各个版本的密钥及下载地址