DB2中如何實現Oracle的相關功能
DB2中如何實現Oracle的相關功能
在現實的應用中大家可能經常會遇到在DB2中如何實現Oracle的某些功能﹐
在此我簡單地總結一下﹐實現某一功能可能會有很多種方法﹐在此就沒有全部列出﹐
歡迎大家繼續﹐以便和大家共享﹐共同探討﹐共同近步﹗(以下主要以Oracle
8I和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 可以這樣實現﹕
describe tablename;
DB2 可以這樣實現﹕
describe table tablename
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 可以這樣實現﹕
Oracle 可以這樣實現﹕
SQL>@$PATH/filename.sql;
DB2 可以這樣實現﹕
db2 -tvf $PATH/filename 檔案中每行以 ; ?尾
在DB2中如何實現Oracle的相關功能(二)
1.如何檢視資料庫的版本的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
SQL> connect system/manager124@test;
已連線.
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production
DB2 可以這樣實現﹕
在命令視窗執行 db2level
D:/SQLLIB/BIN>db2level
DB210851 Instance "DB2" uses DB2 code release "SQL07020" with level identifier
"03010105" and informational tokens "DB2 v7.1.0.40","n010415" and "WR21254".
2.如何快速清空一個大表的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
SQL>truncate table table_name;
DB2 可以這樣實現﹕
alter table table_name activate not logged initially with empty table;
《如何快速清空一個大表的Oracle和DB2的寫法》
即便是這樣,還是出錯:"SQL1749N不能為表“table_name”啟用not logged initially屬性,因為建立該表時未用not logged initially屬性。SQLSTATE=429AA。"
沒有truncate命令
如果表上沒有trigger,也沒有檢視基於它,可以
create table temp like your_table;
drop table your_table;
rename table temp to your_table;
也可以import/load from a_null_file of del replace into <tabname>
import from /dev/null of del replace into <tabname>
3.如何檢視錶空間的使用狀況的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
SELECT tablespace_name, max_m, count_blocks free_blk_cnt, sum_free_m,
to_char(100*sum_free_m/sum_m, '99.99') || '%' AS pct_free
FROM ( SELECT tablespace_name,sum(bytes)/1024/1024 AS sum_m FROM dba_data_files GROUP BY tablespace_name),
( SELECT tablespace_name AS fs_ts_name, max(bytes)/1024/1024 AS max_m, count(blocks) AS count_blocks,
sum(bytes/1024/1024) AS sum_free_m FROM dba_free_space GROUP BY tablespace_name )
WHERE tablespace_name = fs_ts_name
DB2 可以這樣實現﹕
list tablespace containers for 你的表空間號 show detail;
4.如何從一時間點取出日期的各部分的常用的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
1>.取時間點的年份的寫法:
SELECT TO_CHAR(SYSDATE,'YYYY') FROM DUAL;
2>.取時間點的月份的寫法:
SELECT TO_CHAR(SYSDATE,'MM') FROM DUAL;
3>.取時間點的日的寫法:
SELECT TO_CHAR(SYSDATE,'DD') FROM DUAL;
4>.取時間點的時的寫法:
SELECT TO_CHAR(SYSDATE,'HH24') FROM DUAL;
5>.取時間點的分的寫法:
SELECT TO_CHAR(SYSDATE,'MI') FROM DUAL;
6>.取時間點的秒的寫法:
SELECT TO_CHAR(SYSDATE,'SS') FROM DUAL;
7>.取時間點的毫秒的寫法:(9I以上)
select SUBSTR(systimestamp,20,6) from DUAL;
8>.取時間點的日期的寫法:
SELECT TRUNC(SYSDATE) FROM DUAL;
9>.取時間點的時間的寫法:
SELECT TO_CHAR(SYSDATE,'HH24:MI:SS') FROM DUAL;
10>.日期,時間形態變為字元形態
SELECT TO_CHAR(SYSDATE) FROM DUAL;
11>.將字串轉換成日期或時間形態:
SELECT TO_DATE('2003/08/01') FROM DUAL;
12>.返回引數的星期幾的寫法:
SELECT TO_CHAR(SYSDATE,'D') FROM DUAL;
13>.返回引數一年中的第幾天的寫法:
SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;
14>.返回午夜和引數中指定的時間值之間的秒數的寫法:
SELECT TO_CHAR(SYSDATE,'SSSSS') FROM DUAL;
15>.返回引數中一年的第幾周的寫法:
SELECT TO_CHAR(SYSDATE,'WW') FROM DUAL;
DB2 可以這樣實現﹕
1>.取時間點的年份的寫法:
SELECT YEAR(current timestamp) FROM SYSIBM.SYSDUMMY1;
2>.取時間點的月份的寫法:
SELECT MONTH(current timestamp) FROM SYSIBM.SYSDUMMY1;
3>.取時間點的日的寫法:
SELECT DAY(current timestamp) FROM SYSIBM.SYSDUMMY1;
4>.取時間點的時的寫法:
SELECT HOUR(current timestamp) FROM SYSIBM.SYSDUMMY1;
5>.取時間點的分的寫法:
SELECT MINUTE(current timestamp) FROM SYSIBM.SYSDUMMY1;
6>.取時間點的秒的寫法:
SELECT SECOND(current timestamp) FROM SYSIBM.SYSDUMMY1;
7>.取時間點的毫秒的寫法:
SELECT MICROSECOND(current timestamp) FROM SYSIBM.SYSDUMMY1;
8>.取時間點的日期的寫法:
SELECT DATE(current timestamp) FROM SYSIBM.SYSDUMMY1;
9>.取時間點的時間的寫法:
SELECT TIME(current timestamp) FROM SYSIBM.SYSDUMMY1;
10>.日期,時間形態變為字元形態:
SELECT char(current date) FROM SYSIBM.SYSDUMMY1;
SELECT char(current time) FROM SYSIBM.SYSDUMMY1;
SELECT char(current date+12 hours) FROM SYSIBM.SYSDUMMY1;
11>.將字串轉換成日期或時間形態:
SELECT TIMESTAMP('2002-10-20-12.00.00.000000') FROM SYSIBM.SYSDUMMY1;
SELECT TIMESTAMP('2002-10-20 12:00:00') FROM SYSIBM.SYSDUMMY1;
SELECT DATE('2002-10-20') FROM SYSIBM.SYSDUMMY1;
SELECT DATE('10/20/2002') FROM SYSIBM.SYSDUMMY1;
SELECT TIME('12:00:00') FROM SYSIBM.SYSDUMMY1;
SELECT TIME ('12.00.00') FROM SYSIBM.SYSDUMMY1;
12>.返回引數的星期幾的寫法:
SELECT DAYNAME(current timestamp) FROM SYSIBM.SYSDUMMY1;
SELECT DAYOFWEEK(current timestamp) FROM SYSIBM.SYSDUMMY1;
SELECT DAYOFWEEK_ISO(current timestamp) FROM SYSIBM.SYSDUMMY1;
13>.返回引數一年中的第幾天的寫法:
SELECT DAYOFYEAR(current timestamp) FROM SYSIBM.SYSDUMMY1;
14>.返回午夜和引數中指定的時間值之間的秒數的寫法:
SELECT MIDNIGHT_SECONDS(current timestamp) FORM SYSIBM.SYSDUMMY1;
15>.返回引數中一年的第幾周的寫法:
SELECT WEEK(current timestamp) FORM SYSIBM.SYSDUMMY1;
在DB2中如何實現Oracle的相關功能(三)
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語句的檔名 ;
6. 如何配置Sequence的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
建sequence seq_custid
create sequence seq_custid start 1 incrememt by 1;
建表時:
create table cust
{ cust_id smallint not null,
...}
insert 時:
insert into table cust
values( seq_cust.nextval, ...)
DB2 可以這樣實現﹕
identity欄位屬性用法:
create table時
cust_id smallint not null generated always as indentity (start with 1 increment by 1)
insert 時:
insert into table cust (cust_id, ... ) values ( default, ...)
在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' ;
在現實的應用中大家可能經常會遇到在DB2中如何實現Oracle的某些功能﹐
在此我簡單地總結一下﹐實現某一功能可能會有很多種方法﹐在此就沒有全部列出﹐
歡迎大家繼續﹐以便和大家共享﹐共同探討﹐共同近步﹗(以下主要以Oracle
8I和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 可以這樣實現﹕
describe tablename;
DB2 可以這樣實現﹕
describe table tablename
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的寫法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;
Oracle 可以這樣實現﹕
SQL>@$PATH/filename.sql;
DB2 可以這樣實現﹕
db2 -tvf $PATH/filename 檔案中每行以 ; ?尾
在DB2中如何實現Oracle的相關功能(二)
1.如何檢視資料庫的版本的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
SQL> connect system/manager124@test;
已連線.
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production
DB2 可以這樣實現﹕
在命令視窗執行 db2level
D:/SQLLIB/BIN>db2level
DB210851 Instance "DB2" uses DB2 code release "SQL07020" with level identifier
"03010105" and informational tokens "DB2 v7.1.0.40","n010415" and "WR21254".
2.如何快速清空一個大表的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
SQL>truncate table table_name;
DB2 可以這樣實現﹕
alter table table_name activate not logged initially with empty table;
《如何快速清空一個大表的Oracle和DB2的寫法》
即便是這樣,還是出錯:"SQL1749N不能為表“table_name”啟用not logged initially屬性,因為建立該表時未用not logged initially屬性。SQLSTATE=429AA。"
沒有truncate命令
如果表上沒有trigger,也沒有檢視基於它,可以
create table temp like your_table;
drop table your_table;
rename table temp to your_table;
也可以import/load from a_null_file of del replace into <tabname>
import from /dev/null of del replace into <tabname>
3.如何檢視錶空間的使用狀況的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
SELECT tablespace_name, max_m, count_blocks free_blk_cnt, sum_free_m,
to_char(100*sum_free_m/sum_m, '99.99') || '%' AS pct_free
FROM ( SELECT tablespace_name,sum(bytes)/1024/1024 AS sum_m FROM dba_data_files GROUP BY tablespace_name),
( SELECT tablespace_name AS fs_ts_name, max(bytes)/1024/1024 AS max_m, count(blocks) AS count_blocks,
sum(bytes/1024/1024) AS sum_free_m FROM dba_free_space GROUP BY tablespace_name )
WHERE tablespace_name = fs_ts_name
DB2 可以這樣實現﹕
list tablespace containers for 你的表空間號 show detail;
4.如何從一時間點取出日期的各部分的常用的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
1>.取時間點的年份的寫法:
SELECT TO_CHAR(SYSDATE,'YYYY') FROM DUAL;
2>.取時間點的月份的寫法:
SELECT TO_CHAR(SYSDATE,'MM') FROM DUAL;
3>.取時間點的日的寫法:
SELECT TO_CHAR(SYSDATE,'DD') FROM DUAL;
4>.取時間點的時的寫法:
SELECT TO_CHAR(SYSDATE,'HH24') FROM DUAL;
5>.取時間點的分的寫法:
SELECT TO_CHAR(SYSDATE,'MI') FROM DUAL;
6>.取時間點的秒的寫法:
SELECT TO_CHAR(SYSDATE,'SS') FROM DUAL;
7>.取時間點的毫秒的寫法:(9I以上)
select SUBSTR(systimestamp,20,6) from DUAL;
8>.取時間點的日期的寫法:
SELECT TRUNC(SYSDATE) FROM DUAL;
9>.取時間點的時間的寫法:
SELECT TO_CHAR(SYSDATE,'HH24:MI:SS') FROM DUAL;
10>.日期,時間形態變為字元形態
SELECT TO_CHAR(SYSDATE) FROM DUAL;
11>.將字串轉換成日期或時間形態:
SELECT TO_DATE('2003/08/01') FROM DUAL;
12>.返回引數的星期幾的寫法:
SELECT TO_CHAR(SYSDATE,'D') FROM DUAL;
13>.返回引數一年中的第幾天的寫法:
SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;
14>.返回午夜和引數中指定的時間值之間的秒數的寫法:
SELECT TO_CHAR(SYSDATE,'SSSSS') FROM DUAL;
15>.返回引數中一年的第幾周的寫法:
SELECT TO_CHAR(SYSDATE,'WW') FROM DUAL;
DB2 可以這樣實現﹕
1>.取時間點的年份的寫法:
SELECT YEAR(current timestamp) FROM SYSIBM.SYSDUMMY1;
2>.取時間點的月份的寫法:
SELECT MONTH(current timestamp) FROM SYSIBM.SYSDUMMY1;
3>.取時間點的日的寫法:
SELECT DAY(current timestamp) FROM SYSIBM.SYSDUMMY1;
4>.取時間點的時的寫法:
SELECT HOUR(current timestamp) FROM SYSIBM.SYSDUMMY1;
5>.取時間點的分的寫法:
SELECT MINUTE(current timestamp) FROM SYSIBM.SYSDUMMY1;
6>.取時間點的秒的寫法:
SELECT SECOND(current timestamp) FROM SYSIBM.SYSDUMMY1;
7>.取時間點的毫秒的寫法:
SELECT MICROSECOND(current timestamp) FROM SYSIBM.SYSDUMMY1;
8>.取時間點的日期的寫法:
SELECT DATE(current timestamp) FROM SYSIBM.SYSDUMMY1;
9>.取時間點的時間的寫法:
SELECT TIME(current timestamp) FROM SYSIBM.SYSDUMMY1;
10>.日期,時間形態變為字元形態:
SELECT char(current date) FROM SYSIBM.SYSDUMMY1;
SELECT char(current time) FROM SYSIBM.SYSDUMMY1;
SELECT char(current date+12 hours) FROM SYSIBM.SYSDUMMY1;
11>.將字串轉換成日期或時間形態:
SELECT TIMESTAMP('2002-10-20-12.00.00.000000') FROM SYSIBM.SYSDUMMY1;
SELECT TIMESTAMP('2002-10-20 12:00:00') FROM SYSIBM.SYSDUMMY1;
SELECT DATE('2002-10-20') FROM SYSIBM.SYSDUMMY1;
SELECT DATE('10/20/2002') FROM SYSIBM.SYSDUMMY1;
SELECT TIME('12:00:00') FROM SYSIBM.SYSDUMMY1;
SELECT TIME ('12.00.00') FROM SYSIBM.SYSDUMMY1;
12>.返回引數的星期幾的寫法:
SELECT DAYNAME(current timestamp) FROM SYSIBM.SYSDUMMY1;
SELECT DAYOFWEEK(current timestamp) FROM SYSIBM.SYSDUMMY1;
SELECT DAYOFWEEK_ISO(current timestamp) FROM SYSIBM.SYSDUMMY1;
13>.返回引數一年中的第幾天的寫法:
SELECT DAYOFYEAR(current timestamp) FROM SYSIBM.SYSDUMMY1;
14>.返回午夜和引數中指定的時間值之間的秒數的寫法:
SELECT MIDNIGHT_SECONDS(current timestamp) FORM SYSIBM.SYSDUMMY1;
15>.返回引數中一年的第幾周的寫法:
SELECT WEEK(current timestamp) FORM SYSIBM.SYSDUMMY1;
在DB2中如何實現Oracle的相關功能(三)
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語句的檔名 ;
6. 如何配置Sequence的Oracle和DB2的寫法
Oracle 可以這樣實現﹕
建sequence seq_custid
create sequence seq_custid start 1 incrememt by 1;
建表時:
create table cust
{ cust_id smallint not null,
...}
insert 時:
insert into table cust
values( seq_cust.nextval, ...)
DB2 可以這樣實現﹕
identity欄位屬性用法:
create table時
cust_id smallint not null generated always as indentity (start with 1 increment by 1)
insert 時:
insert into table cust (cust_id, ... ) values ( default, ...)
在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' ;
相關文章
- DB2日誌相關DB2
- 關於圖文識別功能相關技術的大致實現
- 如何尋找Oracle相關的資源?Oracle
- oracle中if/else功能的實現的3種寫法Oracle
- DB2 修改表列相關屬性DB2
- Oracle相關命令Oracle
- 字串相關函式的實現字串函式
- Vue專案中路由動態傳參功能相關實現Vue路由
- 相親交友原始碼開發,前端如何實現水印功能?原始碼前端
- 如何在SQL Server中實現 Limit m,n 的功能SQLServerMIT
- nodejs實現微信小程式支付功能及相關問題總結NodeJS微信小程式
- 深入淺出換膚相關技術以及如何實現
- Oracle Session每日統計功能實現XLAMOracleSession
- python的爬蟲功能如何實現Python爬蟲
- Oracle連線Db2OracleDB2
- 關於轉儲Oracle索引資訊的相關命令Oracle索引
- 如何TypeScript中相對優雅地實現類的多繼承TypeScript繼承
- ORACLE建庫過程中自動生成的跟鎖相關的VIEWOracleView
- 如何用GO實現一個tail -f功能以及相應的思維發散GoAI
- php實現七牛雲相關操作PHP
- CSS 實現搜尋相關互動CSS
- [20220927]如何實現sqlcl的repeat功能.txtSQL
- Oracle如何實現B樹索引Oracle索引
- vue3+ts實現一個canvas畫筆繪圖功能,並匯出相關的切片VueCanvas繪圖
- 如何實現前端錄音功能前端
- Trie|如何用字典樹實現搜尋引擎的關鍵詞提示功能
- Oracle相關資料字典檢視Oracle
- oracle臨時表空間相關Oracle
- 4.2.10.1 Oracle Restart 相關變數配置OracleREST變數
- 19 Oracle Data Guard 相關檢視Oracle
- oracle鎖級別相關測試Oracle
- html 列印相關操作與實現詳解HTML
- 18 與Oracle Data Guard 相關的SQL語句OracleSQL
- 關於oracle中的undoOracle
- python 計算兩個列表的相關係數的實現Python
- ORACLE 12.2中的更改與新功能Oracle
- 如何開發陪玩系統原始碼的列表頁面,相關實現程式碼原始碼
- MySQL 06 mysql 如何實現類似 oracle 的 merge intoMySqlOracle