Summary of MySQL's commonly used concatenation statements

Summary of MySQL's commonly used concatenation statements

Preface: In MySQL, the CONCAT() function is used to concatenate multiple strings into one string. Using this function, we can splice out the SQL that could not be obtained in one step. It may be much more convenient in work. The following mainly introduces several commonly used scenarios.

Note: Applicable to version 5.7 and lower versions may be slightly different.

1. Join and query all users

SELECT DISTINCT
  CONCAT(
    'User: \'',
    USER,
    '\'@\'',
    HOST,
    '\';'
  ) AS QUERY
FROM
  mysql.USER;
# When ' appears in the concatenated string, you need to use the \ escape character

2. Join DROP tables

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

3. Splice kill connection

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

4. Splice the statements to create a database

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. Concatenate statements to create users

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'
  );
# There is a password string. You can directly create a user with the same password as this instance by executing it in other instances

6. Export permission script This shell script also uses splicing

#!/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. Lookup table fragmentation

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. Find the table without primary key. This is not used for splicing, so share it.

#Find a table without a primary key in a certain librarySELECT
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
  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'
);

#Search for tables without primary keys except system librariesSELECT
  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'
) ;

The above is the detailed content of the commonly used concatenation statements in MySQL. For more information about MySQL concatenation statements, please pay attention to other related articles on 123WORDPRESS.COM!

You may also be interested in:
  • MySQL uses show status to view MySQL server status information
  • How to get table information in MySQL show table status
  • Summary of commonly used SQL statements for creating MySQL tables
  • Record a pitfall of MySQL update statement update
  • Navicat Premium operates MySQL database (executes sql statements)
  • The difference between two MySQL delete user statements (delete user and drop user)
  • Summary of MySQL database like statement wildcard fuzzy query
  • Summary of methods for writing judgment statements in MySQL
  • MySQL data duplicate checking and deduplication implementation statements
  • Use of MySQL SHOW STATUS statement

<<:  Linux uses shell scripts to regularly delete historical log files

>>:  A simple and in-depth study of async and await in JavaScript

Recommend

MYSQL master-slave replication knowledge points summary

An optimization solution when a single MYSQL serv...

How to add java startup command to tomcat service

My first server program I'm currently learnin...

Nginx request limit configuration method

Nginx is a powerful, high-performance web and rev...

MySQL 8.0.11 MacOS 10.13 installation and configuration method graphic tutorial

The process of installing MySQL database and conf...

How to quickly insert 10 million records into MySQL

I heard that there is an interview question: How ...

Problems encountered by MySQL nested transactions

MySQL supports nested transactions, but not many ...

MySql 5.7.20 installation and configuration of data and my.ini files

1. First download from the official website of My...

Linux sar command usage and code example analysis

1. CPU utilization sar -p (view all day) sar -u 1...

MySQL online deadlock analysis practice

Preface I believe that everyone has had a simple ...

Docker-compose steps to configure the spring environment

Recently, I need to package the project for membe...

Vue encapsulation component tool $attrs, $listeners usage

Table of contents Preface $attrs example: $listen...

C# implements MySQL command line backup and recovery

There are many tools available for backing up MyS...

Linux cut command explained

The cut command in Linux and Unix is ​​used to cu...