MySQL 常用的拼接语句汇总

 更新时间:2020年08月30日 11:49:36   作者:MySQL技术  
这篇文章主要介绍了MySQL 常用的拼接语句,帮助大家更好的理解和使用MySQL,感兴趣的朋友可以了解下

前言:在MySQL中 CONCAT ()函数用于将多个字符串连接成一个字符串,利用此函数我们可以将原来一步无法得到的sql拼接出来,在工作中也许会方便很多,下面主要介绍下几个常用的场景。

注:适用于5.7版本 低版本可能稍许不同。

1.拼接查询所有用户

SELECT DISTINCT
  CONCAT(
    'User: \'',
    USER,
    '\'@\'',
    HOST,
    '\';'
  ) AS QUERY
FROM
  mysql.USER;
# 当拼接字符串中出现'时 需使用\转义符

2.拼接DROP table

SELECT
  CONCAT(
    'DROP table ',
    TABLE_NAME,
    ';'
  )
FROM
  information_schema. TABLES
WHERE
  TABLE_SCHEMA = 'test';

3.拼接kill连接

SELECT
  concat('KILL ', id, ';')
FROM
  information_schema. PROCESSLIST
WHERE
  STATE LIKE 'Creating sort index';

4.拼接创建数据库语句

SELECT
  CONCAT(
    'create database ',
    '`',
  SCHEMA_NAME,
  '`',
  ' DEFAULT CHARACTER SET ',
  DEFAULT_CHARACTER_SET_NAME,
    ';'
  ) AS CreateDatabaseQuery
FROM
  information_schema.SCHEMATA
WHERE
  SCHEMA_NAME NOT IN (
    'information_schema',
    'performance_schema',
    'mysql',
    'sys'
  );

5.拼接创建用户的语句

SELECT
  CONCAT(
    'create user \'',
  user,
  '\'@\'',
  Host,
  '\''
  ' IDENTIFIED BY PASSWORD \'',
  authentication_string,
    '\';'
  ) AS CreateUserQuery
FROM
  mysql.`user`
WHERE
  `User` NOT IN (
    'root',
    'mysql.session',
    'mysql.sys'
  );
#有密码字符串哦 在其他实例执行 可直接创建出与本实例相同密码的用户

6.导出权限脚本 这个shell脚本也用到了拼接

#!/bin/bash 
#Function export user privileges 

pwd=yourpass 
expgrants() 
{ 
 mysql -B -u'root' -p${pwd} -N $@ -e "SELECT CONCAT( 'SHOW GRANTS FOR ''', user, '''@''', host, ''';' ) AS query FROM mysql.user" | \
 mysql -u'root' -p${pwd} $@ | \
 sed 's/\(GRANT .*\)/\1;/;s/^\(Grants for .*\)/-- \1 /;/--/{x;p;x;}' 
} 

expgrants > /tmp/grants.sql
echo "flush privileges;" >> /tmp/grants.sql

7.查找表碎片

SELECT t.TABLE_SCHEMA,
    t.TABLE_NAME,
    t.TABLE_ROWS,
    concat(round(t.DATA_LENGTH / 1024 / 1024, 2), 'M') AS size,
    t.INDEX_LENGTH,
    concat(round(t.DATA_FREE / 1024 / 1024, 2), 'M') AS datafree
FROM information_schema.tables t
WHERE t.TABLE_SCHEMA = 'test' order by DATA_LENGTH desc;

8.查找无主键表 这个没用到拼接 也分享出来吧

#查找某一个库无主键表
SELECT
table_schema,
table_name
FROM
  information_schema.TABLES
WHERE
  table_schema = 'test'
AND TABLE_NAME NOT IN (
  SELECT
    table_name
  FROM
    information_schema.table_constraints t
  JOIN information_schema.key_column_usage k USING (
    constraint_name,
    table_schema,
    table_name
  )
  WHERE
    t.constraint_type = 'PRIMARY KEY'
  AND t.table_schema = 'test'
);

#查找除系统库外 无主键表
SELECT
  t1.table_schema,
  t1.table_name
FROM
  information_schema. TABLES t1
LEFT OUTER JOIN information_schema.TABLE_CONSTRAINTS t2 ON t1.table_schema = t2.TABLE_SCHEMA
AND t1.table_name = t2.TABLE_NAME
AND t2.CONSTRAINT_NAME IN ('PRIMARY')
WHERE
  t2.table_name IS NULL
AND t1.TABLE_SCHEMA NOT IN (
  'information_schema',
  'performance_schema',
  'mysql',
  'sys'
) ;

以上就是MySQL 常用的拼接语句汇总的详细内容,更多关于MySQL 拼接语句的资料请关注脚本之家其它相关文章!

相关文章

  • 数据库中的sql完整性约束语句解析

    数据库中的sql完整性约束语句解析

    这篇文章主要介绍了数据库中的sql完整性约束语句解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • MYSQL事务死锁问题排查及解决方案

    MYSQL事务死锁问题排查及解决方案

    这篇文章主要介绍了Java服务报错日志的情况,并通过一系列排查和优化措施,最终发现并解决了服务假死的问题,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-02-02
  • MySQL连接被阻塞的问题分析与解决方案(从错误到修复)

    MySQL连接被阻塞的问题分析与解决方案(从错误到修复)

    在Java应用开发中,数据库连接是必不可少的一环,然而,在使用MySQL时,我们可能会遇到MySQL服务器由于检测到过多的连接失败,自动阻止了来自该主机的连接请求,本文将深入分析该问题的原因,并提供完整的解决方案,需要的朋友可以参考下
    2025-04-04
  • Ubuntu上mysql的安装及使用(通用版)

    Ubuntu上mysql的安装及使用(通用版)

    今天小编就为大家分享一篇关于Ubuntu上mysql的安装及使用(通用版),小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • MySQL中常见的六个约束类型详解

    MySQL中常见的六个约束类型详解

    数据类型是为了节约内存,提高计算, 数据约束是为了完整性(存储关系),下面这篇文章主要给大家介绍了关于MySQL中常见的六个约束类型的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2021-09-09
  • MySQL中按时间获取慢日志信息的方法

    MySQL中按时间获取慢日志信息的方法

    这篇文章主要介绍了MySQL中按时间获取慢日志信息的方法,使用到了cutlogbytime这个工具,主要操作是设置时间戳,需要的朋友可以参考下
    2015-05-05
  • MySql如何实现远程登录MySql数据库过程解析

    MySql如何实现远程登录MySql数据库过程解析

    这篇文章主要介绍了MySql如何实现远程登录MySql数据库过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 在MySQL中使用LIMIT进行分页的方法

    在MySQL中使用LIMIT进行分页的方法

    这篇文章主要介绍了在MySQL中使用LIMIT进行分页的方法,作者列举出了三种方法,并且针对跳页等常见问题做出了提示,需要的朋友可以参考下
    2015-05-05
  • MySQL分区建索引以及分区介绍总结

    MySQL分区建索引以及分区介绍总结

    当mysql一张数据表中的数据达到一定的量时,在其中查询某一个数据,需要花费大量的时间,下面这篇文章主要给大家介绍了关于MySQL分区建索引以及分区介绍的相关资料,需要的朋友可以参考下
    2022-04-04
  • 在MySQL中增添新用户权限的方法

    在MySQL中增添新用户权限的方法

    在MySQL中增添新用户权限的方法...
    2007-03-03

最新评论