oracle一些特殊SQL

oracle:

  1. all_tab_columns
  2. all_tab_comments
  3. all_col_comments
  4. all_tables
  5. user_views
  6. all_views

select text from user_views WHERE view_name='view_table1';
select text from all_views WHERE view_name='view_table1';

1、根据表注释查询表名

select * from user_tab_comments where comments like '%指标说明%';

2、根据字段查询哪些表包含该字段

select table_name from DBA_TAB_COLUMNS where COLUMN_NAME='AVG_OUTLINE_DAYS'; 

3、查询当前数据库版本

select * from v$version;

4、查询视图组成结构。

select text from all_views WHERE view_name='视图名称';

5、去重数据(单纯distinct不可用)

方法一、

SELECT *
FROM (
    SELECT
    column1,
    column2,
    column3,
    column8
    ROW_NUMBER() OVER(PARTITION BY 去重字段 ORDER BY 非去重字段) ROW_N
          FROM 表名
         WHERE 1 = 1) T1
 WHERE T1.ROW_N = 1;

方法二、

SELECT 
column1,
column2,
column3,
column4
FROM (SELECT p.*,Row_number() over(partition by 去重字段 order by 非去重字段) as mm from 表名 p) s
where s.mm = 1;

6、需要多次查询表时,可以一次查询,需要在查询所有数据是进行行列转换。

 select * from 
(select tdate,acc_cd,acc_nm,index_value, index_cd from risk_dmapp.VIEW_R_RSK_MTR_PROD_IDX) 
 pivot(sum(index_value) for index_cd in('BOND_WT_CCT' BOND_WT_CCT,'BOND_ISSUER_TOP5_RATIO' BOND_ISSUER_TOP5_RATIO)) 
 where acc_cd='TT1958' order by tdate

7、给用户添加同义词(例:risk_dm下视图V_R_RSK_MTR_ALTER_INV_EXPO建立一个同义词到risk_dmapp用户下)

CREATE SYNONYM risk_dmapp.V_R_RSK_MTR_ALTER_INV_EXPO FOR risk_dm.V_R_RSK_MTR_ALTER_INV_EXPO;

8、查询sequence和查询sequence的下一个取值

--查询sequence:
select * from ALL_SEQUENCES;
select * from USER_SEQUENCES where sequence_name = 'HIBERNATE_SEQUENCE';
--查询下一次取值:
SELECT HIBERNATE_SEQUENCE.NEXTVAL FROM dual;
--oracle的hibernate默认sequence(也需要创建):
select * from USER_SEQUENCES where sequence_name = 'HIBERNATE_SEQUENCE';

编辑推荐 《Oracle SQL高级编程》:资深Oracle专家力作,OakTable团队推荐,全面、独到、翔实,题材丰富,Oracle开发人员和DBA必备。 媒体推荐 本书作者全部是OakTable的成员,且具有15-29年丰富的Oracle开发经验。在研究一些被其他专门讨论Oracle SQL语言的参考书直接忽略的问题时,这种对Oracle数据库的长期钻研无疑是一个巨大的优势。   ——亚马逊读者评论 目录 第1章 SQL核心 1 1.1 SQL语言 1 1.2 数据库的接口 2 1.3 SQL*Plus 回顾 3 1.3.1 连接到数据库 3 1.3.2 配置SQL*Plus环境 4 1.3.3 执行命令 6 1.4 5 个核心的SQL语句 8 1.5 SELECT语句 8 1.5.1 FROM子句 9 1.5.2 WHERE子句 11 1.5.3 GROUP BY子句 11 1.5.4 HAVING子句 12 1.5.5 SELECT列表 12 1.5.6 ORDERBY子句 13 1.6 INSERT语句 14 1.6.1 单表插入 14 1.6.2 多表插入 15 1.7 UPDATE语句 17 1.8 DELETE语句 20 1.9 MERGE语句 22 1.10 小结 24 第2章 SQL执行 25 2.1 Oracle架构基础 25 2.2 SGA-共享池 27 2.3 库高速缓存 28 2.4 完全相同的语句 29 2.5 SGA-缓冲区缓存 32 2.6 查询转换 35 2.7 视图合并 36 2.8 子查询解嵌套 39 2.9 谓语前推 42 2.10 使用物化视图进行查询重写 44 2.11 确定执行计划 46 2.12 执行计划并取得数据行 50 2.13 SQL执行——总览 52 2.14 小结 53 第3章 访问和联结方法 55 第4章 SQL是关于集合的 95 第5章 关于问题 116 第6章 SQL执行计划 137 第7章 高级分组 170 第8章 分析函数 197 第9章 Model子句 225 第10章 子查询因子化 254 第11章 半联结和反联结 292 第12章 索引 334 第13章 SELECT以外的内容 360 第14章 事务处理 386 第15章 测试与质量保证 415 第16章 计划稳定性与控制 443
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值