1、配置路径:app etworkadmin nsnames.ora
orcl36 =
(
DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.3.12)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = p4iaceda)
)
)
2、DML语言,比如update,delete,insert等修改表中数据的需要commit
3、DDL语言,比如create,drop等改变表结构的,就不需要写commit(因为内部隐藏了commit)
4、分页查询
select c.* from (
select a.*,row_number() over(order by create_time desc) idx from tablename a where 1=1 order by create_time desc
) c
where c.idx > (pageNum - 1) * pageSize and c.idx <= pageNum * pageSize
5、Oracle连接
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ip)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=p4iaceda)))
jdbc.username=*****
jdbc.password=******
6、TO_CHAR和TO_DATE的用法
TO_CHAR(t.addtime, 'yyyy-mm-dd hh24:mi:ss')
TO_DATE(#{endTime} , 'yyyy-mm-dd hh24:mi:ss')
7、几行变成一行
select id,
LISTAGG ( to_char(upload_path), ',') WITHIN GROUP(ORDER BY upload_path) AS file_name_list
from ( select distinct id, upload_path from spc_chart_comment_upload )
group by id
解释:按id分组,把upload_path这一列按,隔开拼接在一起,变成新的列file_name_list
8、row_number() over(partition by 列名1 order by 列名2 desc)
解析:表示根据 列名1 分组,然后在分组内部根据 列名2 排序,而此函数计算的值就表示每组内部排序后的顺序编号,可以用于去重复值
9、decode函数
DECODE(value,if 条件1,then 值1,if 条件2,then 值2,...,else 其他值)
10、lag函数
lag表示 分组排序后 ,组内后面一条记录减前面一条记录的差,第一条可返回 NULL
11、批量插入数据,有则更新,无则插入
<insert id="saveBatch" parameterType="java.util.List" >
MERGE INTO 表名 T1?
USING (?
<foreach collection="list" item="item" index="index" separator="union" >
SELECT
SYS_GUID() AS CODE,
#{item.createDate,jdbcType=VARCHAR} AS CREATE_DATE,
#{item.createBy,jdbcType=VARCHAR} AS CREATE_BY,
#{item.flagDel,jdbcType=CHAR} AS FLAG_DEL,
#{item.flagDisplay,jdbcType=CHAR} AS FLAG_DISPLAY,
#{item.sort,jdbcType=DECIMAL} AS SORT
FROM DUAL
</foreach>) T2 ?
/*判断是更新还是新记录的条件*/
ON (
T1./*判断数据是否重复的字段*/ = T2./*判断数据是否重复的字段*/
AND T1./*判断数据是否重复的字段*/ = T2./*判断数据是否重复的字段*/
)
/*数据存在则更新*/
WHEN MATCHED THEN
UPDATE SET T./*需要更新的字段*/=T1/*需要更新的字段*/?
/*数据不存在则插入新记录*/
WHEN NOT MATCHED THEN
INSERT
(CODE,CREATE_DATE,CREATE_BY,FLAG_DEL,FLAG_DISPLAY,SORT)
VALUES
(T2.CODE,T2.CREATE_DATE,T2.CREATE_BY,T2.FLAG_DEL,T2.FLAG_DISPLAY,T2.SORT)
</insert>
12、plsql执行sql发生乱码
select * from V$NLS_PARAMETERS;
环境变量中添加
LANG=zh_CN.UTF8
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
13、在oracle中varchar和varchar2有什么区别?
1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节
2.VARCHAR2把空串等同于null处理,而varchar仍按照空串处理
3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集