Oracle清除表及列注释

1、查询表相关注释信息

--查询当前连接数据库中尚未设置表注释的表
SELECT T.* FROM(
    --查询当前连接数据库的所有表注释
    SELECT * FROM USER_TAB_COMMENTS T WHERE T.TABLE_NAME IN(
        --当前填写数据库的所有表
        SELECT T.TABLE_NAME FROM ALL_TABLES T WHERE T.OWNER = UPPER('数据库名')
   )
)T
WHERE T.COMMENTS IS NULL;

2.查询列注释

--查询当前用户所有表的列注释
SELECT * FROM USER_COL_COMMENTS;
--查询所有表的所有列注释
SELECT * FROM ALL_COL_COMMENTS;
--可能不存在该视图
SELECT * FROM DBA_COL_COMMENTS;

3.清除表、列注释

--清除所有表注释
SELECT 'COMMENT ON TABLE '||T.TABLE_NAME||' IS '''';' FROM ALL_TABLES T WHERE T.OWNER = UPPER('数据库名')
--清除所有列注释
SELECT 'COMMENT ON COLUMN '||T.TABLE_NAME||'.'||T.COLUMN_NAME||' IS '''';' FROM USER_COL_COMMENTS T;

4.设置表注释

复制代码
--错误 如此批量更新表注释 不会成功,因为 USER_TAB_COMMENTS 为视图,不可以直接更改数据 只能通过拼接 COMMENT ON TABLE TAB1 IS 'TAB1'
UPDATE USER_TAB_COMMENTS T SET T.COMMENTS = T.TABLE_NAME;

--正确 通过拼接 COMMENT ON TABLE TAB1 IS 'TAB1' 设置数据库中尚未设置表注释的表
SELECT 'COMMENT ON TABLE '||T.TABLE_NAME||' IS '''||T.TABLE_NAME||''';' FROM(
    --查询当前连接数据库的所有表注释
    SELECT * FROM USER_TAB_COMMENTS T WHERE T.TABLE_NAME IN(
        --当前填写数据库的所有表
        SELECT T.TABLE_NAME FROM ALL_TABLES T WHERE T.OWNER = UPPER('数据库名')
   )
)T
WHERE T.COMMENTS IS NULL;

你可能感兴趣的:(sql,oracle,数据库,sql)