从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(200) default '' ;
  4. /*定义游标*/
  5. 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;
  6. declare CONTINUE HANDLER FOR SQLSTATE '02000' SET tmpname = null;
  7. OPEN reslutList;/*打开游标*/
  8. FETCH reslutList into tmpname; -- 取数据
  9. /* 循环体 */
  10. WHILE ( tmpname is not null) DO
  11. set @sql = concat('drop table sz8_news.',tmpname,";");
  12. PREPARE stmt1 FROM @sql ;
  13. EXECUTE stmt1 ;
  14. DEALLOCATE PREPARE stmt1;
  15. /*游标向下走一步*/
  16. FETCH reslutList INTO tmpname;
  17. END WHILE;
  18. CLOSE reslutList; /*关闭游标*/
  19. 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

Mysql私有增强性命令小记相关推荐

  1. mysql 负载 查看_Mysql-命令查询当前正在负载运行的SQL语句

    1)我们先通过status命令查看Mysql运行状态,如下: mysql> status; -------------- mysql  Ver 14.12 Distrib 5.0.77, for ...

  2. mysql 切表_mysql--------命令来操作表

    常用的通过mysql命令来更改表结构的一些sql语句,包括添加.删除.修改字段.调整字段顺序. 添加字段: alter table `user_movement_log` Add column Gat ...

  3. mysql从zip包安装小记

    @echo off title mysql zip安装 set PATH="%CD%\bin";%PATH% if not exist .\data mkdir data rem ...

  4. mysql视频教程特密码_分享一个MySQL 密码增强插件

    介绍 以前没有太注意MySQL密码安全策略的配置方法,只是人为了将密码设为复杂密码,但是没有找到配置的方法,今天姜承尧的微信公众号正好发布了一篇关于这个的文章,所以在这里也顺便将方法写下来.首先该功能 ...

  5. mysql端口4050_mysql 安装使用小记

    开启 MySQL 的远程登陆帐号有两大步: 1.确定服务器上的防火墙没有阻止 3306 端口. MySQL 默认的端口是 3306 ,需要确定防火墙没有阻止 3306 端口,否则远程是无法通过 330 ...

  6. mysql udf http,mysql下mysql-udf-http效率测试小记

    看到张宴的博客上关于"http/rest客户端的文章",怎样安装啥的直接都跳过,下面直接进入测试阶段,测试环境:虚拟机 复制代码代码如下: [root@localhost ~]# ...

  7. mysql 命令行 h_mysql-命令行

    一.导出数据 一条sql 语句,相对于一段复杂的代码,方便程度和执行效率要快的多. 1 mysql连接+将查询结果输出到文件.在命令行中执行(windows的cmd命令行,mac的终端) mysql ...

  8. MySQL查询增强--多子句查询

    – 增强group by 的使用 – (1) 显示每种岗位的雇员总数.平均工资. – (2) 显示雇员总数,以及获得补助的雇员数. – 思路: 获得补助的雇员数 就是 comm 列为非null, 就是 ...

  9. mysql xtrabackup_编写脚本令Xtrabackup对MySQL数据进行备份的教程

    Xtrabackup备份恢复原理备份innodb表时,xtrabackup若干个线程拷贝独立表空间的.ibd文件,并不停监视此过程中redo log的变化,添加到自己的事务日志文件(xtrabacku ...

最新文章

  1. luogu P3410 拍照(最大权闭合图转最小割)
  2. Python的time库的一些简单函数以及用法
  3. 创业-程序员独自5大思维障碍
  4. 技术解读丨分布式缓存数据库Redis大KEY问题定位及优化建议
  5. MapReduce高级编程
  6. 比亚迪:华为的手机,我们造的
  7. 加密货币究竟是不是泡沫?
  8. 微信AI开放接口介绍
  9. java中web错误返回码,Java-Web3j Transfer.sendFunds()返回错误“天然气...
  10. KVM虚拟化技术介绍以及相关操作
  11. 微信公众号图片上传和预览功能前端实现
  12. signature=cc8d613f503e9b933c233da06afc0fc6,襄阳市公安局交通警察支队违法车辆信息公告20210118...
  13. rpm -ivh *rpm 是什么意思
  14. 怎么用计算机弹春天在哪里,春天在哪里
  15. 2021年第四季度全球消费者信心总体持平,印度仍为全球最高,中国大幅增长,日本仍远低于全球平均水平 | 美通社头条...
  16. 小技巧之统计代码行数
  17. iOS滚动的导航条(仿网易新闻)
  18. C语言学习笔记第十天
  19. L2+ 概念要火!英伟达和英特尔都释放了什么信号?| CES 2019 ...
  20. 数字孪生技术助力高炉数字化建设的可行性

热门文章

  1. 大厂,君子好逑?大厂面试题你能过吗
  2. Java新职篇:什么是键入程序
  3. java中int和Integer对比的一些坑
  4. Pointer 指针
  5. WindowsServer2003中Vmware虚拟机与物理机配置FTP文件共享
  6. iOS 5与iOS 6的 low-memory 处理
  7. GDataDate 的本地时间转换
  8. 从“五种权力论”说新人入职要点
  9. SQL to ElasticSearch DSL改进
  10. 【Python基础】with语句