Oracle 数据库特殊查询总结
更新时间:2016年08月07日 17:50:30 作者:祁保义
这篇文章主要介绍了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 53 select 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_MB FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER BY 1 --查询表空间的free space select tablespace_name, count(*) AS extends, round(sum(bytes) / 1024 / 1024, 2) AS MB, sum(blocks) AS blocks from dba_free_space group 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 )) USED FROM (SELECT TABLESPACE_NAME TABLESPACE_NAME, Sum(BYTES) BYTES FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME) A, (SELECT TABLESPACE_NAME TABLESPACE_NAME, Sum(BYTES) FREE FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) B WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME) ORDER BY Floor(10000 * USED / BYTES) DESC;
6. loop 的使用
DECLARE con number; BEGIN con :=1; LOOP DBMS_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) as counts number; num number; begin create 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 loop dbms_output.put_line('循环开始:'); dbms_output.put_line('第'+num+'条数据'); select column1 into column1 from (select tablename.*, rownum as con from tablename) where con = num; select column2 into column2 from (select tablename.*, rownum as con from tablename) where con = num; select column3 into column3 from (select tablename.*, rownum as con from tablename) where con = num; insert into COM_DEPARTMENT values (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 数据库特殊查询总结,希望对大家有所帮助!
相关文章
oracle 12c因误删pdb数据文件导致整个数据库打不开的解决方法
这篇文章主要给大家介绍了关于oracle 12c因误删pdb数据文件导致整个数据库打不开问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧。2017-10-10oracle使用存储过程将表数据以excel格式导出的操作方法
虽然目前pl/sql developer等数据库客户端软件都支持将表数据以excel格式导出,但是如果数据量大,需要等客户端加载表数据等待很久,这篇文章给大家分享oracle使用存储过程将表数据以excel格式导出的操作方法,需要的朋友可以参考下2024-07-07Oracle使用backup as copy方式迁移数据文件的流程步骤
Oracle数据库的Backup As Copy是一种备份技术,它创建一个物理一致的副本(copy),即数据文件、控制文件、在线redo日志文件以及归档日志等的完整拷贝,本文介绍了Oracle使用backup as copy方式迁移数据文件的流程步骤,需要的朋友可以参考下2024-07-07Oracle ORA-00904:标识符无效解决方法(太坑了!!)
最近执行sql时oracle报错ORA-00904:标识符无效,所以这篇文章主要给大家介绍了关于Oracle ORA-00904:标识符无效解决方法的相关资料,需要的朋友可以参考下2022-10-10
最新评论