Oracle
在哪個表中查找我可以找到多個列
我正在嘗試編寫一個查詢,它將向我顯示包含以下列的表:ProductGroup、ProductClass和ProductID。
但我在這方面不是很成功。有人可以幫我嗎?
對於甲骨文:
SELECT TABLE_NAME FROM ALL_IND_COLUMNS WHERE COLUMN_NAME IN ('ProductGroup', 'ProductClass', 'ProductID') GROUP BY TABLE_NAME HAVING COUNT(*) = 3
對於 MS SQL 和其他:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME IN ('ProductGroup', 'ProductClass', 'ProductID') GROUP BY TABLE_NAME HAVING COUNT(*) = 3
這取決於您所說的“整個數據庫”。
如果它確實是數據庫,那麼您將查詢
DBA_TAB_COLUMNS
,以有權訪問該視圖的使用者身份連接(例如 SYS,如果您沒有任何其他):SQL> connect sys@pdb1 as sysdba Enter password: Connected. SQL> select owner, table_name from dba_tab_columns where column_name = 'EMPNO'; OWNER TABLE_NAME ------------------------------ ------------------------------ SCOTT EMP SCOTT TEST
如果要檢查您有權訪問的所有表,請查詢
ALL_TAB_COLUMNS
:SQL> connect scott@pdb1 Enter password: Connected. SQL> select owner, table_name from all_tab_columns where column_name = 'EMPNO'; OWNER TABLE_NAME ------------------------------ ------------------------------ SCOTT EMP SCOTT TEST
如果您想查看屬於您的架構的表,那麼它就是
USER_TAB_COLUMNS
(在某些 DBMS 中,他們稱其為“數據庫”;在 Oracle 中,這只是一個“架構”——這就是為什麼我問“數據庫”對您意味著什麼):SQL> select table_name from user_tab_columns where column_name = 'EMPNO'; TABLE_NAME ------------------------------ EMP TEST SQL>