Oracle數(shù)據(jù)庫實現(xiàn)查詢所有表
更新時間:2025年12月02日 10:02:12 作者:笑锝?jīng)]心沒肺
文章總結(jié)了在數(shù)據(jù)庫中查詢表和列信息的方法,包括查詢所有表、特定用戶的表、表的列名和注釋,以及如何根據(jù)表名進(jìn)行模糊查詢,它還提供了如何查詢數(shù)據(jù)庫中所有表的大小并進(jìn)行排序的指令
1、查詢當(dāng)前數(shù)據(jù)庫下的所有表
select * from all_tables where owner = 'TEST';
注:all_tables查出來是查得所有用戶下的表,當(dāng)然也包括你登錄的用下的表,然后加一個where你要查的那個用戶名就可以了。(記得用戶名要大寫)
模糊查詢該條件的表名稱:
select * from all_tables where owner = 'TEST' and table_name like '%S%';
2、查詢當(dāng)前登錄用戶的所有表
select * from user_tables;
簡寫:
select * from tabs;
模糊查詢該條件的表名稱:
select * from user_tables where table_name like '%S%';
3、查詢所有用戶的表,視圖等
select * from all_tab_comments;
4、查詢本用戶的表,視圖等
select * from user_tab_comments;
5、查詢所有用戶的表的列名和注釋
select * from all_col_comments;
6、查詢本用戶的表的列名和注釋
select * from user_col_comments;
7、查詢所有用戶的表的列名等信息
select * from all_tab_columns;
8、查詢本用戶的表的列名等信息
select * from user_tab_columns;
注:
- 3-8號的都可以在后面加一個 where owner = 'TEST'
- 就是你要查的那個用戶名下的信息
9、查詢一個數(shù)據(jù)庫中所有表的大小并排序
SELECT *
FROM (SELECT T1.OWNER,
T1.TABLE_NAME,
ROUND(T1.TABLE_SIZE / 1024 / 1024) +
ROUND(NVL(T3.LOB_DATA_SIZE, 0) / 1024 / 1024) TABLE_SIZE_MB,
ROUND(NVL(T2.INDEX_SIZE, 0) / 1024 / 1024) +
ROUND(NVL(T3.LOB_INDEX_SIZE, 0) / 1024 / 1024) INDEX_SIZE_MB,
ROUND(T1.TABLE_SIZE / 1024 / 1024) +
ROUND(NVL(T3.LOB_DATA_SIZE, 0) / 1024 / 1024) +
ROUND(NVL(T2.INDEX_SIZE, 0) / 1024 / 1024) +
ROUND(NVL(T3.LOB_INDEX_SIZE, 0) / 1024 / 1024 / 1024) SIZE_MB
FROM (SELECT OWNER,
SEGMENT_NAME TABLE_NAME,
ROUND(SUM(BYTES)) TABLE_SIZE
FROM DBA_SEGMENTS
WHERE SEGMENT_TYPE LIKE 'TABLE%'
GROUP BY OWNER, SEGMENT_NAME) T1,
(SELECT A.OWNER, A.TABLE_NAME, SUM(B.BYTES) INDEX_SIZE
FROM (SELECT OWNER, TABLE_NAME, INDEX_NAME
FROM DBA_INDEXES
WHERE INDEX_TYPE <> 'LOB') A,
(SELECT OWNER, SEGMENT_NAME, BYTES FROM DBA_SEGMENTS) B
WHERE A.OWNER = B.OWNER
AND A.INDEX_NAME = B.SEGMENT_NAME
GROUP BY A.OWNER, A.TABLE_NAME) T2,
(SELECT A.OWNER,
A.TABLE_NAME,
SUM(B.LOB_DATA_SIZE) LOB_DATA_SIZE,
SUM(C.LOB_INDEX_SIZE) LOB_INDEX_SIZE
FROM (SELECT OWNER, TABLE_NAME, SEGMENT_NAME, INDEX_NAME
FROM DBA_LOBS) A,
(SELECT OWNER, SEGMENT_NAME, SUM(BYTES) LOB_DATA_SIZE
FROM DBA_SEGMENTS
GROUP BY OWNER, SEGMENT_NAME) B,
(SELECT OWNER, SEGMENT_NAME, SUM(BYTES) LOB_INDEX_SIZE
FROM DBA_SEGMENTS
GROUP BY OWNER, SEGMENT_NAME) C
WHERE A.OWNER = B.OWNER
AND A.SEGMENT_NAME = B.SEGMENT_NAME
AND A.OWNER = C.OWNER
AND A.INDEX_NAME = C.SEGMENT_NAME
GROUP BY A.OWNER, A.TABLE_NAME) T3
WHERE T1.OWNER = T2.OWNER(+)
AND T1.TABLE_NAME = T2.TABLE_NAME(+)
AND T1.OWNER = T3.OWNER(+)
AND T1.TABLE_NAME = T3.TABLE_NAME(+)
AND T1.OWNER = UPPER('TEST')
ORDER BY 5 DESC) X;總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關(guān)文章
Oracle數(shù)據(jù)庫刪除表空間后磁盤空間不釋放的問題及解決
這篇文章主要介紹了Oracle數(shù)據(jù)庫刪除表空間后磁盤空間不釋放的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11
Oracle 11g數(shù)據(jù)庫安裝與卸載的方法圖解
如果小編使用的是win7系統(tǒng),最好采用11g,否則很可能10g出現(xiàn)不兼容安裝不成功的情況。下面給大家分享Oracle 11g數(shù)據(jù)庫安裝與卸載的方法圖解,非常不錯,感興趣的朋友一起看看吧2016-09-09
Oracle高級語法篇之merge?into語句復(fù)雜案例
Oracle的MERGE?INTO語句用于將數(shù)據(jù)集合并,根據(jù)匹配條件執(zhí)行更新或插入操作,下面這篇文章主要介紹了Oracle高級語法篇之merge?into語句復(fù)雜的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-07-07
Linux服務(wù)器下oracle實現(xiàn)rman自動備份的方式
為確保oracle數(shù)據(jù)庫數(shù)據(jù)的安全和一致性,一般我們都需要利用備份手段進(jìn)行數(shù)據(jù)庫的備份,在oracle數(shù)據(jù)庫中,rman因其強大的功能和完善的手段,成為數(shù)據(jù)庫備份的首選,故以下通過兩種方式配置腳本,實現(xiàn)rman自動備份,需要的朋友可以參考下2024-11-11

