本文简介

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

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

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

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

正文

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

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

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

这次我使用的表就是这个库下的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;

  

后记:

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

关于MySQL的information_schema库简单介绍及实际应用的更多相关文章

  1. Python常用的库简单介绍一下

    Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable ...

  2. professional cuda c programming--CUDA库简单介绍

    CUDA Libraries简单介绍   上图是CUDA 库的位置.本文简要介绍cuSPARSE.cuBLAS.cuFFT和cuRAND.之后会介绍OpenACC. cuSPARSE线性代数库,主要针 ...

  3. MySQL的information_schema库

    information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式. 什么是元数据呢?元数据是关于数据的数据,如数据库名或表名.列的数据类型,或访问权限.有些时候用于表述该信 ...

  4. PCL(Point Cloud Library)的第三方库简单介绍(boost,eigen,flann,vtk,qhull)

    PCL由于融合了大量的第三方开源库,导致学习成本升高~在学习之前我们最好还是了解一下这些库都是干嘛的,以便有的放矢.在之后更好的使用 boost: C++的标准库的备用版,擅长从数学库到智能指针,从模 ...

  5. js工具库简单介绍

    javascript mvc的解决方案: angularjs, backbone,underscore, 有空的时候了解一下. 移动端的几个需要了解一下,jq mobile, zepto.knocko ...

  6. 嵌入式Linux下MP4视频录制库MP4V2移植和简单介绍

    **************************************************************************************************** ...

  7. day39——SQL语句简单介绍、库、表、记录、安装mysql简单命令

    day39 SQL语句简单介绍 库(增删改查) 查看数据库 show databases; 查看其中一个库 show create database db1; 创建数据库 create databas ...

  8. MySQL sys Schema 简单介绍-2

    之前在<MySQL sys Schema 简单介绍-1>中简单的介绍了,sys Schema库中的表.那么这些表都可以查询些什么信息呢?接下来本文将做下介绍. 1. 表的情况 1.1 统计 ...

  9. MySQL sys Schema 简单介绍-1

    参考文档: MySQL- 5.7 sys schema笔记 MySQL 5.7新特性:SYS库详解 MySQL Performance Schema&sys Schema介绍 内存分配统计视图 ...

随机推荐

  1. awk的求和计算使用;awk多个分隔符如何使用?

    1.对于下图,如何使用awk求所有各列的和 和:175 16 78 19 方法:awk '{for(n=1;n<=NF;n++)t[n]+=$n}END{for(n=1;n<=NF;n++ ...

  2. 自定义PropertyGrid控件【转】

    自定义PropertyGrid控件 这篇随笔其实是从别人博客上载录的.感觉很有价值,整理了一下放在了我自己的博客上,希望原作者不要介意. 可自定义PropertyGrid控件的属性.也可将属性名称显示 ...

  3. ann搜索算法(Approximate Nearest Neighbor)

    ANN的方法分为三大类:基于树的方法.哈希方法.矢量量化方法.brute-force搜索的方式是在全空间进行搜索,为了加快查找的速度,几乎所有的ANN方法都是通过对全空间分割,将其分割成很多小的子空间 ...

  4. ccs 中的定位

    一.相对定位 position:relative; 作用: 相对定位 一般加给定位元素父级    特点: (1)不脱离文档流: (2)不改变元素类型: (3)参照物是元素本身: 二.绝对定位 posi ...

  5. Django开发微信公众平台

    处理微信发来的信息,实际上就是处理xml的过程.先写xml工具类 # -*- coding:utf-8 -*- from xml.dom import minidom from Web.model.W ...

  6. 验证loadrunner对Ajax内容的校验

    前一阵和开发的同事一起測试某个系统的性能.此系统是发送Ajax请求到后台,再调用第三方的某项服务. 第三方服务的性能由不得我们控制.因此开发者做了一下改进.超时则直接返回. 于是在loadrunner ...

  7. java开始到熟悉105-107

    1,HashMap基本用法 package list; import java.util.HashMap; import java.util.Map; /** * 测试map的基本用法 * @auth ...

  8. 利用反射快速给Model实体赋值 使用 Task 简化异步编程 Guid ToString 格式知多少?(GUID 格式) Parallel Programming-实现并行操作的流水线(生产者、消费者) c# 无损高质量压缩图片代码 8种主要排序算法的C#实现 (一) 8种主要排序算法的C#实现 (二)

    试想这样一个业务需求:有一张合同表,由于合同涉及内容比较多所以此表比较庞大,大概有120多个字段.现在合同每一次变更时都需要对合同原始信息进行归档一次,版本号依次递增.那么我们就要新建一张合同历史表, ...

  9. JSTL简单介绍

    1.JSTL简单介绍: JSTL(JSP Standard Tag Library.JSP标准标签库)是一个不断完好的开放源码的JSP标签库.其提供两组标签,一组使用 EL(Expression La ...

  10. longestIncreasingSequence最长上升子序列问题

    package dp; /** * 最长上升子序列问题 */ public class LongestIncreasingSubsequence { /** * 原始dp * @param arr * ...