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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章