Mysql私有增强性命令小记

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

MySQL 5 开始  你可以看到多了一个系统数据库 information_schema . information_schema  存贮了其他所有数据库的信息。 information_schema是一个虚拟数据库,并不物理存在。Mysql的INFORMATION_SCHEMA数据库包含了一些表和视图,提供了访问数据库元数据的方式这台MySQL服务器上,到底有哪些数据库、各个数据库有哪些表,每张表的字段类型是什么,各个数据库要什么权限才能访问,等等信息都保存在information_schema表里面. 让我们来看看几个使用这个数据库的例子http://hudeyong926.iteye.com/blog/859398

 

查询数据库dj214中表数据超过 1000 行的表

Java代码   收藏代码
  1. select concat(table_schema,'.',table_name) as table_name,table_rows    
  2.  from information_schema.tables where table_rows > 1000  and table_schema = 'dj214' order by table_rows desc;    

 

查询数据库dj214 中所有没有主键的表

Java代码   收藏代码
  1. SELECT CONCAT(t.table_schema,".",t.table_name) as table_name    
  2. FROM information_schema.TABLES t    
  3. LEFT JOIN information_schema.TABLE_CONSTRAINTS tc    
  4. ON t.table_schema = tc.table_schema    
  5. AND t.table_name = tc.table_name    
  6. AND tc.constraint_type = 'PRIMARY KEY'    
  7. WHERE tc.constraint_name IS NULL    
  8. AND t.table_type = 'BASE TABLE'  AND t.table_schema = 'dj214' ;   

查询所有数据库中10张最大表

Java代码   收藏代码
  1. SELECT concat(table_schema,'.',table_name) 表名称,    
  2. concat(round(data_length/(1024*1024),2),'M') 表大小    
  3.  FROM information_schema.TABLES    
  4. ORDER BY data_length DESC LIMIT 10;  

查看MYSQL数据库下所有的数据库

Java代码   收藏代码
  1. SELECT SCHEMA_NAME AS 'database' FROM INFORMATION_SCHEMA.SCHEMATA LIMIT 0 , 30   

列出指定数据库中的所有表名称

Java代码   收藏代码
  1. SELECT table_name, table_type, engine  FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = 'dj214' AND table_type='BASE TABLE'  

列出指定数据库下指定表的表结构

Java代码   收藏代码
  1. SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT   
  2. FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'systemlog' AND table_schema = 'dj214'  

一段MYSQL存储过程 [ 删除指定库中所有的空表 ]

Java代码   收藏代码
  1.     begin  
  2.     /*局部变量的定义,默认值为空 */  
  3.     declare tmpName varchar(200default '' ;  
  4.       
  5.     /*定义游标*/  
  6.     DECLARE reslutList Cursor FOR select table_name from information_schema.tables where table_rows <1 and table_schema = 'sz8_news' order by table_rows desc;  
  7.     declare CONTINUE HANDLER FOR SQLSTATE '02000' SET tmpname = null;  
  8.     OPEN reslutList;/*打开游标*/  
  9.     FETCH reslutList into tmpname; -- 取数据  
  10.     /* 循环体 */  
  11. WHILE ( tmpname is not null) DO  
  12.      set @sql = concat('drop table sz8_news.',tmpname,";");  
  13.      PREPARE stmt1 FROM @sql ;  
  14.      EXECUTE stmt1 ;  
  15.      DEALLOCATE PREPARE stmt1;  
  16.       /*游标向下走一步*/  
  17.      FETCH reslutList INTO tmpname;  
  18. END WHILE;  
  19. CLOSE reslutList; /*关闭游标*/  
  20. end  

一段 MYSQL存储过程 [ 删除指定库下所有表中的空列,即表中的任何一条记录该列都没有值 ]

Java代码   收藏代码
  1. BEGIN  
  2.     DECLARE done INT DEFAULT 0;  
  3.     DECLARE cTbl varchar(64);  
  4.     DECLARE cCol varchar(64);  
  5.     DECLARE cur1 CURSOR FOR  
  6.     select TABLE_NAME,COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS   
  7.     where TABLE_SCHEMA='sz8_news' and IS_NULLABLE='YES' order by TABLE_NAME;  
  8.     DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;  
  9.     set @sqlDrop='';  
  10.     OPEN cur1;  
  11.     FETCH cur1 INTO cTbl, cCol;/*得到表名及列名*/  
  12. WHILE done = 0 DO  
  13.     set @x=0;  
  14.     /*主要改进了这里把空值也纳入判断条件中去,即如果字段为null或空*/  
  15.     set @sql=concat('select 1 into @x from ',cTbl,' where ',cCol,' is not null and ',cCol,' !=""  limit 1');  
  16.     PREPARE stmt1 FROM @sql;  
  17.     EXECUTE stmt1;  
  18.     DEALLOCATE PREPARE stmt1;  
  19.     if @x=0 then  
  20.         set @sqlDrop=concat('alter table `',cTbl,'` drop COLUMN`',cCol,'`;');  
  21.         PREPARE stmt1 FROM @sqlDrop;  
  22.         EXECUTE stmt1;  
  23.         DEALLOCATE PREPARE stmt1;  
  24.     end if ;  
  25.     set done = 0;  
  26.     FETCH cur1 INTO cTbl, cCol;  
  27. END WHILE;  
  28. CLOSE cur1;  
  29. END  

 

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 关系型数据库 MySQL
【MySQL进阶之路丨第十三篇】一文带你精通MySQL之ALTER命令及序列使用
【MySQL进阶之路丨第十三篇】一文带你精通MySQL之ALTER命令及序列使用
40 0
|
3月前
|
关系型数据库 MySQL 数据库
Python tk dos命令备份mysql数据库
Python tk dos命令备份mysql数据库
25 0
|
3月前
|
机器学习/深度学习 SQL 关系型数据库
MySql基础命令(MySql学习——四)
MySql基础命令(MySql学习——四)
20 1
|
1月前
|
SQL 关系型数据库 MySQL
|
3月前
|
SQL 关系型数据库 MySQL
Mycat【Mycat部署安装(核心配置及目录结构、安装以及管理命令详解)Mycat高级特性(读写分离概述、搭建读写分离、MySQL双主双从原理)】(三)-全面详解(学习总结---从入门到深化)
Mycat【Mycat部署安装(核心配置及目录结构、安装以及管理命令详解)Mycat高级特性(读写分离概述、搭建读写分离、MySQL双主双从原理)】(三)-全面详解(学习总结---从入门到深化)
75 0
|
15天前
|
关系型数据库 MySQL
如何解决cmd命令窗口无法运行mysql命令的问题
如何解决cmd命令窗口无法运行mysql命令的问题
10 0
|
1月前
|
存储 关系型数据库 MySQL
|
1月前
|
关系型数据库 MySQL Linux
MySQL启动与登录命令详解
【2月更文挑战第27天】
50 1
MySQL启动与登录命令详解
|
1月前
|
SQL 存储 关系型数据库
|
2月前
|
存储 关系型数据库 MySQL
MySQL技能完整学习列表6、查询优化——1、EXPLAIN命令的使用——2、索引优化
MySQL技能完整学习列表6、查询优化——1、EXPLAIN命令的使用——2、索引优化
22 0