oracle语法简记
随机字符串
SELECT SYS_GUID() FROM DUAL;
instr函数
oracle入库失败
ctl文件指定字段长度
行转列 和 列转行
oracle行转列、列转行总结
Oracle列转行unpivot函数的使用
oracle行转列方法集合
连接oracle
# sqlplus连接
sqlplus username/password@ip:port/servicename
sqlplus username/password@servicename
# jdbc连接
jdbc:oracle:thin:@ip:port/servicename
jdbc:oracle:thin:@ip:port:sid
获取建表语句
# Oracle中获取对象的DDL语句,可以通过DBMS_METADATA.GET_DDL()查询到该对象的定义语句,具体SQL语句如下:
SELECT DBMS_METADATA.GET_DDL(OBJECT_TYPE, NAME, SCHEMA) FROM DUAL;
# 例子: 获取(本用户schema下)表的ddl语句,表名为EXAMPLE
SELECT DBMS_METADATA.GET_DDL('TABLE', 'EXAMPLE') FROM DUAL;
java获取Clob类型字段
String result =resultSet.getString(columnIndex);
System.out.println("getString方法处理读取CLOB:\n"+result);
树状结构查询及层级,是否叶子节点
select t.org_id,
t.name,
t.org_id_parent,
level,
CONNECT_BY_ISLEAF
from code_org t
start with t.org_id = '123'
connect by prior t.org_id = t.org_id_parent
order by level
查看锁表及解锁
oracle failover mode,Oracle RAC FailOver配置
oracle中dblink查看,创建,使用,删除
trim详解
# 去掉两头的a字母
select trim(both 'a' from 'asddsadsa') from dual ;
查看版本
select * from v$version;
plsql中新建命令窗口执行(类似sqlplus)
plsql中使用单引号转义
select 'call SCHENMA.PROC(''' || month_id || '''' || ', :a, :b);' from month_id_2021 ;
oracle表添加自增主键
alter table uif_dohr_a.dim_org_attendance_list_his add id2 number; # 增加字段
alter table uif_dohr_a.dim_org_attendance_list_his add constraint primary key(id2); # 增加主键
# 创建序列
create sequence dmp.t_user_id
minvalue 1 -- 自增字段最小值
nomaxvalue --最大值 没有就算nomaxvalue
increment by 1 --每次增值1
start with 100 --起始值
nocache; --不缓存
# 对主键自增
create or replace trigger dmp.t_user_id
before insert on dmp.sys_user for each row
begin
select dmp.sys_user.nextval into:new.user_id from dual;
end;
查询字段:用户名、表名、表空间、占用存储、创建时间、最后一次更新时间
select a.*, rownum, b.CREATED, b.LAST_DDL_TIME
from (select a.owner,
a.segment_name,
a.tablespace_name,
sum(a.bytes) / 1024 / 1024 Mbytes
from dba_segments a
where a.segment_type = 'TABLE'
group by a.owner, a.segment_name, a.tablespace_name
order by sum(bytes) desc) a
inner join dba_objects b
on a.owner = b.owner
and a.segment_name = b.OBJECT_NAME
and b.OBJECT_TYPE = 'TABLE'
where rownum <= 500 ;
trunc函数
Oracle trunc 函数用法详解
Oracle trunc()函数详解
时间函数
# 只获取小时分钟
to_char(t.createtime,'HH24mi')
# 计算两个时间点之间的秒数
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60)
# 日期加一小时
sysdate + 1 --加一天
sysdate + 19/24 -- 加19小时
sysdate + 1/24/60 -- 加一分钟
sysdate + 1/24/60/60 -- 加一秒钟
去重
oracle中查找某用户执行某张表的操作操作记录
查看sql执行历史
视图"v$sql"字段解释
Oracle查看执行过的SQL
Oracle 查看历史SQL执行记录
Oracle查看表操作历史记录并恢复数据
注意:跨用户的更新操作在上述查询中是查不到的,未被记录。例如a用户update了b用户的表数据,在v$sql中是无记录的。
update和merge into
update采用的类似nested loop的方式,对更新的每一行,都会对查询的表扫描一次,都会对查询的表扫描一次;
merge into这里选择的是hash join,则针对每张表都是做了一次 full table scan,对每张表都只是扫描一次。
oracle中merge into 与update的性能对比
oracle两种更新update和merge

浙公网安备 33010602011771号