先就從最最基礎的開始吧:
1. select * from EK_STORE_TARGET_D 查詢
2. truncate table EK_STORE_TARGET_D 刪除表數據,表結構不變
3. insert into EK_STORE_TARGET_D
(F_GUID,F_YEAR,F_MONTH,F_DAY,F_Z1MDXSZB,F_MID) //要插入數據的字段
select
t1.F_GUID AS F_GUID,t1.F_YEAR as F_YEAR,t1.F_MONTH as F_MONTH,t1.DAY as F_DAY,t1.DAY_TAR as F_Z1MDXSZB, t1.F_MONTHID as F_MID from EK_STORE_TARGET_G t1;
註釋: 插入的列,從子select 語句中獲取數據,這樣可以批量插入數據;
4. select f_monthid || day as f_guid, f_year,f_month,f_monthid,day,day_tar from xxx
註釋:請注意紅色字體的部分, “ || ” 這個符號在oracle裏面是 拼接的意思,用來拼接兩個字段的值,很好用
5. update EK_STORE_TARGET_D l
set(F_GUID,F_YEAR,F_MONTH,F_DAY,F_Z1MDXSZB,F_MID)=(
select
t1.F_GUID AS F_GUID,t1.F_YEAR as F_YEAR,t1.F_MONTH as F_MONTH,t1.DAY as F_DAY,t1.DAY_TAR as F_Z1MDXSZB, t1.F_MONTHID as F_MID from xxx t1)
註釋: 和insert 類似的,也是批量修改數據
6. select i.f_monthid,i.f_modifydatettime,sum(i.f_date1) as f_date1,sum(i.f_date2) as f_date2
from ek_store_target_g i where i.f_type='目標' group by i.f_monthid,i.f_modifydatettime ;
註釋: 這裏我想說group by 語句的使用, group by 主要是用來統計用的 , 只有出現在 group by 後面的字段,纔可以出現在
select 中,要不然會報錯: 不是group by 子句!
7.oracle 中操作數據的時候,如果位數不夠,可以用lpad 來修補位數,例如,如果位數只有個位數 如:1,而功能中又遇到需要在個位數補0,變成:01 這時候 就應該要用到 lpad 函數!非常的神奇,來看代碼:
select f_year || f_month || lpad(day,2,'0') ||f_branchcode as f_guid....
請注意,是L 不 i ,ipad 是蘋果的平板電腦! 這裏是LPAD,小寫是:lpad; 後面的第一個參數就是要拿來改造,修理的字段名稱,中間的那位數字代表總的需要幾位數,如果只需要個位數補0,顯然只要保持2 位就可以了,後面那個 ‘0’ 就是當day 是個位數的時候,由於不足2位,在前面補上‘0’! 好膩害的樣子!
8. 今天在oracle 中修改數據,當篩選到要修改的數據之後,點擊那個鎖,提示,不能從查詢到的結果中修改,但是在oracle 中有非常多的表,根本找不到那張表,怎麼辦! 這時候尹大神出現,用了一個很簡單的招數:
select t.row_id ,t.* from 表名 where .... 只要在選中的記錄中包含了 row_id字段,這時候再去按那個鎖,就可以打開修改了! 而不用辛辛苦苦去找那張表!
9. oracle 查詢重複數據的sql
select o.x_code from siebel.s_org_ext o where market_type_cd = '直營' group by o.x_code having count(*)>1) order by x_code
先通過某個字段 分組,然後Having 再進一步篩選, count(*)>1 就是分組後 多於1條的數據,就是這個字段重複的記錄數
10. oracle 給表格授權
GRANT ALTER,SELECT,UPDATE,INSERT ON siebel.CX_LOG_SALES TO EIMADMIN;
注意: 授權的賬戶應該是管理員賬戶,sys 或者system
未完待續...