Mysql查看获取表注释或字段注释
⽬前常⽤的,获取表、表中字段的注释的⽅式,主要是使⽤ information_schema 数据库,然后查看每个表的;
例:
u information_schema;
lect * from TABLES where TABLE_SCHEMA='数据库名' and TABLE_NAME='表名'
mysql表与字段注释查看修改
1、 创建表的时候写注释
1create table t_ur(
2 ID INT(19) primary key auto_increment comment '主键',
3 NAME VARCHAR(300) comment '字段的注释',
4 CREATE_TIME date comment '创建时间'
紫袍玉带石茶盘
5)comment = '表的注释';
2、修改表的注释
alter table 表名 comment '修改后的表的注释';
3、修改字段的注释
alter table 表名 modify column 字段名字段类型 comment '修改后的字段注释';
--注意:字段名和字段类型照写就⾏,如果之前有规定长度 这⾥也要指定⼀下
如:alter table t_cal_res_channel MODIFY column resume_channel varchar(30) COMMENT '渠道'
滚滚红尘简谱
4、 查看表注释的⽅法
-- 在⽣成的SQL语句中看 查看表⽣成的DDL 注意:表名不加单引号
show create table 表名;
– 在元数据的表⾥⾯看
捐款感谢信
1u information_schema;
2lect * from TABLES where TABLE_SCHEMA='数据库名' and TABLE_NAME='表名'
5、查看字段注释的⽅法
– show
show full columns from 表名;
– 在元数据的表⾥⾯看
lect * from COLUMNS where TABLE_SCHEMA='数据库名' and TABLE_NAME='表名'
⼆.引申知识
1.使⽤alter table⽅法
ALTER TABLE table_name MODIFY COLUMN column_name TINYINT(tinyint表⽰column类型) COMMENT '-1:默认值,1:⼈员id,2:公司id';
这种⽅法会重建表,如果数据量⼤,⼀个表100w数据,执⾏1min,如果分表数30个那就总共需要执⾏30min
2.使⽤元数据表
USE information_schema;
UPDATE COLUMNS t lumn_comment = '-1:默认值,1:⼈员id,2:公司id' WHERE
t.TABLE_SCHEMA='databa_name' AND t.table_name='table_name' AND t.COLUMN_NAME='column_name ';
查询语句,更新前可以查询⼀下
lumn_comment FROM COLUMNS t WHERE t.TABLE_SCHEMA='databa_name' AND
t.TABLE_NAME='table_name' AND t.COLUMN_NAME='column_name ';
本想这种修改元数据的⽅法可以修改表的字段注释,但是没有权限执⾏,错误如下:
错误代码: 1044
Access denied for ur 'usr'@'%' to databa 'information_schema'
官⽅解释:
INFORMATION_SCHEMA是信息数据库,其中保存着关于MySQL服务器所维护的所有其他数据库的信息。在
INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,⽽不是基本表,因此,你将⽆法看到与之相关的任何⽂件。
每位MySQL⽤户均有权访问这些表,但仅限于表中的特定⾏,在这类⾏中含有⽤户具有恰当访问权限的对象。
事实上,尽管不需要⽣成名为INFORMATION_SCHEMA的⽂件,我们仍提供了名为INFORMATION_SCHEMA的新数据库。可以使⽤USE语句将INFORMATION_SCHEMA选择为默认数据库,但访问该数据库中所含表的唯⼀⽅式是使⽤SELECT语句。不能在其中插⼊内容,不能更新它们,也不能删除其中的内容。
⽹摘:
Mysql没有Oracle那么⽅便,修改注释的时候需要指定{type}(这是Mysql设计的不合理性!);系统数据字典表COLUMNS中有保存所有表的字段信息,但是系统字典表是只读的,⽆法修改注释;
所以,Mysql修改注释必须按照上⾯的格式对不同类型做判断,并且带有长度的字段必须指明length与decimals,否则更新注释的时候会修改length,decimals为默认值的;
修改Mysql注释是件⿇烦的事情,但是也只能这样了。
3.难道就没有别的⽅法了?
当对于⼀个⼤表进⾏ALTER TABLE的时候,性能问题就产⽣了。MySQL⼤部分改动的步骤如下:根据新的表结构创建⼀个空表,从旧表中把数据取出来插⼊到新表中,在删除旧表。这是个⾮常漫长的过程。许多⼈ALTER TABLE之后,都有等待1⼩时或者1天的痛苦经历。
你可以这样,新建⼀个表,改变那个列的comment,然后原始实例关闭,替换.frm⽂件,再重启。
参考⽂章:
应⽤:
python代码获取mysql字段名和注释
1. # coding=utf-8
2. import pymysql
3.
4.
5. def get_mysql_zi_duan():
512关爱行动
6. conn = t(host='192.168.', port=3306, ur='hs', passwd='xi', db='db_x', chart='utf8')
7. cursor01 = conn.cursor()
骗取贷款8. ute(
9. "lect column_name, column_comment from lumns where table_schema ='db_xingyun' and table_name =
'api_ind_guan_yi_s_d'")
0. all_info = cursor01.fetchall() # 数据库字段名和注释
1. # print(all_info)
2. zi_duan_ming = []
3. zhushi = []
4. for data in all_info:
5. zi_duan_ming.append(data[0])
6. zhushi.append(data[1])
7. # print(data[0])
8. print(str(zi_duan_ming).replace('[','').replace(']','').replace("'",''))
小茴香的作用9. print(zhushi)
20.
1. cursor01.clo()
2. conn.clo()
23.
24.
5. if __name__ == '__main__':
6. # 获取⼀个表的所有字段名
7. get_mysql_zi_duan()
决策失误java代码获取mysql数据库表注释及字段注释
2018-01-04 16:00:42 阅读数 2688更多
分类专栏:
public static Connection getMySQLConnection() throws Exception {
Class.forName("sql.jdbc.Driver");
Connection conn = (Connection)
}
/**
* 获取当前数据库下的所有表名称
* @return
* @throws Exception
*/
public static List getAllTableName() throws Exception {
List tables = new ArrayList();
Connection conn = getMySQLConnection();
Statement stmt = (Statement) ateStatement();
ResultSet rs = uteQuery("SHOW TABLES ");
while (rs.next()) {
String tableName = rs.getString(1);
tables.add(tableName);
}
rs.clo();
stmt.clo();
conn.clo();
return tables;
}
/**
* 获得某表的建表语句
* @param tableName
* @return
* @throws Exception
*/
public static Map getCommentByTableName(List tableName) throws Exception { Map map = new HashMap();
Connection conn = getMySQLConnection();
Statement stmt = (Statement) ateStatement();
for (int i = 0; i < tableName.size(); i++) {
String table = (String) (i);
ResultSet rs = uteQuery("SHOW CREATE TABLE " + table);
if (rs != null && rs.next()) {
String createDDL = rs.getString(2);
顿时的反义词String comment = par(createDDL);
map.put(table, comment);
}
rs.clo();
}
stmt.clo();
conn.clo();
return map;
}