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
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,如果您没有任何其他):如果要检查您有权访问的所有表,请查询
ALL_TAB_COLUMNS
:如果您想查看属于您的架构的表,那么它就是
USER_TAB_COLUMNS
(在某些 DBMS 中,他们称其为“数据库”;在 Oracle 中,这只是一个“架构”——这就是为什么我问“数据库”对您意味着什么):对于甲骨文:
对于 MS SQL 和其他: