博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【MySQL】常用拼接语句
阅读量:5917 次
发布时间:2019-06-19

本文共 2874 字,大约阅读时间需要 9 分钟。

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

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

1.拼接查询所有用户
SELECT DISTINCT    CONCAT(        'User: \'',        USER,        '\'@\'',        HOST,        '\';'    ) AS QUERYFROM    mysql.USER;# 当拼接字符串中出现'时 需使用\转义符
2.拼接DROP table
SELECT    CONCAT(        'DROP table ',        TABLE_NAME,        ';'    )FROM    information_schema. TABLESWHERE    TABLE_SCHEMA = 'test';
3.拼接kill连接
SELECT    concat('KILL ', id, ';')FROM    information_schema. PROCESSLISTWHERE    STATE LIKE 'Creating sort index';
4.拼接创建数据库语句
SELECT    CONCAT(        'create database ',        '`',    SCHEMA_NAME,    '`',    ' DEFAULT CHARACTER SET ',    DEFAULT_CHARACTER_SET_NAME,        ';'    ) AS CreateDatabaseQueryFROM    information_schema.SCHEMATAWHERE    SCHEMA_NAME NOT IN (        'information_schema',        'performance_schema',        'mysql',        'sys'    );
5.拼接创建用户的语句
SELECT    CONCAT(        'create user \'',    user,    '\'@\'',    Host,    '\''    ' IDENTIFIED BY PASSWORD \'',    authentication_string,        '\';'    ) AS CreateUserQueryFROM    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.sqlecho "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 datafreeFROM information_schema.tables tWHERE t.TABLE_SCHEMA = 'test' order by DATA_LENGTH desc;
8.查找无主键表 这个没用到拼接 也分享出来吧
#查找某一个库无主键表SELECTtable_schema,table_nameFROM    information_schema.TABLESWHERE    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_nameFROM    information_schema. TABLES t1LEFT OUTER JOIN information_schema.TABLE_CONSTRAINTS t2 ON t1.table_schema = t2.TABLE_SCHEMAAND t1.table_name = t2.TABLE_NAMEAND t2.CONSTRAINT_NAME IN ('PRIMARY')WHERE    t2.table_name IS NULLAND t1.TABLE_SCHEMA NOT IN (    'information_schema',    'performance_schema',    'mysql',    'sys') ;

欢迎大家收藏,其他同学有没有类似实用的语句呢 也可以分享出来哦!

【MySQL】常用拼接语句

转载于:https://blog.51cto.com/10814168/2335565

你可能感兴趣的文章
我的友情链接
查看>>
《Spring实战》第四版读书笔记 第一章 Spring之旅
查看>>
那些年,一起学的Java 2-4
查看>>
RedHat已更改其开源许可规则
查看>>
redis集群搭建
查看>>
LNMP架构 (Ⅱ)——nginx相关配置、nginx代理
查看>>
神级python程序员只需要一个公众号,再也不会错过重要资讯
查看>>
双十一流量洪峰 支撑阿里核心业务的云数据库揭秘
查看>>
OSChina 周一乱弹 ——程序员跟产品经理撕逼必须掌握的套路
查看>>
Linux系统启动流程详解
查看>>
Magento(CE1.X)自带模块解析五
查看>>
Factory Method模式 (一)
查看>>
代码整洁之道-第9章-单元测试-读书笔记
查看>>
C++ ssd5 12 optional exercise2
查看>>
如何调用带返回值类型的函数
查看>>
linux网络编程涉及的函数
查看>>
数据表的相关操作
查看>>
POJ 2594 Treasure Exploration(最小可相交路径覆盖)题解
查看>>
数据挖掘十大经典算法
查看>>
ArcGIS API for Silverlight 调用GP服务加载等值线图层
查看>>