oracle语法简记

随机字符串

SELECT SYS_GUID() FROM DUAL;

instr函数

Oracle中的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查询所有叶子节点

查看锁表及解锁

Oracle 查看被锁住的表及解锁

oracle failover mode,Oracle RAC FailOver配置
oracle中dblink查看,创建,使用,删除

trim详解

# 去掉两头的a字母
select trim(both 'a' from 'asddsadsa') from dual ;

oracle trim函数用法详解

查看版本

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日期时间函数
Oracle计算时间差函数

去重

Oracle去除重复数据常用的方法

oracle中查找某用户执行某张表的操作操作记录

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

posted @ 2022-03-07 14:12  钱塘江畔  阅读(67)  评论(0)    收藏  举报