ORACLE中常用的知识点
一:oracle的导入导出
1. 导入
IMP 用户名/密码@数据库名称 file=数据库存储地址 fromuser=指对方数据库用户名 touser=指你的数据库的用户名
//例如:
imp AA_AA/kingo@ORCLE file=D:\AA_AA_dmp.DMP fromuser=BB_BB touser=AA_AA
2. 导出
EXP 用户名/密码@数据库名称 将要保存的地址
//例如:
exp AA_AA/kingo@ORCLE file=E:\xxxx.dmp
二:oracle中的时间转换
1. 将 2016-5-20 10:30 转换为 2016-5-20
to_char(to_date(a.rdt,'yyyy-mm-dd,hh:mi'),'yyyy-mm-dd') as sj
2. 将2015/5/7 转换为2015-5-7
to_char(m.fbsj,'yyyy-MM-dd') as sj
三:查询排序
1. rownum
- 查询前10条数据,oracle中不支持top,应用rownum
select * from (
select rownum as nums, x.xxzt,x.fssj, x.id from OA_FXX x order by x.fssj desc
) w where w.nums<9
2. 排序
- rownum和row_number()排序
select **rownum** as num, v.* from V_OA_GWCXLB v
select **row_number() over (order by LRSJ desc)** as nums,
m.* from OA_XZMK m
- 按照笔划排
select * from dept order by **nlssort(name,'NLS_SORT=SCHINESE_STROKE_M')**;
- 按照部首排序
select * from dept order by **nlssort(name,'NLS_SORT=SCHINESE_RADICAL_M')**;
- 按照拼音排序,此为系统的默认排序方式
select * from dept order by **nlssort(name,'NLS_SORT=SCHINESE_PINYIN_M')**;
四:csae…when 和decode()的用法
DECODE 与CASE WHEN 的比较:
1、DECODE 只有Oracle 才有,其它数据库不支持;
2、CASE WHEN的用法, Oracle、SQL Server、 MySQL 都支持;
3、DECODE 只能用做相等判断,但是可以配合sign函数进行大于,小于,等于的判断,CASE when可用于=,>=,<,<=,<>,is null,is not null 等的判断;
4、DECODE 使用其来比较简洁,CASE 虽然复杂但更为灵活;
1、 case….when的用法
to_char(case h.sf_crfs when '02' then '挂牌' when '03' then '招标' else '拍卖' end) as crfs
2. decode()的用法
用法: decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
注释:
if (条件==值1)
then
return(翻译值1)
elsif (条件==值2)
then
return(翻译值2)
例如: decode( x.gdzmj_dw,0,x.gdzmj,1,(x.gdzmj*15)) as gdzmj
五: oracle中行转列函数WMSYS.WM_CONCAT()用法
- 将查询出来的字段用 “,” 拼接起来。期望结果:
id | cname | pname |
---|---|---|
1 | 百度 | 技术部,市场部 |
2 | 研发部 |
select WMSYS.WM_CONCAT(to_char(TDYTXL)) as tdyt_name From tdgy_dkyt t
四:oracle表中的一些修改
1. 修改表中字段的长度
用法: alter table 表名 modify 字段名 NVARCHAR2(200)
例子: alter table TDGY_JBXX modify pzbh NVARCHAR2(200)
2. 修改表中字段的名称
用法: alter table 表名rename column 原字段名 to 新字段名
例子: alter table test rename column aa to bb