Oracle 學習和使用小結

最近都是在寫sql 語句,存儲過程什麼的,感覺挺有收穫的,我覺得要經常總結總結,記錄一些東西,以後方便自己查閱!
先就從最最基礎的開始吧:


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 
                     




未完待續...
發佈了27 篇原創文章 · 獲贊 3 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章