工作中用到的oracle SQL

Kent_Sun
• 阅读 1315

Oracle SQL

用于记录工作中用到的oracle sql语句

表新增字段

表结构变动: 新增字段并指定字段类型

-- 新增一个字段,多个字段用小括号括起来,逗号分隔
alter table 表名 add 新增字段名(类型+长度);

-- demo  TSALES_APPLY_COST表中新增一个字段(CAPITAL) 类型为: NUMBER(15, 2)
alter table TSALES_APPLY_COST add CAPITAL NUMBER(15, 2);
-- 记得加注释
COMMENT ON COLUMN TSALES_APPLY_COST.CAPITAL is '剩余本金';

表修改字段类型

表结构变动:修改字段类型

ALTER TABLE TSALES_APPLY_MAIN
    MODIFY (
        ASQQD VARCHAR2(6),
        SALESNAME VARCHAR2(128)
        );
COMMENT ON COLUMN TSALES_APPLY_MAIN.ASQQD IS '建立渠道';
COMMENT ON COLUMN TSALES_APPLY_MAIN.SALESNAME IS '客户经理';

表修改字段名

表结构变动: 修改表中的字段名

-- 修改 TSALES_OTHER_DEBTORS 表中 INF_OLD_TYPE 字段名为 INFO_ID_TYPE。
alter table TSALES_OTHER_DEBTORS rename column INF_OLD_TYPE to INFO_ID_TYPE;

表删除字段

ALTER TABLE 表名 DROP COLUMN 列名;

查询sql-日期加减月份

日期字段新增几个月或者减去几个月

-- dual是虚拟表,用来构成select的语法规则
-- 用虚拟表测试, 获取当前日期和当前日期减去十二月的日期
select sysdate,add_months(sysdate,-12) from dual;
-- DZZRQ新增一个月的日期
update TSALES_REPAY_PLAN set DZZRQ=add_months(DZZRQ, 1) where ASQBH='2020-A000000-009-00017';

按时间倒序,取60条数据

按时间倒序排列,取60条数据

select CREATE_DATE,asqbh, transfer_no, status, notice_status, file_status
from (
         select CREATE_DATE, asqbh, transfer_no, status, notice_status, file_status
         from T_MAIN_INFO
         where FILE_STATUS = '0'
           and STATUS in ('1', '2', '5')
    order by CREATE_DATE desc
     )
where rownum<61;

trunc函数

trunc函数使用

-- demo1: 对dual测试表中的当前日期进行截取
select trunc(sysdate, 'DDD') from dual;

-- 开发中的实例
select SRCBILLCODE from TPAYMENT_POOL
where ZANCUNPICIHAO = #{batchNo,jdbcType=VARCHAR}
    and AGREED_LOAN_DATE is not null
    and trunc(AGREED_LOAN_DATE, 'DDD') - trunc(#{loanDate,jdbcType=DATE}, 'DDD') &lt;&gt; 0

ps: &lt; &gt; 是小于大于号 == <>

to_date() 函数

to_date() 函数 , 当前日期转换,sysdate可以替换成别的日期

select to_date(sysdate) from dual;

merge into用法

以dual为中间表用来存数据, 进行后期的更新和插入操作

merge into GUOYIN_FILE_LOG_INFO info
        using (select 'orderNo' as ORDER_NO from DUAL) du on (info.ORDER_NO = du.ORDER_NO)
        when matched then
            update set AA='aa', BB='bb', UPDATE_DATE=sysdate
        when not matched then
            insert(ORDER_NO,ALL_SUCCESS,REGIST_CERTIFICATE,UPDATE_DATE)
            values (#{orderNo,jdbcType=VARCHAR}, #{allSuccess,jdbcType=VARCHAR},  sysdate)

list集合遍历查询,返回满足条件的集合

mapper:
 /**
 *获取满足集合的数据
 *
 * @param fileNameList
 * @return
 */
List<String> queryByFileNameList(@Param("fileNameList") List<String> fileNameList, @Param("orderNo") String orderNo);

 <!--查询满足数组的数据-->
 <select id="queryByFileNameList" resultType="string">
     select
       FILE_NAME
     from GUOYIN_GET_FILE_LOG_INFO
     <where>
         ORDER_NO=#{orderNo}
         <if test="fileNameList != null">
             and FILE_NAME in
             <foreach collection="fileNameList" item="fileName" separator="," open="(" close=")">
                 #{fileName}
             </foreach>
         </if>
     </where>
 </select>
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Easter79 Easter79
2年前
sql注入
反引号是个比较特别的字符,下面记录下怎么利用0x00SQL注入反引号可利用在分隔符及注释作用,不过使用范围只于表名、数据库名、字段名、起别名这些场景,下面具体说下1)表名payload:select\from\users\whereuser\_id1limit0,1;!(https://o
Wesley13 Wesley13
2年前
Oracle中如何查询一个表的所有字段名和数据类型
Oracle中如何查询一个表的所有字段名和数据类型查询语法selectA.COLUMN_NAME,A.DATA_TYPEfromuser_tab_columnsAwhereTABLE_NAME'表名'查询例子selectA.COLUMN_NAME,A.DATA_TYPEfromuser_tab_
Wesley13 Wesley13
2年前
sqlserver常用sql语句,更改字段,建立唯一键,多个字段去重复等
修改字段类型:altertable表名altercolumn待修改字段名待修改字段类型altertableusersaltercolumnuseridvarchar(10)多个字段建立唯一索引createuniqueindex索引名on表名(字段名,字
Wesley13 Wesley13
2年前
mysql数据过滤
1、AND操作符:select表的字段名from对应的表名where表的字段名AND表的字段名运算符值;例子:selectprod\_id,prod\_price,prod\_namefromproductswhereven\_id1003ANDprod\_price<10;2、OR操作符:sele
Wesley13 Wesley13
2年前
Oracle一张表中实现对一个字段不同值和总值的统计(多个count)
需求:统计WAIT\_ORDER表中的工单总数、未处理工单总数、已完成工单总数、未完成工单总数。表结构:为了举例子方便,WAIT\_ORDER表只有两个字段,分别是ID、STATUS,其中STATUS为工单的状态。1表示未处理,2表示已完成,3表示未完成总数。 SQL:  1.SELECT   2
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL数据库(三)
一、表结构修改(alter)1.修改表名:altertabletb_namerenametonew_name;2.修改字段名:altertabletb_namechangenamenew_namedata_type;3.修改字段类型:ALTERTABLEtb_nameMODIFYfield_nameda
Wesley13 Wesley13
2年前
ThinkPHP 根据关联数据查询 hasWhere 的使用实例
很多时候,模型关联后需要根据关联的模型做查询。场景:广告表(ad),广告类型表(ad\_type),现在需要筛选出广告类型表中id字段为1且广告表中status为1的列表先看关联的设置部分 publicfunctionadType(){return$thisbelongsTo('A