1、說明:
這里假設一種應用場景!
假設,銀行系統中有大量的數據需要及時備份,如何才能快速高效呢!
條件需求:
(1)、不能設置同步鎖(設置的會影響銀行正常業務進行!使得銀行系統處於維護狀態,這是不允許的!)
(2)、盡量高效,因為銀行中的數據是海量的,一般的SQL語句的效率不能夠滿足高性能!
(3)......
2、解決方案:
1、備份結果集成一個新的備份表:
說明:這里備份的是一個結果集!
SQL語句:
create table emp_bak
(
select * from emp
);
2、如何備份一個空表結構:
SQL語句:
create table emp_bak
(
select * from emp
where 1 <> 1
);
3、第一次備份之后,若需要再次備份數據:
SQL語句:
insert into emp_bak
(
select * from emp where rownum<=10
);
4、如何判斷接下來的備份是不是第一次備份數據!
說明:
為甚要做這種判斷,很簡單,因為第一次備份數據,是涵蓋了創建備份的數據表的操做,之后的備份是一種新增操作,是不同的2中類型操做!所以需要區分!
SQL語句:(這里我們需要查詢視圖,獲取視圖中備份數據的用戶的對象,再去該用戶下查詢用戶下的表!)
1、select * from user_tables; ----查詢用戶視圖,在查到的數據結果集中找到需要驗證的用戶
2、select * from emp_bak; ---去查詢這個用戶下的數據(也就是用戶全下的表:),如果結果集中是空的(說明沒有備份表的存在),那么就說明,以前沒有備份數據表
5、如何一條insert語句插入多條數據!
說明:需要使用union關鍵字
SQL語句:
insert into emp
select 's001',11'Jason' from dual
union
select 's002',12,'Jack' from dual
union
select 's003',13,'Rose' from dual;
執行以上的SQL語句就可以一次性添加三條數據!
