最近都是在写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
未完待续...
先就从最最基础的开始吧:
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
未完待续...