最近帮老婆处理数据,需要同时对库内多个表进行操作,想着一个一个写sql太麻烦了,于是从网上搜集资料整理了一下,其实还是比较简单的,通过GROUP_CONCAT即可实现,例如我现在有个数据库test ,要对库内所有表生成一个查询语句: 查询语句生成如下:
SET SESSION group_concat_max_len = 1024000;
SELECT
GROUP_CONCAT( 'select ', table_name, '.* from ', table_name, ' ;' SEPARATOR " " )
FROM
information_schema.TABLES
WHERE
table_schema = 'test'
AND table_name LIKE '%o%';
生成的查询结果如下:
SELECT
bank_account.*
FROM
bank_account;
SELECT
person.*
FROM
person;
执行这两个sql语句就达到我们批量查询的效果了:
同样我们也可以批量执行DDL语句,例如给库内所有表都加一个字段:
-- 设置可执行的sql语句最大长度
SET SESSION group_concat_max_len = 1024000;
-- 需要添加的字段通过拼接得到可执行的sql语句
SELECT
GROUP_CONCAT( 'alter table ', table_name, ' add column remark TINYTEXT;' SEPARATOR " " ) sql语句
FROM
information_schema.TABLES
WHERE
table_schema = 'test'
AND table_name LIKE '%o%';
生成的查询结果如下:
ALTER TABLE bank_account ADD COLUMN remark TINYTEXT;
ALTER TABLE person ADD COLUMN remark TINYTEXT;
我们执行这两个sql语句: 执行成功后查看表信息:
|