前言:

日常工作或学习过程中,我们可能会经常用到某些SQL,建议大家多多整理记录下这些常用的SQL,这样后续用到会方便很多。笔者在工作及学习过程中也整理了下个人常用的SQL,现在分享给你!可能有些SQL你还不常用,但还是希望对你有所帮助,说不定某日有需求就可以用到。

注:下文分享的SQL适用于MySQL 5.7 版本,低版本可能稍许不同。有些SQL可能执行需要较高权限。

1.show相关语句

  1. # 查看实例参数 例如:
  2. show variables like '%innodb%';
  3. show global variables like '%innodb%';
  4. # 查看实例状态,例如:
  5. show status like 'uptime%';
  6. show global status like 'connection%';
  7. # 查看数据库链接:
  8. show processlist;
  9. show full processlist;
  10. # 查询某个表的结构:
  11. show create table tb_name;
  12. # 查询某个表的详细字段信息:
  13. show full columns from tb_name;
  14. # 查询某个表的全部索引信息:
  15. show index from tb_name;
  16. # 查询某个库以cd开头的表:
  17. show tables like 'cd%';
  18. # 查询某个库中的所有视图:
  19. show table status where comment='view';
  20. # 查询某个用户的权限:
  21. show grants for 'test_user'@'%';

2.查看账户相关信息

  1. # 这里先介绍下CONCAT函数:在MySQL中 CONCAT()函数用于将多个字符串连接成一个字符串,
  2. 利用此函数我们可以将原来一步无法得到的sql拼接出来,后面部分语句有用到该函数。
  3. # 当拼接字符串中出现''时 需使用\转义符
  4. # 查看所有用户名:
  5. SELECT DISTINCT
  6. CONCAT(
  7. 'User: \'',
  8. user,
  9. '\'@\'',
  10. host,
  11. '\';'
  12. ) AS QUERY
  13. FROM
  14. mysql.user;
  15. # 查看用户详细信息:
  16. SELECT user,
  17. host,
  18. authentication_string,
  19. password_expired,
  20. password_lifetime,
  21. password_last_changed,
  22. account_locked
  23. FROM
  24. mysql.user;

3.KILL数据库链接

  1. # 下面列举SQL只是拼接出kill 链接的语句,若想执行 直接将结果复制执行即可。
  2. # 杀掉空闲时间大于2000s的链接:
  3. SELECT
  4. concat( 'KILL ', id, ';' )
  5. FROM
  6. information_schema.`PROCESSLIST`
  7. WHERE
  8. Command = 'Sleep'
  9. AND TIME > 2000;
  10. # 杀掉处于某状态的链接:
  11. SELECT
  12. concat( 'KILL ', id, ';' )
  13. FROM
  14. information_schema.`PROCESSLIST`
  15. WHERE
  16. STATE LIKE 'Creating sort index';
  17. # 杀掉某个用户的链接:
  18. SELECT
  19. concat( 'KILL ', id, ';' )
  20. FROM
  21. information_schema.`PROCESSLIST`
  22. WHERE
  23. where user='root';

4.拼接创建数据库或用户语句

  1. # 拼接创建数据库语句(排除系统库):
  2. SELECT
  3. CONCAT(
  4. 'create database ',
  5. '`',
  6. SCHEMA_NAME,
  7. '`',
  8. ' DEFAULT CHARACTER SET ',
  9. DEFAULT_CHARACTER_SET_NAME,
  10. ';'
  11. ) AS CreateDatabaseQuery
  12. FROM
  13. information_schema.SCHEMATA
  14. WHERE
  15. SCHEMA_NAME NOT IN (
  16. 'information_schema',
  17. 'performance_schema',
  18. 'mysql',
  19. 'sys'
  20. );
  21. # 拼接创建用户语句(排除系统用户):
  22. SELECT
  23. CONCAT(
  24. 'create user \'',
  25. user,
  26. '\'@\'',
  27. Host,
  28. '\''
  29. ' IDENTIFIED BY PASSWORD \'',
  30. authentication_string,
  31. '\';'
  32. ) AS CreateUserQuery
  33. FROM
  34. mysql.`user`
  35. WHERE
  36. `User` NOT IN (
  37. 'root',
  38. 'mysql.session',
  39. 'mysql.sys'
  40. );
  41. # 有密码字符串哦 在其他实例执行 可直接创建出与本实例相同密码的用户。

5.查看库或表大小

  1. # 查看整个实例占用空间大小:
  2. SELECT
  3. concat( round( sum( data_length / 1024 / 1024 ), 2 ), 'MB' ) AS data_length_MB,
  4. concat( round( sum( index_length / 1024 / 1024 ), 2 ), 'MB' ) AS index_length_MB
  5. FROM
  6. information_schema.`TABLES`;
  7. # 查看各个库占用大小:
  8. SELECT
  9. TABLE_SCHEMA,
  10. concat( TRUNCATE ( sum( data_length )/ 1024 / 1024, 2 ), ' MB' ) AS data_size,
  11. concat( TRUNCATE ( sum( index_length )/ 1024 / 1024, 2 ), 'MB' ) AS index_size
  12. FROM
  13. information_schema.`TABLES`
  14. GROUP BY
  15. TABLE_SCHEMA;
  16. # 查看单个库占用空间大小:
  17. SELECT
  18. concat( round( sum( data_length / 1024 / 1024 ), 2 ), 'MB' ) AS data_length_MB,
  19. concat( round( sum( index_length / 1024 / 1024 ), 2 ), 'MB' ) AS index_length_MB
  20. FROM
  21. information_schema.`TABLES`
  22. WHERE
  23. table_schema = 'test_db';
  24. # 查看单个表占用空间大小:
  25. SELECT
  26. concat( round( sum( data_length / 1024 / 1024 ), 2 ), 'MB' ) AS data_length_MB,
  27. concat( round( sum( index_length / 1024 / 1024 ), 2 ), 'MB' ) AS index_length_MB
  28. FROM
  29. information_schema.`TABLES`
  30. WHERE
  31. table_schema = 'test_db'
  32. AND table_name = 'tbname';

6.查看表碎片及收缩语句

  1. # 查看某个库下所有表的碎片情况:
  2. SELECT
  3. t.TABLE_SCHEMA,
  4. t.TABLE_NAME,
  5. t.TABLE_ROWS,
  6. concat( round( t.DATA_LENGTH / 1024 / 1024, 2 ), 'M' ) AS size,
  7. t.INDEX_LENGTH,
  8. concat( round( t.DATA_FREE / 1024 / 1024, 2 ), 'M' ) AS datafree
  9. FROM
  10. information_schema.`TABLES` t
  11. WHERE
  12. t.TABLE_SCHEMA = 'test_db'
  13. ORDER BY
  14. datafree DESC;
  15. # 收缩表,减少碎片:
  16. alter table tb_name engine = innodb;
  17. optimize table tb_name;

7.查找无主键表

  1. # 查找某一个库无主键表:
  2. SELECT
  3. table_schema,
  4. table_name
  5. FROM
  6. information_schema.`TABLES`
  7. WHERE
  8. table_schema = 'test_db'
  9. AND TABLE_NAME NOT IN (
  10. SELECT
  11. table_name
  12. FROM
  13. information_schema.table_constraints t
  14. JOIN information_schema.key_column_usage k USING (
  15. constraint_name,
  16. table_schema,
  17. table_name
  18. )
  19. WHERE
  20. t.constraint_type = 'PRIMARY KEY'
  21. AND t.table_schema = 'test_db'
  22. );
  23. # 查找除系统库外 无主键表:
  24. SELECT
  25. t1.table_schema,
  26. t1.table_name
  27. FROM
  28. information_schema.`TABLES` t1
  29. LEFT OUTER JOIN information_schema.TABLE_CONSTRAINTS t2 ON t1.table_schema = t2.TABLE_SCHEMA
  30. AND t1.table_name = t2.TABLE_NAME
  31. AND t2.CONSTRAINT_NAME IN ('PRIMARY')
  32. WHERE
  33. t2.table_name IS NULL
  34. AND t1.TABLE_SCHEMA NOT IN (
  35. 'information_schema',
  36. 'performance_schema',
  37. 'mysql',
  38. 'sys'
  39. ) ;

总结:

希望这些SQL语句能对你有所帮助,可以收藏一下,说不定某次就用到了呢!原创不易,感谢大家支持。

常用SQL语句分享的更多相关文章

  1. Mysql 常用 SQL 语句集锦

    Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...

  2. Mysql 常用 SQL 语句集锦 转载(https://gold.xitu.io/post/584e7b298d6d81005456eb53)

    Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...

  3. 50个常用SQL语句

    50个常用SQL语句 Student(S#,Sname,Sage,Ssex) 学生表  S#学号,主键 Course(C#,Cname,T#) 课程表          C#课程号,主键 SC(S#, ...

  4. oracle sqlplus及常用sql语句

    常用sql语句 有需求才有动力 http://blog.csdn.net/yitian20000/article/details/6256716 常用sql语句 创建表空间:create tables ...

  5. oracle常用SQL语句(汇总版)

    Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, ...

  6. 常用SQL语句(增删查改、合并统计、模糊搜索)

    转自:http://www.cnblogs.com/ljianhui/archive/2012/08/13/2695906.html 常用SQL语句 首行当然是最基本的增删查改啦,其中最重要的是查. ...

  7. oracle 常用sql语句

    oracle 常用sql语句 1.查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_sizefrom d ...

  8. Sqlite常用sql语句

    sqlite常用sql语句 --返回UTC时间 select CURRENT_TIMESTAMP; --返回本地时间 select datetime(CURRENT_TIMESTAMP,'localt ...

  9. 常用SQL语句集合

    一.数据定义 1.创建新数据库:CREATE DATABASE database_name2.创建新表:CREATE TABLE table_name (column_name datatype,co ...

随机推荐

  1. nginx开启网站目录浏览功能

    一.开启全站目录浏览功能 编辑nginx.conf, 在http下面添加以下内容: autoindex on; # 开启目录文件列表 autoindex_exact_size on; # 显示出文件的 ...

  2. Python进阶-V 迭代器(Iterator)、生成器(Generator)函数

    一.迭代器 1.可循环的有哪些,即可用for语句或者while语句的数据类型有哪些? 字符串(str).列表(list).元组(tuple).字典(dic).集合(set).枚举类(enumerate ...

  3. ActionResult源码分析笔记

    ActionResult是一个抽象类: public abstract class ActionResult { public abstract void ExecuteResult(Controll ...

  4. itsdangerous模块

    使用场景: 在取消订阅时,可以在URL里序列化并且签名一个用户的ID或在任何的激活账户的链接或类似的情形下使用.这种情况下不需要生成一个一次性的token并把它们存到数据库中. 被签名的对象可以被存入 ...

  5. UVA10559 方块消除 Blocks 题解

    设g[i][j][k]为消去区间[i,j]中的方块,只留下k个与a[i]颜色相同的方块的最大价值,f[i][j]为将[i,j]中所有方块消去的价值,转移自己yy一下即可. 为什么这样是对的?因为对于一 ...

  6. python 利用淘宝IP库 查询IP归属地

    #coding:utf-8 from django.test import TestCase import json import urllib ip = "114.114.114.114& ...

  7. C# HTTP系列5 HttpWebResponse.StatusCode属性

    系列目录     [已更新最新开发文章,点击查看详细] HttpWebResponse.StatusCode 属性获取响应的状态.对应 HttpStatusCode 枚举值之一. HttpStatus ...

  8. axios浏览器异步请求方法封装 XMLHttpRequest

    axios学习笔记defaults(浏览器端异步请求处理方式) 浏览器异步请求方法封装,主要使用XMLHttpRequest lib/adapters/xhr.js //入口 var utils = ...

  9. POJ 3132 DP+素数筛

    Sum of Different Primes Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 3684   Accepted ...

  10. javascript 对象,函数,原型和 this

    1.对象 在javascript里,一切都是对象,包括函数自身(不是指具体的函数,而是指"Function"这个东东).例如: var fun1=new Function(&quo ...