共计 2231 个字符,预计需要花费 6 分钟才能阅读完成。
自动写代码机器人,免费开通
丸趣 TV 小编给大家分享一下 MySQL 中常用的拼接语句是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
前言:在 MySQL 中 CONCAT () 函数用于将多个字符串连接成一个字符串,利用此函数我们可以将原来一步无法得到的 sql 拼接出来,在工作中也许会方便很多,下面主要介绍下几个常用的场景。
注:适用于 5.7 版本 低版本可能稍许不同。
1. 拼接查询所有用户
SELECT DISTINCT
CONCAT(
User: \ ,
USER,
\ @\ ,
HOST,
) AS QUERY
mysql.USER;
# 当拼接字符串中出现 时 需使用 \ 转义符
2. 拼接 DROP table
SELECT
CONCAT(
DROP table ,
TABLE_NAME,
information_schema. TABLES
WHERE
TABLE_SCHEMA = test
3. 拼接 kill 连接
SELECT
concat(KILL , id,)
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
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
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
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
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 中常用的拼接语句是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!
向 AI 问一下细节
丸趣 TV 网 – 提供最优质的资源集合!
正文完