oracle常用操作

  1. 同一个数据库“同义词”实现下实现当前用户访问另一个用户的表:
    create or replace synonym pubtrsts for user.tablename;(user为具体的用户,tablename为表名)
    select * from dba_synonyms; (查询数据库下的所有同义词)
    select * from user_synonyms; (查询当前用户下的所有同义词)
  2. 拉链表使用实例: https://blog.csdn.net/baidu_21088863/article/details/77802758
  3. Oracle如何实现多个字段去重: https://blog.csdn.net/hustwht/article/details/52181654
  4. oracle中使用sql查询时字段为空则赋默认值:oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值
    oracle 函数介绍之nvl
      函数声明:nvl(col,val)
      说明:当col为空时取val作为返回值,当col不为空时取col值。
      用处:最主要的是格式化数据,比如计算金额时,不想出现空数据,可以使用nvl(JINE,0)来得到0。由于null+(或-,*,/)数字等于null,所以在表达式中对可能为空的值要使用nvl由于null!=null,有时对可能为空的列进行条件查询时,可能出现结果集丢失数据问题,加上nvl就不会了。
    经典用法:
    通过查询获得某个字段的合计值,如果这个值为null将给出一个预设的默认值
    例如:
    select nvl(sum(t.字段),1) from table t
    就表示如果sum(t.字段) = NULL 就返回 1
    另一个有关的有用方法
    declare i integer
    select nvl(sum(t.字段),1) into i from table t 这样就可以把获得的合计值存储到变量i中,如果查询的值为null就把它的值设置为默认的1
    orcale中:
    select nvl(rulescore,0) from zwjc_graderule where rulecode=‘FWTD’; 如果记录中不存在rulecode ='FWTD’的数据.则查不出数据.
    select nvl(rulescore,0) into rule_score from zwjc_graderule where rulecode=‘FWTD’;会报查不到数据的错
    select nvl(sum(rulescore),0) from zwjc_graderule where rulecode=‘FWTD’; 如果记录中不存在rulecode ='FWTD’的数据.还是可以得到一行列名为nvl(rulescore,0),值为0的数据.
    select nvl(sum(rulescore),0) into rule_score from zwjc_graderule where rulecode=‘FWTD’; 不会报错
    oracle 函数介绍之decode()
    decode()函数简介:
    主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明);
    使用方法:
    Select decode(columnname,值1,翻译值1,值2,翻译值2,…值n,翻译值n,缺省值)
    From talbename
    Where …
    其中columnname为要选择的table中所定义的column,
    ·含义解释:
    decode(条件,值1,翻译值1,值2,翻译值2,…值n,翻译值n,缺省值)的理解如下:
    if (条件值1)
    then    
    return(翻译值1)
    elsif (条件
    值2)
    then    
    return(翻译值2)    

    elsif (条件==值n)
    then    
    return(翻译值n)
    else    
    return(缺省值)
    end if
  5. 表中记录条数大于1的记录:
    select * from online_payment.NETPAY_MER_ONLPAY where channel_code in(‘GFUPZF’,‘UPWXZF’,‘UPZFBZF’) and STATUS = ‘0’ and merch_id in (select merch_id from online_payment.NETPAY_MER_ONLPAY
    where /*ORGAN_ID = ‘T88888888888888’ and /channel_code in(‘GFUPZF’,‘UPWXZF’,‘UPZFBZF’) and STATUS = ‘0’ group by merch_id having count()=3)
  6. 查询表中 某个列 中的列值出现频率最高的列值
    select merch_id from ( select merch_id,dense_rank() over(order by cnt desc) as rnk from(select merch_id,count(*) as cnt from netpay_bill where settle_date=‘20200326’ group by merch_id ) )
    where rnk=1;
  7. Oracle sql 语句:存在则更新,不存在则插入
    8.PLSQL 如何将多个insert语句一起运行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值