Oracle數(shù)據(jù)庫實現(xià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—SQL技巧之(一)連續(xù)記錄查詢sql案例測試
有這樣一個需求:需要查詢出某個客戶某一年那些天是有連續(xù)辦理過業(yè)務(wù),本文給予sql實現(xiàn)語句并測試,感興趣的朋友可以了解下2013-01-01
Oracle數(shù)據(jù)庫常用語句總結(jié)大全
SQL是結(jié)構(gòu)化查詢語言,用于管理關(guān)系型數(shù)據(jù)庫系統(tǒng),本指南涵蓋了創(chuàng)建和刪除數(shù)據(jù)庫、表以及其他高級表操作如增加、修改、刪除字段,還介紹了主鍵、索引、視圖操作和數(shù)據(jù)DML操作,需要的朋友可以參考下2024-09-09
ORACLE數(shù)據(jù)庫事務(wù)隔離級別介紹
事務(wù)隔離級別:一個事務(wù)對數(shù)據(jù)庫的修改與并行的另一個事務(wù)的隔離程度2012-07-07
Oracle 數(shù)據(jù)庫針對表主鍵列并發(fā)導(dǎo)致行級鎖簡單演示
本文簡單演示針對表主鍵并發(fā)導(dǎo)致的行級鎖,鎖的產(chǎn)生是因為并發(fā)。沒有并發(fā),就沒有鎖。并發(fā)的產(chǎn)生是因為系統(tǒng)需要,系統(tǒng)需要是因為用戶需要,感興趣的你可以參考下哈,希望可以幫助到你2013-03-03
oracle中如何獲得數(shù)據(jù)庫的DBID信息
在進行數(shù)據(jù)庫恢復(fù)的過程中,很多時候我們需要知道Oracle數(shù)據(jù)庫的DBID,通常有以下幾種方法可以獲得數(shù)據(jù)庫的DBID2013-09-09
Oracle數(shù)據(jù)庫空間回收從診斷到優(yōu)化實戰(zhàn)指南詳細(xì)教程
文章詳細(xì)介紹了Oracle數(shù)據(jù)庫空間回收的全過程,包括空間診斷、高水位線處理、數(shù)據(jù)清理、數(shù)據(jù)文件收縮、存儲配置優(yōu)化和自動化運維體系,通過這些方法,可以有效解決Oracle數(shù)據(jù)庫空間膨脹問題,降低存儲成本,感興趣的朋友一起看看吧2025-11-11

