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

js to realize automatic lock screen function

1. Usage scenarios There is such a requirement, s...

Detailed explanation of the command mode in Javascript practice

Table of contents definition structure Examples C...

Detailed explanation of Linux CPU load and CPU utilization

CPU Load and CPU Utilization Both of these can re...

How to use CSS to write different styles according to sub-elements

The effect we need to achieve: What is needed The...

N ways to align the last row of lists in CSS flex layout to the left (summary)

I would like to quote an article by Zhang Xinxu a...

React Synthetic Events Explained

Table of contents Start by clicking the input box...

Vue3 + TypeScript Development Summary

Table of contents Vue3 + TypeScript Learning 1. E...

A great collection of web standards learning resources

These specifications are designed to allow for bac...

Detailed Analysis of the Selection of MySQL Common Index and Unique Index

Suppose a user management system where each perso...

Vue implements the function of calling the mobile phone camera and album

This article shares the specific code of Vue to a...

IE6 space bug fix method

Look at the code: Copy code The code is as follows...

Web design tips on form input boxes

1. Dashed box when cancel button is pressed <br...

How are spaces represented in HTML (what do they mean)?

In web development, you often encounter characters...