zoukankan      html  css  js  c++  java
  • Oracle 数据库常用语法

    1、创建自增列

    复制代码
    1 -- Create sequence 创建sequence
    2 create sequence T41_R_ITEM_FIELDKEY
    3 minvalue 1
    4 maxvalue 99999999999999
    5 start with 10220
    6 increment by 1
    7 cache 20;
    复制代码

    2、查询重复的数据

    1 select cid,cname,cage,city,address from tbl_ABC where city in (select city from tbl_ABC group by city having count(city) > 1) order by opendate;

    3、case用法when

    复制代码
    1 SELECT 
    2 CASE 
    3   WHEN T.FLAG='0' THEN T.USERID
    4   WHEN T.FLAG='1' THEN T.ORGID
    5   ELSE NULL
    6 END AS '标识'
    7 FROM XTXMXX T
    复制代码

    4、decode用法

    1 --如果FLAG等于1,则转为USERID,如果为0,则转为ORGID,其他的为2
    2 SELECT DECODE(T.FLAG,1,T.USERID,0,T.ORGID,2) FROM XTXMXX T ;

    5、nvl 从两个表达式返回一个非 null 值。

    1 ---如果a.name不为空,返回姓名,否则返回 “空的”
    2 select nvl(a.name,'空得') as name from student a join school b on a.ID=b.ID

    6、常用的三种链接

    复制代码
     1 --右连接  反方向连接
     2 SELECT * FROM SX02_PROGRAM T,SX03_GL_ACCASS L WHERE T.PROGRAMNO(+)=L.CITEM_ID;
    3 4 --左链接 5 SELECT * FROM SX02_PROGRAM T,SX03_GL_ACCASS L WHERE T.PROGRAMNO=L.CITEM_ID(+); 6 7 --特殊连接 8 SELECT T.PROGRAMNO, (SELECT P.BONDNO FROM SX05_CONTRACT P WHERE P.PROGRAMNO=T.PROGRAMNO) FROM SX02_PROGRAM T,SX03_GL_ACCASS L WHERE T.PROGRAMNO=L.CITEM_ID;
    复制代码

    7、批量更新数据

    复制代码
    1 --多列更新
    2 UPDATE QJGL T SET (T.ZJQHZJRQ,T.ZJQHZJJE,T.LJQHZJJE)=
    3 (
    4 --此处只能查询单一值,故要关联
    5 SELECT TT.ZJZJZJRQ,TT.ZJZJZJJE,TT.LJZJZJJE FROM QJGL TT
    6 WHERE T.XTXMBH=TT.XTXMBH
    7 );
    复制代码

    8、ROW_NUMBER分组排序

    select cc.serialno,
           cc.objectno,
           cc.corpuspaysum,
           --PARTITION BY:分组   ORDER BY:排序  可正序倒序
           ROW_NUMBER() OVER(PARTITION BY cc.objectno ORDER BY cc.corpuspaysum desc) as rn
      from sx01_contract_paysource cc;

    9、保留两位小数

    复制代码
     1 ---最终保存成字符串类型
     2 ---使用to_char()函数 
     3 
     4 
     5  // 小数点前的9和0代表一位数字,个位数用0防止0显示成.00
     6  // 其9代表:如果存在数字则显示数字,不存在则显示空格
     7  // 其0代表:如果存在数字则显示数字,不存在则显示0,即占位符
     8  // 其FM代表:删除如果是因9带来的空格,则删除之
     9  select to_char(123456,'FM999999999999990.00') as aa from dual;
    10  select to_char(123456,'999999999999990.00') as aa from dual;
    11  // ||表示字符串拼接,结果是59.00%
    12  select to_char(0.59/1.00*100,'FM999,999,999,999,990.00')||'%' from dual
    13  // 如果不需要四舍五入,则需要trunc一下,否则显示0.60
    14  select to_char(trunc(0.596,2),'FM999,999,999,999,990.00') from dual
    15 
    16 ---最终仍保存成数字类型
    17 ---使用cast()函数
    18 
    19 // number中第一个参数表示将要转换的数字长度,后一个参数表示保留小数位数
    20 select cast(123456 as number(18,2)) as aa from dual;
    复制代码

    10、not exists和not in的区别

    复制代码
     1 ---对于not exists查询,内表存在空值对查询结果没有影响;对于not in查询,内表存在空值将导致最终的查询结果为空。 
     2 
     3  ---对于not exists查询,外表存在空值,存在空值的那条记录最终会输出;对于not in查询,外表存在空值,存在空值的那条记录,最终将被过滤,其他数据不受影响
     4 
     5  --这时能查出结果
     6 select value from temp_a a where a.id between 1 and 100 and not exists(select * from temp_b b where a.value=b.value);
     7 
     8  --此时查出的结果为空.
     9 
    10 select value from temp_a a where a.id between 1 and 100 and a.value not in(select value from temp_b)
    11
    12 --tab_a存在且tab_b也存在的数据
    13 select h.carid ,j.PERMIT_OPERATOR , from (select s.carid,s.CONAME,s.CREATETIME from tab_a s where exists
    14 (select * from tab_b g where g.carflag not in (0,8) and s.carid=g.carid)) h left join tab_b j on h.carid=j.carid
     
  • 相关阅读:
    Java操作excel,读取及导出
    vue 在package.json配置对外暴露访问地址(手机端访问本地项目地址)
    element UI upload组件上传附件格式限制
    linux之vim/vi快速复制多行内容的快捷键
    使用vant的Toast组件时提示not defined
    如何使用js判断当前页面是pc还是移动端打开的
    JavaScript 保留两位小数函数
    Linux其他命令
    linux学习ls的三个选项 lha的作用和隐藏文件的知识
    vue+ element-ui el-table组件自定义合计(summary-method)坑
  • 原文地址:https://www.cnblogs.com/felix-wang/p/14694754.html
Copyright © 2011-2022 走看看