MySQL中的information_schema
information_schema 数据库是MySQL自带的,可看作是一个数据库,确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等
SCHEMATA表:提供了关于数据库的信息。
TABLES表:给出了关于数据库中的表的信息。
COLUMNS表:给出了表中的列信息。
STATISTICS表:给出了关于表索引的信息。
配合concat()函数可以达到如虎添翼的效果;
SELECT CONCAT('update ',table_schema,".",table_name," set schoolId=149;") FROM `information_schema`.columns WHERE table_schema='idsp_jn14' AND column_name='schoolId'; --查出数据库某个表包含字段是schoolId,并拼接成SQL语句
SELECT concat('use ',SCHEMA_NAME,'; ALTER TABLE `frm_requestlog` ADD INDEX `requestLog_createTime` (`CreatedTime`); ALTER TABLE `frm_requestlog` ADD INDEX `requestLog_userId` (`UserId`);') FROM `SCHEMATA` WHERE `SCHEMA_NAME` LIKE 'idsp%' and SCHEMA_NAME!='idsp_dblocator' LIMIT 0,1000; --这是一条拼接成生成索引的SQL语句