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

VMware Workstation Pro 16 License Key with Usage Tutorial

VMware Workstation is a powerful desktop virtual ...

MySQL 4 common master-slave replication architectures

Table of contents One master and multiple slaves ...

PHP related paths and modification methods in Ubuntu environment

PHP related paths in Ubuntu environment PHP path ...

Some suggestions on Vue code readability

Table of contents 1. Make good use of components ...

Summary of important components of MySQL InnoDB

Innodb includes the following components 1. innod...

Detailed explanation of the process of building and running Docker containers

Simply pull the image, create a container and run...

JS realizes the scrolling effect of announcement online

This article shares the specific code of JS to ac...

Implementation of static website layout in docker container

Server placement It is recommended to use cloud s...

How to install jupyter in docker on centos and open ports

Table of contents Install jupyter Docker port map...

Solution for Nginx installation without generating sbin directory

Error description: 1. After installing Nginx (1.1...

Basic statements of MySQL data definition language DDL

MySQL DDL statements What is DDL, DML. DDL is dat...

Vue implements seamless scrolling of lists

This article example shares the specific code of ...

Differences between ES6 inheritance and ES5 inheritance in js

Table of contents Inheritance ES5 prototype inher...

Summary of how to add root permissions to users in Linux

1. Add a user . First, use the adduser command to...

MySQL calculates the number of days, months, and years between two dates

The MySQL built-in date function TIMESTAMPDIFF ca...