wsjz_01 发表于 2018-9-21 11:55:57

oracle常用的关键字

  Oracle基础数据类型:
  4类:
  字符型:字符串
  char(最大2000), nchar(最大1000, 支持Unicode)--->固定长度
  varchar2(最大4000), nvarchar2(最大2000, 支持Unicode)--->可变长度
  数字类型
  包括整数和小数
  number(有效数字, 总位数);
  float()--->存储二进制类型的数据, 1-126位0.30103
  日期类型:时间
  date:取值范围:公元前4712年1月1号---公元9999年12月31号, 可以直接精确到秒
  timestamp(时间戳: 更精确的数据, 可以精确到毫秒)
  其它类型:大文本, 文件
  blob: 最大4G, 以二进制的形式来存放数据
  clob: 最大4G, 以字符串的形式存放
  Oracle运算符和表达式
  表达式类似于java, 可以是常量, 可以是变量, 也可以是表中的一个字段
  算术运算符(+ - * /)
  比较运算符(> >= <   group by--(group by 增强)-------结合分组函数使用 SELECT deptid FROM emp GROUP BY deptid
  having
  set
  distinct----去除一列中的重复;
  between...and(闭合区间, 即包括前面的数, 也包括后面的数)
  all-------SELECT * FROM emp e WHERE e.intime>=ALL(SELECT e1.intime FROM emp e1);
  asc,desc
  union all与union
  -----
  select jkhtbh, jkrxm, jkrzjh, htdkje, b.mc
  from grdk_sq_htxx a, bm_khjg b
  where jkhtbh in
  (select jkhtbh
  from grdk_dk_zz
  where dkffrq >= to_Date('20180101', 'yyyymmdd')
  and grbh in
  (select grbh
  from grdk_Sq_htxx
  where jkhtbh in
  (select jkhtbh
  from grdk_dk_zz
  where dkffrq < to_Date('20180101', 'yyyymmdd'))
  union
  select grbh
  from grdk_Sq_gtjkr
  where jkhtbh in
  (select jkhtbh
  from grdk_dk_zz
  where dkffrq < to_Date('20180101', 'yyyymmdd'))))
  and a.jgbm = b.bm;
  exists
  ----
  select * fromgrdk_tx_hk_yh a where hkrq=date '2018-05-01'
  and swtyhbm like '0103' and ykbxhj=gjjtqje and exists(
  select * from grdk_dk_hkmx where jkhtbh=a.jkhtbh and ywlsh='218051601_0002268866'
  );
  select nvl(sum(1),0) into v_cnt from dual
  where exists(select crbh from cr_jbxx_bg where crbh=v_dwbh and spzt='0' and bgxmdm='jcblbm');
  if v_cnt0 then
  v_msg:='此单位已录入单位缴存比例批量调整清册!';
  return ;
  end if;
  select count(*) from cr_gr a where f_sfz(a.zjhm)1 and a.zjlx='01'
  and exists(select 1 from gjzf_gr_zz where grzhzt in('01','02') and grbh=a.grbh);------------exists和in的类比
  select count(*) from cr_gr a where f_sfz(a.zjhm)1 and a.zjlx='01'
  and a.grbh in(select grbh from gjzf_gr_zz where grzhzt in('01','02') and grbh=a.grbh);------------exists和in的类比
  inner join,left outer join,right outer join
  case...when...then...else   ---SELECT CASE E.SSEX WHEN 1 THEN '男' WHEN 0 THEN '女' ELSE '不详' END bb FROM EMP E;
  ----insert into tmp_hfb_jcdw_jkdzhd_cx
  (id,
  jyrq,
  skyhmc,
  skyhbm,
  yhzhhm,
  zhaiyao,
  fse,
  skzhhm,
  skzhmc,
  yhjslsh,
  beizhu,
  dwzh,
  dwmc,
  fkzhhm,
  fkzhmc,
  fkyhmc,
  fkyhbm,
  lsztmc,
  lsztbm)
  select a.id,
  jysj,
  nvl(b.mc, ' ') yhmc,
  a.yhbm,
  a.yhzhhm,
  zhaiyao,
  fse,
  skzhhm,
  skzhmc,
  yhjslsh,
  ' ',
  nvl(d.dwzh, ' ') dwzh,
  nvl(c.dwmc, ' ') dwmc,
  fkzhhm,
  fkzhmc,
  nvl(e.sszh, ' ') skzhhm,
  nvl(f.mc, ' ') skzhmc,
  case
  when hdid = 0 then
  '未核对'
  else
  '已核对'
  end,
  case
  when hdid = 0 then
  '01'
  else
  '02'
  end
  from im_yhzh_yemx a
  left join bm_yhbm b
  on a.yhbm = b.bm
  and b.jgbm like '01%'
  left join cr_dw c
  on a.fkzhmc = c.jbzhkhmc
  and (a.fkzhhm = c.jbzhkhyh or a.fkzhhm = c.jbzhyhzh2 or
  a.fkzhhm = c.jbzhyhzh3 or a.fkzhhm = c.jbzhyhzh4)
  left join gjzf_dw_zz d
  on d.dwbh = c.dwbh
  left join im_zhsz_dw e
  on a.fkzhhm = e.yhzhhm
  and a.fkzhmc = e.yhzhmc
  left join bm_sszh f
  on e.sszh = f.bm
  where jysj between v_ksrq and v_jsrq
  and fse between v_ksjyje and v_jsjyje
  and fsefx = '01'
  and a.yhbm like v_yhbm;
select dkffe 贷款发放额,  
(case
  
       when dkhkfs='01' then '等额本息'
  
       when dkhkfs='70' then '等本等息'
  
       when dkhkfs='02' then '等本本金'
  
       when dkhkfs='03' then '一次还款付息'
  
       when dkhkfs='03' then '自由还款方式'
  
end) as dkhkfsfrom grdk_dk_zz;


页: [1]
查看完整版本: oracle常用的关键字