度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 1572|回复: 0
打印 上一主题 下一主题

[分享] Oracle 数据库特殊查询总结

[复制链接]

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
跳转到指定楼层
楼主
发表于 2020-3-30 20:36:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这篇文章主要介绍了Oracle 数据库特殊查询总结的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下:

1. 查询本节点及本节点以下的所有节点:
select * from table1 c start with c.p_id='0000000' connect by prior c.id=c.p_id and c.use_yn='Y' order by id ;

2. 查询节点中所有的层级关系
SELECT RPAD( ' ', 2*(LEVEL-1), '-' ) || DEPNAME "DEPNAME",CONNECT_BY_ROOT DEPNAME "ROOT",CONNECT_BY_ISLEAF "ISLEAF",LEVEL ,SYS_CONNECT_BY_PATH(DEPNAME, '/') "PATH" FROM DEP START WITH UPPERDEPID IS NULL CONNECT BY PRIOR DEPID = UPPERDEPID;1> CONNECT_BY_ROOT 返回当前节点的最顶端节点 2> CONNECT_BY_ISLEAF 判断是否为叶子节点,如果这个节点下面有子节点,则不为叶子节点 3> LEVEL 伪列表示节点深度 4> SYS_CONNECT_BY_PATH函数显示详细路径,并用“/”分隔

3. 对数据库表结构的操作
alter table taxasset add (NEXTDATE varchar2(30));alter table tax_dep_manager modify FDDBRXM varchar2(120);alter table test1 drop column name;

4. 其他查询
/*用户被占用的查询*/select 'alter system kill session '''||sid||','||serial#||''';' from v$session where username = 'USERS';/* 系统数据库相关查询 */select * from user_tablespaces;select username,default_tablespace from dba_users where username='ZZS'select count(*) from user_views; --yb53 zzs 53select count(*) from user_tables; --yb413 zzs 413--查询表空间使用情况SELECT Upper(F.TABLESPACE_NAME) "表空间名",D.TOT_GROOTTE_MB "表空间大小(M)",D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / D.TOT_GROOTTE_MB * 100, 2), '990.99')|| '%' "使用比",F.TOTAL_BYTES "空闲空间(M)",F.MAX_BYTES "最大块(M)" FROM (SELECT TABLESPACE_NAME,Round(Sum(BYTES) / ( 1024 * 1024 ), 2) TOTAL_BYTES,Round(Max(BYTES) / ( 1024 * 1024 ), 2) MAX_BYTES FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F,(SELECT DD.TABLESPACE_NAME,Round(Sum(DD.BYTES) / ( 1024 * 1024 ), 2) TOT_GROOTTE_MBFROM SYS.DBA_DATA_FILES DDGROUP BY DD.TABLESPACE_NAME) DWHERE D.TABLESPACE_NAME = F.TABLESPACE_NAMEORDER BY 1--查询表空间的free spaceselect tablespace_name,count(*) AS extends,round(sum(bytes) / 1024 / 1024, 2) AS MB,sum(blocks) AS blocksfrom dba_free_spacegroup BY tablespace_name;--查询表空间的总容量select tablespace_name, sum(bytes) / 1024 / 1024 as MB from dba_data_files group by tablespace_name;--表空间容量查询SELECT TABLESPACE_NAME "表空间",To_char(Round(BYTES / 1024, 2), '99990.00')|| '' "实有",To_char(Round(FREE / 1024, 2), '99990.00')|| 'G' "现有",To_char(Round(( BYTES - FREE ) / 1024, 2), '99990.00')|| 'G' "使用",To_char(Round(10000 * USED / BYTES) / 100, '99990.00')|| '%' "比例"FROM (SELECT A.TABLESPACE_NAME TABLESPACE_NAME,Floor(A.BYTES / ( 1024 * 1024 )) BYTES,Floor(B.FREE / ( 1024 * 1024 )) FREE,Floor(( A.BYTES - B.FREE ) / ( 1024 * 1024 )) USEDFROM (SELECT TABLESPACE_NAME TABLESPACE_NAME,Sum(BYTES) BYTESFROM DBA_DATA_FILESGROUP BY TABLESPACE_NAME) A,(SELECT TABLESPACE_NAME TABLESPACE_NAME,Sum(BYTES) FREEFROM DBA_FREE_SPACEGROUP BY TABLESPACE_NAME) BWHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME)ORDER BY Floor(10000 * USED / BYTES) DESC;

6. loop 的使用
DECLAREcon number;BEGINcon :=1;LOOPDBMS_OUTPUT.PUT_LINE(con);con:=con+1;EXIT WHEN con>100;END LOOP;DBMS_OUTPUT.PUT_LINE('完了');END;

7. 存储过程的书写
create or replace procedure InsertBranch(tablename in varchar2) ascounts number;num number;begincreate table tempdata (column1 nvarchar2,column2 nvarchar2,column3 nvarchar2);insert tempdata num := 1;select count(*) into counts from tablename;dbms_output.put_line('数据总数'+counts);while num <= counts loopdbms_output.put_line('循环开始:');dbms_output.put_line('第'+num+'条数据');select column1into column1from (select tablename.*, rownum as con from tablename)where con = num;select column2into column2from (select tablename.*, rownum as con from tablename)where con = num;select column3into column3from (select tablename.*, rownum as con from tablename)where con = num;insert into COM_DEPARTMENTvalues(brno,brname,upbrno,upbrno,'N',null,null,null,'1',null,'Y','2',null,null,null,2,'N',null,null,null,'N',brno,upbrno,null,null,null,'A','N','N',0,0,3,null,null,null,'0','0',0,null,null,null,null,null,null,null);num := num + 1;end loop;end;
以上所述是小编给大家介绍的Oracle 数据库特殊查询总结,希望对大家有所帮助!


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-12-23 13:44 , Processed in 0.209182 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表