Oracle 数据库特殊查询总结

前端之家收集整理的这篇文章主要介绍了Oracle 数据库特殊查询总结前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1. 查询本节点及本节点以下的所有节点:

sql;"> 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. 查询节点中所有的层级关系

CONNECT_BY_ROOT 返回当前节点的最顶端节点 2> CONNECT_BY_ISLEAF 判断是否为叶子节点,如果这个节点下面有子节点,则不为叶子节点 3> LEVEL 伪列表示节点深度 4> SYS_CONNECT_BY_PATH函数显示详细路径,并用“/”分隔

3. 对数据库表结构的操作

sql;"> alter table taxasset add (NEXTDATE varchar2(30)); alter table tax_dep_manager modify FDDBRXM varchar2(120); alter table test1 drop column name;

4. 其他查询

sql;"> /*用户被占用的查询*/ 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,'99990.00') || '' "实有",To_char(Round(FREE / 1024,'99990.00') || 'G' "现有",To_char(Round(( BYTES - FREE ) / 1024,'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 的使用

100; END LOOP; DBMS_OUTPUT.PUT_LINE('完了'); END;

7. 存储过程的书写

sql;"> 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,'N',null,'1','Y','2',2,brno,'A',3,'0',null); num := num + 1; end loop; end;

以上所述是小编给大家介绍的Oracle 数据库特殊查询总结,希望对大家有所帮助!

原文链接:https://www.f2er.com/oracle/65049.html

猜你在找的Oracle相关文章