mysql库与information库_关于MySQL的information_schema库简单介绍及实际应用

本文简介

写本文主要是围绕下面几点进行的。

1、information_schema数据库到底是做什么用的?

2、执行alter table 表名 modify column 字段名 类型 这个sql时,mysql发生了什么?

3、修改字段基本的sql记录【修改字段长度,修改字段名称,修改字段类型,默认值,是否空,字段说明,还有什么?】

正文

最近系统报一个错,字段设置为varchar(20),实际传入参数长度大于20,然后需要更改系统中所有库下的关于相关字段的长度,数据表有两百多个,假如一个个的查表找字段,我估计不能按时完成任务。怎么办?自己琢磨着难道mysql就没有记录所有的库的信息这个功能吗?一查果然有,就是这个库information_schema,给赞!

其实在自己安装mysql数据库的时候,会经常见到这个库,到底这个库是做什么用的,就没有再进一步了解过,今天遇到了,好好看一下。

df7806167de7cb97b7e5a8096498533d.png

92540bd3be93ef66eee26f3b90cc3285.png

其实对于上面的很多表中表示的是什么意思,目前都还不是很了解的,后续查资料,尽量补充一下。

这次我使用的表就是这个库下的COLUMNS表,这个表记录了详细的表中各字段的所属及类型,提供信息足够我使用,下面就是处理的sql。

处理sql:

select a.TABLE_SCHEMA as 库名,a.TABLE_NAME as 表名,a.COLUMN_NAME as 列名,

case when a.COLUMN_DEFAULT = '0' then '0' else '\'\'' end as 默认值,

case when a.IS_NULLABLE = 'NO' then 'not null' else 'null' end as 是否允许空,

a.COLUMN_TYPE as 列类型 ,a.COLUMN_COMMENT as 说明

from `COLUMNS` a

where

(a.COLUMN_NAME like '%mount%' or a.COLUMN_NAME like '%price%' or a.COLUMN_NAME like '%fee%')

and a.DATA_TYPE = 'varchar' and a.CHARACTER_MAXIMUM_LENGTH < 50

and a.TABLE_SCHEMA in(

'db_acc_v2',

'db_buz_v2',

'db_inv_v2',

'db_nc_v2',

'db_pay_v2',

'db_pro_v2',

'db_settle_v2');

# 拼接 修改sql

select CONCAT('alter table ',a.TABLE_SCHEMA,'.',a.TABLE_NAME,' modify column '

,a.COLUMN_NAME,' VARCHAR(50) ',case when a.is_nullable='NO' then 'not null' else 'null' end

,' DEFAULT ',case when a.COLUMN_DEFAULT is null then ' null ' else CONCAT('\'',a.COLUMN_DEFAULT,'\'') end

,' COMMENT ',case when a.COLUMN_COMMENT is null then ' null ' else CONCAT('\'',a.COLUMN_COMMENT,'\'') end,';')

from `COLUMNS` a

where (a.COLUMN_NAME like '%mount%' or a.COLUMN_NAME like '%price%' or a.COLUMN_NAME like '%fee%')

and a.DATA_TYPE = 'varchar' and a.CHARACTER_MAXIMUM_LENGTH < 50

and a.TABLE_SCHEMA in(

'db_acc_v2',

'db_buz_v2',

'db_inv_v2',

'db_nc_v2',

'db_pay_v2',

'db_pro_v2',

'db_settle_v2')

order by a.TABLE_SCHEMA,a.TABLE_NAME,a.COLUMN_NAME;

后记:

书中自有黄金屋,书中自有颜如玉呀,多读书,多实践,多写好代码!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值