sql语句添加字段(sql语句建立表)
平时用mysql比较多,有时候需要详细的数据库设计表结构和数据字典,但又没有最新的文档,这个时候直接从数据导出是最新最全的。在MySQL数据库中利用information_schema库中的COLUMNS表可以快速生成数据字典文档,其实MySQL内部对表结构进行了存储,只需找到对应的存储表导出。
Navicat中的导出功能实现快速导出数据字典,首先查看该表的表结构,再根据实际需要导出查询结果。
查询指定数据库所有表结构信息
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLUMN_TYPE, COLUMN_COMMENTFROM information_schema. COLUMNSWHERE TABLE_SCHEMA = 'db_name' #db_name代表数据库名查询指定数据库所有表结构信息
SELECT TABLE_SCHEMA AS '数据库名', TABLE_NAME AS '表名', COLUMN_NAME AS '列名', COLUMN_TYPE AS '类型', COLUMN_DEFAULT AS '默认值', IS_NULLABLE AS '允许为空', DATA_TYPE AS '数据类型', CHARACTER_MAXIMUM_LENGTH AS '字符最大长度', NUMERIC_PRECISION AS '数字精度', NUMERIC_SCALE AS '小数位数', COLUMN_COMMENT AS '字段说明'FROM information_schema.COLUMNSWHERE TABLE_SCHEMA = 'db_name' #db_name代表数据库名查询指定数据库的所有表结构信息
select * from information_schema.columns where TABLE_SCHEMA='db_name' #db_name代表数据库名查询指定表的所有字段信息(在msyql命令行查询)
USE information_schema; #使用数据 information_schemashow full columns from tb_name; #tb_name代表表名导出查询结果
oracle导出数据字典
SELECT A.TABLE_NAME AS "表名",A.COLUMN_NAME AS "字段名", DECODE(A.CHAR_LENGTH,0,DECODE(A.DATA_SCALE,NULL,A.DATA_TYPE,A.DATA_TYPE||'('||A.DATA_PRECISION||','||A.DATA_SCALE||')'), A.DATA_TYPE||'('||A.CHAR_LENGTH||')') as "字段类型",A.DATA_DEFAULT AS "默认值",A.NULLABLE AS "能否为空",B.comments AS "备注"FROM sys.all_tab_columns A,sys.DBA_COL_COMMENTS BWHERE A.owner=B.owner AND A.table_name=B.table_name AND A.COLUMN_NAME=B.COLUMN_NAME AND A.owner='guoqiang' ANDA.TABLE_NAME IN ('TB_SUBJECT', 'TB_SUBJECT_BALANCE', 'TB_VOUCHER', 'TB_VOUCHER_DETAILS', 'TB_CUSTOMER', 'TB_VOUCHER_CLASSIFY_MODE', 'TB_VOUCHER_TYPE', 'TB_ASSET', 'TB_ASSET_CATALOG', 'TB_M_DM_ASSETS_LIABI_RPT', 'TB_M_DM_PROFIT_RPT', 'TB_M_DM_REVENUE_RPT', 'TB_M_DM_COST_RPT')ORDER BY A.TABLE_NAME
在实际项目中存在很多表和字段并没有注释和字段说明,导出的很多空白说明。所以我们需要批量添加注释。下面的sql就有用武之地了。
给字段批量添加注释
SELECT concat( 'alter table ', table_schema, '.', table_name, ' modify column ', column_name, ' ', column_type, ' ', if(is_nullable = 'YES', ' ', 'not null '), if(column_default IS NULL, '', if( data_type IN ('char', 'varchar') OR data_type IN ('date', 'datetime', 'timestamp') AND column_default != 'CURRENT_TIMESTAMP', concat(' default ''', column_default,''''), concat(' default ', column_default) ) ), if(extra is null or extra='','',concat(' ',extra)), ' comment ''', column_comment, ''';' ) '组合语句' FROM information_schema.columns WHERE table_schema = 'srm-supplier' — 库名 — AND table_name = 'h_test' — 表名给表批量添加注释
select concat("alter table " ,TABLE_NAME, " comment ", "'",TABLE_COMMENT,"'",";") from information_schema.tables where information_schema.tables.TABLE_SCHEMA='srm-supplier' and information_schema.tables.TABLE_TYPE='BASE TABLE';将字段注释设置为字段名称
SELECT concat( 'alter table ', table_schema, '.', table_name, ' modify column ', column_name, ' ', column_type, ' ', if(is_nullable = 'YES', ' ', 'not null '), if(column_default IS NULL, '', if( data_type IN ('char', 'varchar') OR data_type IN ('date', 'datetime', 'timestamp') AND column_default != 'CURRENT_TIMESTAMP', concat(' default ''', column_default,''''), concat(' default ', column_default) ) ), if(extra is null or extra='','',concat(' ',extra)), ' comment ''', COLUMN_NAME, ''';' ) '组合语句' FROM information_schema.columns WHERE table_schema = 'srm-supplier' and COLUMN_COMMENT ='';– 库名 —
如发现本站有涉嫌抄袭侵权/违法违规等内容,请联系我们举报!一经查实,本站将立刻删除。