1. 程式人生 > >oracle學習之集合運算和數據處理

oracle學習之集合運算和數據處理

使用 表頭 spa 回滾 dml語句 evo 樣式 sum 設置

集合運算主要有三種方式:

並集,union 兩個集合相同的部份只保留一份,不同部份全部保留

   union all 兩個集合全部保留

交集,intersect 兩個集合保留相同的部份

差集,minus A差集B 保留 A中不在B中出現的部份

技術分享

集合運算的註意事項:

1,參與運算的各個集合必須列數相同,且類型一致!

2,采用第一個集合的表頭作為最終使用的表頭,(別名也只能在第一個集合上起)

3,可以使用括號(),先執行後面的語句。

使用示例:

select * from emp where deptno=10 union select * from emp where deptno=20;

技術分享

select *from emp where deptno in(10,30)  
minus 
select * from emp where deptno in( 20,10);

技術分享

難題分析,下面是最終執行結果:

技術分享

分析後,可知道,有三個集合:

各個部門各個工種的工資總額 = 集合1

各個部門的工資總額 = 集合2

工資總額 = 集合3

最後將三個集合取並集:

技術分享

發現得到上面的錯誤,這裏需要註意集合運算的註意事項

技術分享

select deptno,job,sum(sal) from emp group by deptno,job  union 
select deptno,to_char(null),sum(sal) from emp group by deptno union 
select to_number(null),to_char(null),sum(sal) from emp ;

  在這裏,為了達到與題意一樣的效果,需要設置報表顯示樣式:

break on deptno skip 2;

  不使用時,記得關閉顯示效果:

break on null;

  最終結果如下圖:

技術分享

數據處理,SQL語言分類如下:

1,DML,即date manipulation language 數據操作語言,含:insert,update,delete,select

2,DDL,即date definition language 數據定義語言,含:create,alter,truncat

3,DCL,即date control language 數據控制語言,含:grant賦權,revoke回收權限

insert插入語句:

語法 : insert into tablename[(col1,col2,…)] values(val1,val2,…)|查詢結果集;

 比如:

//隱式插入null
insert into dept(deptno,dname) values(60,‘60name‘);
//顯示插入null
insert into dept values(70,‘70name‘,null);

  還可以使用地址符號 &

技術分享

可以繼續使用 / 調用上次使用的語句,繼續輸入值插入數據,非常方便 !

批量插入數據:

//創建表,並復制表結構:
create table emp10 as select * from emp where 1 = 2;
//一次性插入10號部門的員工
insert into emp10 select * from emp where deptno =10;

  update 修改數據,語法:

update tablename set col1=val1,col2=val2… where cond..;

  例子如下:

update dept set loc=‘60loc‘ where deptno = 60;
//註意,同樣可以使用&取址符號,對所有DML語句都通用。

  delete 刪除數據,與update一樣

這裏需要註意,delete刪除數據是逐條刪除,而truncate是先摧毀表,再重建,將數據全部清除

truncate table emp10;

  當數據量較大的時候,建議使用truncate

delete與turncate的區別:

1,delete逐條刪除,truncate推毀表重建

2,Delete不會釋放空間,truncate會釋放

3,delete 可以rollback,truncate不能回滾

最後補充一點:

語句執行時間記錄開關:
set timing on/off
回顯開關:
set feedback on/off

  

oracle學習之集合運算和數據處理