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 可能会报错
判断
1 、case when
select case 字段 when 值1 then 翻译值1 when 值2 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' )
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的区别
TRUNCATE 和DELETE 只删除数据, DROP 则删除整个表(结构和数据)
1 、在使用drop 和truncate 时一定要注意,虽然可以恢复,但为了减少麻烦,还是要慎重。
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 ;