Oracle查詢數據庫中所有表的記錄數




查詢庫中的表名和表中記錄數:

SELECT T.TABLE_NAME, T.NUM_ROWS FROM USER_TABLES T;

查詢庫中記錄總數:

SELECT SUM(A.NUM_ROWS)
  FROM (SELECT T.TABLE_NAME, T.NUM_ROWS FROM USER_TABLES T) A;

如圖所示:

Oracle一下簡單使用

1、用戶操作

select * from dba_users;
create user test identified by 123456;
alter user test identified by 123456;
grant connect,resource to test ;
alter user test quota unlimited on users;
drop user test cascade;

2、用戶

select * from user_users;
查看當前用戶的角色
select * from user_role_privs;
查看當前用戶的系統權限和表級權限
select * from user_sys_privs;
select * from user_tab_privs;

3、表

查看用戶下所有的表
select * from user_tables;
查看某表的創建時間
select * from user_objects where object_name=upper('test');
查看某表的大小
select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('test');

4、索引

查看索引個數和類別
select index_name,index_type,table_name from user_indexes order by table_name;
查看索引被索引的字段
select * from user_ind_columns where index_name=upper('&index_name');
查看索引的大小
select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&index_name');

5、序列號

查看序列號,last_number是當前值
select * from user_sequences;

6、視圖

select * from user_views;

7、存儲函數和過程

查看函數和過程的狀態
select object_name,status from user_objects where object_type='FUNCTION'; select object_name,status from user_objects where object_type='PROCEDURE';
查看函數和過程的源代碼
select text from all_source where owner=user and name=upper('&plsql_name');

8、SQL時間計算

SELECT TO_CHAR(ADD_MONTHS(SYSDATE, -1), 'yyyyMMdd') SYY FROM DUAL;  --計算上一個月

9、Oracle的connect by level的使用

    獲取連續數字示例代碼:
    1 -- 獲取連續的數據(注意:level只用使用<,<=,=符號)
    2 select level from dual connect by level <= 5;   -- 1 2 3 4 5

    獲取連續的日期示例代碼:

    1 -- 獲取連續的指定時間(注意:獲取連續的時間需要包含當天需要再+1天)
    2 select sysdate-level+1 days from dual connect by level <= 5;

    統計填充示例代碼:

         1 /*
         2     問題:查詢1981年每月入職的人數,沒有入職的以0補充
         3     解決:1.創建一個連續的年份表進行關聯
         4          2.關聯的條件,截取時間相等進行關聯
         5          3.注意:a.需要所有的時間,因此要讓時間表主表
         6                 b.如果emp表有條件,要單獨在(SELECT * FROM emp)中添加,不然會影響結果,導致時間不全
         7                 c.使用其他函數,如SUM求和可能為空用NVL函數,這里以count函數舉例
         8 */
         9 SELECT times.days 月份,NVL(COUNT(e.EMPNO),0) 入職人數 FROM (SELECT * FROM emp) e
        10 RIGHT JOIN (
        11     select TO_CHAR(ADD_MONTHS(TO_DATE('2010-12-01', 'yyyy-MM-dd'),-LEVEL+1),'yyyy-MM') days
        12     FROM dual CONNECT BY LEVEL <= 12
        13 ) times
        14 ON SUBSTR(TO_CHAR(e.HIREDATE,'yyyy-MM-dd hh24:mi:ss'), 0, 7) = times.days
        15 GROUP BY times.days
        16 ORDER BY times.days

     月份          入職人數

    2010-01    0

    2010-02    2

 

 
————————————————
版權聲明:本文為CSDN博主「fred_kang」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/fred_kang/article/details/84837049


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM