关于MySQL的information_schema库简单介绍及实际应用
本文简介
写本文主要是围绕下面几点进行的。
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库简单介绍及实际应用的更多相关文章
- Python常用的库简单介绍一下
Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable ...
- professional cuda c programming--CUDA库简单介绍
CUDA Libraries简单介绍 上图是CUDA 库的位置.本文简要介绍cuSPARSE.cuBLAS.cuFFT和cuRAND.之后会介绍OpenACC. cuSPARSE线性代数库,主要针 ...
- MySQL的information_schema库
information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式. 什么是元数据呢?元数据是关于数据的数据,如数据库名或表名.列的数据类型,或访问权限.有些时候用于表述该信 ...
- PCL(Point Cloud Library)的第三方库简单介绍(boost,eigen,flann,vtk,qhull)
PCL由于融合了大量的第三方开源库,导致学习成本升高~在学习之前我们最好还是了解一下这些库都是干嘛的,以便有的放矢.在之后更好的使用 boost: C++的标准库的备用版,擅长从数学库到智能指针,从模 ...
- js工具库简单介绍
javascript mvc的解决方案: angularjs, backbone,underscore, 有空的时候了解一下. 移动端的几个需要了解一下,jq mobile, zepto.knocko ...
- 嵌入式Linux下MP4视频录制库MP4V2移植和简单介绍
**************************************************************************************************** ...
- day39——SQL语句简单介绍、库、表、记录、安装mysql简单命令
day39 SQL语句简单介绍 库(增删改查) 查看数据库 show databases; 查看其中一个库 show create database db1; 创建数据库 create databas ...
- MySQL sys Schema 简单介绍-2
之前在<MySQL sys Schema 简单介绍-1>中简单的介绍了,sys Schema库中的表.那么这些表都可以查询些什么信息呢?接下来本文将做下介绍. 1. 表的情况 1.1 统计 ...
- MySQL sys Schema 简单介绍-1
参考文档: MySQL- 5.7 sys schema笔记 MySQL 5.7新特性:SYS库详解 MySQL Performance Schema&sys Schema介绍 内存分配统计视图 ...
随机推荐
- Ural 1774 Barber of the Army of Mages 最大流
题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1774 1774. Barber of the Army of Mages Time li ...
- HtmlEmail实现简单发送邮件
一般发送邮件的话系统项目中可能会用到,像一些通知信息自动发送等,会用到发送邮件的情况,发送邮件有好多种,包括设置各种格式,添加图片附件等,当然今天我们先看一下怎么实现发送成功. 工欲善其事必先利其器, ...
- DELPHI 10.2(TOKYO) FOR LINUX的兼容性说明
DELPHI 10.2(TOKYO) FOR LINUX的兼容性说明 自DELPHI 10.2(TOKYO) 始开始支持Linux . Delphi Linux 编译器 64 位 Linux 平台支持 ...
- sh_Spring整合Hibernate
分别介绍了Sping和Hibernate,以下是将它们整合到一块去了. 一.Hibernate内容 1.创建PO类. package cn.tgb.domain; //User实体 public ...
- C#中的抽象类和子类
namespace FreeDlder { // 抽象类 public abstract class Dld { protected Form1 mainGui; protected String i ...
- Spring学习【Spring概述】
从本文開始,我们就要一起学习Spring框架,首先不得不说Spring框架是一个优秀的开源框架. 当中採用IoC原理实现的基于Java Beans的配置管理和AOP的思想都是非常值得学习与使用的.以下 ...
- 备忘:js正则表达式中的元字符
Predefined term Matches \t Horizontal tab \b Backspace \v Vertical tab \f Form feed \r Carriage retu ...
- 04 json,xml混合封装通信
<?php class Response_json_xml{ public static function show($code,$message="",$data=arra ...
- EEPlat 主子表和对象引用配置实例
本次实例以常见的订单维护,来介绍下平台内类似主子表结构的配置方法. 订单包含订单头和订单明细.订单头包含简单信息:订单编号.订单状态.客户. 交付日期.订单日期.备注等.订单明细包含:订单产品.定单数 ...
- js如何获取手机的屏幕尺寸
var width = $(document.body).outerWidth();//手机的屏幕宽 var height = $(window).innerHeight(); //手机的屏幕高