concat配合information_schema的應用
1 concat的一般用法主要是用於拼接
示例:
執行語句 SELECT CONCAT('M','y','S','Q','L') 可以達到如下效果
2 在寫SQL備份語句時,假定要導出三張表分別為world下的
之前我們寫備份語句要寫三條 分別要導出這三張表;語句分別為

mysqldump -uroot -p123 world city >/tmp/world_city.sql mysqldump -uroot -p123 world country >/tmp/world_country.sql mysqldump -uroot -p123 world countrylanguage >/tmp/world_countrylanguage.sql
但是這是特定語句,如果該庫下有3000張表呢,30000張呢;為此這種導出方式不是最好的方式;為此我們可以將concat與information_schema聯系起來

SELECT CONCAT('mysqldump -uroot -p123 ',table_schema,' ',table_name,' >/tmp/',table_schema,'_',table_name,'.sql') FROM information_schema.tables WHERE table_schema='world';
請注意期中的一些細節:
' ' 引號中間有空格的話是表示空格,table_schema表示數據庫名
table_name表示表名;這些屬性在information_schema都可以找到
這是初始的寫法;執行效果如下
最后處理的方式:語句寫出來了,達到我們要的效果了;如果將來這個庫當中有其他表就會新增到concat的輸出語句
以上還不是最佳的效果
我們最好是將輸出的語句導出到指定文件
第一次執行會報錯;
處理方式如下:在/etc/my.cnf下新增語句 指定安全路徑
secure-file-priv=/tmp 並重啟數據庫后生效/etc/init.d/mysqld restart
重新執行語句不再報錯
在終端查看效果如下:
該腳本可以直接用sh 執行 執行完就會備份這4個表了
新的示例1:創建world下所有表的備份表

USE world -- 給world數據下每個表創建備份表 SHOW TABLES; -- 原先寫法 CREATE TABLE nod_bak LIKE nod; USE world SHOW TABLES; DROP TABLE nod_bak -- 使用concat SELECT CONCAT('create table ',table_name,'_bak like ',table_name,';') FROM information_schema.tables WHERE table_schema='world' INTO OUTFILE '/tmp/world_bak.sql'
新的示例2 :刪除world下所有的bak后綴的表

SELECT CONCAT('drop table ',table_name,'_bak',';') FROM information_schema.`TABLES` WHERE table_schema='world' INTO OUTFILE '/tmp/del_bak.sql';
關於oracle 和concat有關的內容
https://www.cnblogs.com/nodchen/p/10036189.html