MySQL concat用法举例
Posted 90500042陈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL concat用法举例相关的知识,希望对你有一定的参考价值。
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
以上是关于MySQL concat用法举例的主要内容,如果未能解决你的问题,请参考以下文章
mysql中concat 和 group_concat()的用法