MySQL 常用的拼接语句汇总
前言:在MySQL中CONCAT()函数用于将多个字符串连接成一个字符串,利用此函数我们可以将原来一步无法得到的sql拼接出来,在工作中也许会方便很多,下面主要介绍下几个常用的场景。
注:适用于5.7版本低版本可能稍许不同。
1.拼接查询所有用户
SELECTDISTINCT CONCAT( 'User:\'', USER, '\'@\'', HOST, '\';' )ASQUERY FROM mysql.USER; #当拼接字符串中出现'时需使用\转义符
2.拼接DROPtable
SELECT CONCAT( 'DROPtable', TABLE_NAME, ';' ) FROM information_schema.TABLES WHERE TABLE_SCHEMA='test';
3.拼接kill连接
SELECT
concat('KILL',id,';')
FROM
information_schema.PROCESSLIST
WHERE
STATELIKE'Creatingsortindex';
4.拼接创建数据库语句
SELECT CONCAT( 'createdatabase', '`', SCHEMA_NAME, '`', 'DEFAULTCHARACTERSET', DEFAULT_CHARACTER_SET_NAME, ';' )ASCreateDatabaseQuery FROM information_schema.SCHEMATA WHERE SCHEMA_NAMENOTIN( 'information_schema', 'performance_schema', 'mysql', 'sys' );
5.拼接创建用户的语句
SELECT CONCAT( 'createuser\'', user, '\'@\'', Host, '\'' 'IDENTIFIEDBYPASSWORD\'', authentication_string, '\';' )ASCreateUserQuery FROM mysql.`user` WHERE `User`NOTIN( 'root', 'mysql.session', 'mysql.sys' ); #有密码字符串哦在其他实例执行可直接创建出与本实例相同密码的用户
6.导出权限脚本这个shell脚本也用到了拼接
#!/bin/bash
#Functionexportuserprivileges
pwd=yourpass
expgrants()
{
mysql-B-u'root'-p${pwd}-N$@-e"SELECTCONCAT('SHOWGRANTSFOR''',user,'''@''',host,''';')ASqueryFROMmysql.user"|\
mysql-u'root'-p${pwd}$@|\
sed's/\(GRANT.*\)/\1;/;s/^\(Grantsfor.*\)/--\1/;/--/{x;p;x;}'
}
expgrants>/tmp/grants.sql
echo"flushprivileges;">>/tmp/grants.sql
7.查找表碎片
SELECTt.TABLE_SCHEMA, t.TABLE_NAME, t.TABLE_ROWS, concat(round(t.DATA_LENGTH/1024/1024,2),'M')ASsize, t.INDEX_LENGTH, concat(round(t.DATA_FREE/1024/1024,2),'M')ASdatafree FROMinformation_schema.tablest WHEREt.TABLE_SCHEMA='test'orderbyDATA_LENGTHdesc;
8.查找无主键表这个没用到拼接也分享出来吧
#查找某一个库无主键表
SELECT
table_schema,
table_name
FROM
information_schema.TABLES
WHERE
table_schema='test'
ANDTABLE_NAMENOTIN(
SELECT
table_name
FROM
information_schema.table_constraintst
JOINinformation_schema.key_column_usagekUSING(
constraint_name,
table_schema,
table_name
)
WHERE
t.constraint_type='PRIMARYKEY'
ANDt.table_schema='test'
);
#查找除系统库外无主键表
SELECT
t1.table_schema,
t1.table_name
FROM
information_schema.TABLESt1
LEFTOUTERJOINinformation_schema.TABLE_CONSTRAINTSt2ONt1.table_schema=t2.TABLE_SCHEMA
ANDt1.table_name=t2.TABLE_NAME
ANDt2.CONSTRAINT_NAMEIN('PRIMARY')
WHERE
t2.table_nameISNULL
ANDt1.TABLE_SCHEMANOTIN(
'information_schema',
'performance_schema',
'mysql',
'sys'
);
以上就是MySQL常用的拼接语句汇总的详细内容,更多关于MySQL拼接语句的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。