数据库随记

Oracle

常用数据类型:


CHAR(length)      存储固定长度字符串,后面自动用空格补齐
VARCHAR(length)   存储可变长度字符串
DATE              日期和时间类型
INTEGER           整数
NUMBER(m,n)       m代表存储的最大位数,n代表小数点右边最大位数
binary_float      单精度的32位浮点数
binary_double     双精度的64位浮点数

获取工作日(除去节假日):

工作日(除去节假日):
f_getWorkdays(dayBegin in Date, dayEnd in Date)

除去周末:
select  f_getkhourwithoutholiday(sysdate,sysdate)/24 from dual 

列转行

列转行(默认逗号分隔):wm_concat() 

Mysql中用GROUP_CONCAT() 默认逗号分隔
例:select GROUP_CONCAT(a.non_bonded_id) as non_bonded_id from crm_base_product 

分组排序

row_number() OVER(partition by 分组列名 ORDER BY 排序列名 asc) as rn

clob的显示

dbms_lob.substr(字段,4000,1)
to_char()  超过4000可能会报错

判断

1case when
select case 字段 when1 then 翻译值1 when2 then 翻译值2 ....end 缺省值 from table

2、decode(字段,1,翻译值 1,2,翻译值 2,…值 n,翻译值 n,缺省值)

3、空值处理函数nvl()
NVL(字段,如果为null的值)
NVL(检测的值,如果不为 null 的值,如果为 null 的值)

补0

左补0:
lpad('3030113466',18,0)

union与union all

Union: 对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序
Union All: 对两个结果集进行并集操作,包括重复行,不进行排序

限制行数

分页:select rownum,t.* from T_ACCOUNT t where rownum<=10

日期截取

trunc(fl.end_time)

数据类型转换

数字转字符串 O_CHAR(1024)
日期转字符串 TO_CHAR(sysdate,'yyyy-mm-dd')
字符串转日期 TO_DATE('2017-01-01','yyyy-mm-dd')
字符串转数字 to_number('100')

group by:

使用group by的两个要素:
(1) 出现在select后面的字段 要么是是聚合函数(sum、count、avg)中的,要么就是group by 中的.
(2) 要筛选结果 可以先使用where 再用group by 或者先用group by 再用having
   group by可多个字段:
         group by CGID,
                  XXMH,
                  lcdt.WLID,
                  lcdt.WLMS,
                  lc.CREATOR,
                  lc.XM,
                  BCQGSL,
                  BH,
                  lcdt.uuid,
                  lcdt.gysdm,
                  lcdt.gysmc,
                  lc.lxwplx,
                  lc.cgqy,
                  lcdt.pm,
                  lc.cgxjblr,
                  lcdt.sqsl,
                   wf1.owner,lc.ccblryid

查找字符串

instr(字段, 'U0010000622') > 0

拼接字符串

拼接:Oracle字符串连接使用“||”进行字符串拼接,其使用方式和MSSQLServer中的加号“+”一样

截取字符串

截取:substr(字段,开始位置,截取几位)

其他

TO_CHAR (case when ... then ...end ,'fm9999999990.00')  //to_char可写在case when外面
oracle聚集函数(MAX,MIN,SUM,AVG等)对于无结果集或结果集为空值的情况下,均返回NULL
insert要提交事务
视图是查询出来的结果集

项目管理最重要的事项
项目管理的三要素分别是时间、成本和质量
在项目管理的各项任务中,最重要的任务是安全管理
组织重建
系统维护
SAP的表取出来一般是不会NULL的,都会初始化成空格

删除从表和中间连接表:Truncate table a
alter修改

刷从表数据

(根据主表ID查出从表uuid)wf_dataUuid
select b.ygcb,b.sapcb,b.bomzcb,b.*                           
  from uf_yfjdbom a                    
  left join uf_yfjdbomdtbd_rl r       
    on r.mainform_data_uuid = a.uuid
  left join uf_yfjdbomdtbd b           
    on b.uuid = r.data_uuid
where a.uuid='732bf828c038437a9e7e73a5d8a81730'

select b.rowid,b.* from  uf_yfjdbomdtbd b
where b.uuid='c8dea547944000019cf9212039401dee'  //从表行select b.* from  uf_yfjdbomdtbd b
where b.uuid='c8dea547944000019cf9212039401dee' for update

删除TRUNCATE 与 DELETE 与 DROP的区别

TRUNCATEDELETE只删除数据, DROP则删除整个表(结构和数据)
1、在使用droptruncate时一定要注意,虽然可以恢复,但为了减少麻烦,还是要慎重。

2、如果想删除部分数据用delete,注意带上where子句,回滚段要足够大;

   如果想删除表,当然用drop; 

   如果想保留表而将所有数据删除,如果和事务无关,用truncate即可;

   如果和事务有关,或者想触发trigger,还是用delete;

   如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。

死锁

SELECT 
 S.USERNAME,
 DECODE(L.TYPE, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', NULL) LOCK_LEVEL,
 O.OWNER,
 O.OBJECT_NAME,
 O.OBJECT_TYPE,
 S.SID,
 S.SERIAL#,
 S.TERMINAL,
 S.MACHINE,
 S.PROGRAM,
 S.OSUSER
  FROM V$SESSION S, V$LOCK L, DBA_OBJECTS O
 WHERE L.SID = S.SID
   AND L.ID1 = O.OBJECT_ID(+)
   AND S.USERNAME IS NOT NULL
 and S.MACHINE='LDS-Z-C8058'
 
 begin
P_KILL_USER_SESSION(P_SID => '196');
end;


select b.owner,
       b.object_name,
       a.session_id,
       a.locked_mode,
       c.serial#,
       c.sid || ',' || c.serial#
  from v$locked_object a, dba_objects b, v$session c
 where b.object_id = a.object_id
   And a.session_id = c.sid;


begin
p_kill_user_session('253');
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值