oracle通过字段名查找表名

select table_name from user_tab_columns t where t.COLUMN_NAME = '字段名';

<think>嗯,用户想了解MySQL和Oracle如何根据表称或字段注释查找表。我需要先回忆这两个数据库的系统表结构。 对于MySQL,我记得信息模式(INFORMATION_SCHEMA)里有COLUMNS表,里面存储了字段的注释。所以,如果要根据字段注释找表,应该查询COLUMNS表,用COLUMN_COMMENT字段过滤。而根据表的话,可能用TABLES表的TABLE_NAME字段。不过用户可能需要的是模糊查询,所以得用LIKE操作符。 然后是OracleOracle的数据字典视图比较复杂。字段注释应该在ALL_COL_COMMENTS,表注释在ALL_TAB_COMMENTS。所以根据字段注释查询时,需要连接ALL_TAB_COLUMNS和ALL_COL_COMMENTS,或者直接查ALL_COL_COMMENTS的COMMENTS字段。表的话,查ALL_TABLES中的TABLE_NAME,或者结合注释的话用ALL_TAB_COMMENTS。 需要注意权限问题,比如ALL_开头的视图只能看到用户有权限访问的对象,如果需要包括所有,可能需要用DBA_视图,但需要更高权限。另外,用户可能需要模糊查询的例子,所以示例中应该包含%符号,比如LIKE '%关键字%'。 可能用户实际应用场景是在数据库维护或逆向工程时,根据注释快速定位表结构。要确保给出的SQL示例正确,并且解释清楚每个部分的作用,避免用户执行时报错。还要提醒注释是否填写,因为如果注释为空,查询可能不会有结果。最后,检查语法是否正确,比如Oracle的字符串连接符||的使用,以及别是否正确。</think>以下是MySQL和Oracle根据表称或字段注释查找表的SQL写法: --- ### 一、MySQL实现方式 #### 1. 根据**字段注释**查找表 ```sql SELECT TABLE_SCHEMA AS '数据库', TABLE_NAME AS '表', COLUMN_NAME AS '字段名', COLUMN_COMMENT AS '字段注释' FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_COMMENT LIKE '%关键词%'; ``` #### 2. 根据**表**查找表 ```sql SELECT TABLE_SCHEMA AS '数据库', TABLE_NAME AS '表', TABLE_COMMENT AS '表注释' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%关键词%'; ``` --- ### 二、Oracle实现方式 #### 1. 根据**字段注释**查找表 ```sql SELECT OWNER AS "所属用户", TABLE_NAME AS "表", COLUMN_NAME AS "字段名", COMMENTS AS "字段注释" FROM ALL_COL_COMMENTS WHERE COMMENTS LIKE '%关键词%'; ``` #### 2. 根据**表或表注释**查找表 ```sql SELECT OWNER AS "所属用户", TABLE_NAME AS "表", COMMENTS AS "表注释" FROM ALL_TAB_COMMENTS WHERE TABLE_NAME LIKE '%关键词%' OR COMMENTS LIKE '%关键词%'; ``` --- ### 三、关键说明 1. **模糊查询**:`LIKE '%关键词%'`中的`%`为通配符,表示任意字符 2. **权限差异**: - `ALL_`开头的视图:显示当前用户有权限访问的对象 - `DBA_`开头的视图:需要DBA权限(显示所有对象) - `USER_`开头的视图:仅显示当前用户拥有的对象 3. **注释为空的情况**:如果字段/表未设置注释,则不会出现在查询结果中 --- ### 四、扩展用法示例 #### 同时查询表和字段注释(Oracle) ```sql SELECT a.TABLE_NAME AS "表", a.COLUMN_NAME AS "字段名", b.COMMENTS AS "字段注释" FROM ALL_TAB_COLUMNS a LEFT JOIN ALL_COL_COMMENTS b ON a.OWNER = b.OWNER AND a.TABLE_NAME = b.TABLE_NAME AND a.COLUMN_NAME = b.COLUMN_NAME WHERE b.COMMENTS LIKE '%订单%'; ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值