Mysql私有增强性命令小记
从MySQL 5 开始 , 你可以看到多了一个系统数据库 information_schema . information_schema 存贮了其他所有数据库的信息。 information_schema是一个虚拟数据库,并不物理存在。Mysql的INFORMATION_SCHEMA数据库包含了一些表和视图,提供了访问数据库元数据的方式,这台MySQL服务器上,到底有哪些数据库、各个数据库有哪些表,每张表的字段类型是什么,各个数据库要什么权限才能访问,等等信息都保存在information_schema表里面. 让我们来看看几个使用这个数据库的例子http://hudeyong926.iteye.com/blog/859398
查询数据库dj214中表数据超过 1000 行的表
![](http://hudeyong926.iteye.com/images/icon_star.png)
- select concat(table_schema,'.',table_name) as table_name,table_rows
- from information_schema.tables where table_rows > 1000 and table_schema = 'dj214' order by table_rows desc;
查询数据库dj214 中所有没有主键的表
![](http://hudeyong926.iteye.com/images/icon_star.png)
- SELECT CONCAT(t.table_schema,".",t.table_name) as table_name
- FROM information_schema.TABLES t
- LEFT JOIN information_schema.TABLE_CONSTRAINTS tc
- ON t.table_schema = tc.table_schema
- AND t.table_name = tc.table_name
- AND tc.constraint_type = 'PRIMARY KEY'
- WHERE tc.constraint_name IS NULL
- AND t.table_type = 'BASE TABLE' AND t.table_schema = 'dj214' ;
查询所有数据库中10张最大表
![](http://hudeyong926.iteye.com/images/icon_star.png)
- SELECT concat(table_schema,'.',table_name) 表名称,
- concat(round(data_length/(1024*1024),2),'M') 表大小
- FROM information_schema.TABLES
- ORDER BY data_length DESC LIMIT 10;
查看MYSQL数据库下所有的数据库
![](http://hudeyong926.iteye.com/images/icon_star.png)
- SELECT SCHEMA_NAME AS 'database' FROM INFORMATION_SCHEMA.SCHEMATA LIMIT 0 , 30
列出指定数据库中的所有表名称
![](http://hudeyong926.iteye.com/images/icon_star.png)
- SELECT table_name, table_type, engine FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = 'dj214' AND table_type='BASE TABLE'
列出指定数据库下指定表的表结构
![](http://hudeyong926.iteye.com/images/icon_star.png)
- SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
- FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'systemlog' AND table_schema = 'dj214'
一段MYSQL存储过程 [ 删除指定库中所有的空表 ]
![](http://hudeyong926.iteye.com/images/icon_star.png)
- begin
- /*局部变量的定义,默认值为空 */
- declare tmpName varchar(200) default '' ;
- /*定义游标*/
- 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;
- declare CONTINUE HANDLER FOR SQLSTATE '02000' SET tmpname = null;
- OPEN reslutList;/*打开游标*/
- FETCH reslutList into tmpname; -- 取数据
- /* 循环体 */
- WHILE ( tmpname is not null) DO
- set @sql = concat('drop table sz8_news.',tmpname,";");
- PREPARE stmt1 FROM @sql ;
- EXECUTE stmt1 ;
- DEALLOCATE PREPARE stmt1;
- /*游标向下走一步*/
- FETCH reslutList INTO tmpname;
- END WHILE;
- CLOSE reslutList; /*关闭游标*/
- end
一段 MYSQL存储过程 [ 删除指定库下所有表中的空列,即表中的任何一条记录该列都没有值 ]
![](http://hudeyong926.iteye.com/images/icon_star.png)
- BEGIN
- DECLARE done INT DEFAULT 0;
- DECLARE cTbl varchar(64);
- DECLARE cCol varchar(64);
- DECLARE cur1 CURSOR FOR
- select TABLE_NAME,COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS
- where TABLE_SCHEMA='sz8_news' and IS_NULLABLE='YES' order by TABLE_NAME;
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
- set @sqlDrop='';
- OPEN cur1;
- FETCH cur1 INTO cTbl, cCol;/*得到表名及列名*/
- WHILE done = 0 DO
- set @x=0;
- /*主要改进了这里把空值也纳入判断条件中去,即如果字段为null或空*/
- set @sql=concat('select 1 into @x from ',cTbl,' where ',cCol,' is not null and ',cCol,' !="" limit 1');
- PREPARE stmt1 FROM @sql;
- EXECUTE stmt1;
- DEALLOCATE PREPARE stmt1;
- if @x=0 then
- set @sqlDrop=concat('alter table `',cTbl,'` drop COLUMN`',cCol,'`;');
- PREPARE stmt1 FROM @sqlDrop;
- EXECUTE stmt1;
- DEALLOCATE PREPARE stmt1;
- end if ;
- set done = 0;
- FETCH cur1 INTO cTbl, cCol;
- END WHILE;
- CLOSE cur1;
- END
Mysql私有增强性命令小记相关推荐
- mysql 负载 查看_Mysql-命令查询当前正在负载运行的SQL语句
1)我们先通过status命令查看Mysql运行状态,如下: mysql> status; -------------- mysql Ver 14.12 Distrib 5.0.77, for ...
- mysql 切表_mysql--------命令来操作表
常用的通过mysql命令来更改表结构的一些sql语句,包括添加.删除.修改字段.调整字段顺序. 添加字段: alter table `user_movement_log` Add column Gat ...
- mysql从zip包安装小记
@echo off title mysql zip安装 set PATH="%CD%\bin";%PATH% if not exist .\data mkdir data rem ...
- mysql视频教程特密码_分享一个MySQL 密码增强插件
介绍 以前没有太注意MySQL密码安全策略的配置方法,只是人为了将密码设为复杂密码,但是没有找到配置的方法,今天姜承尧的微信公众号正好发布了一篇关于这个的文章,所以在这里也顺便将方法写下来.首先该功能 ...
- mysql端口4050_mysql 安装使用小记
开启 MySQL 的远程登陆帐号有两大步: 1.确定服务器上的防火墙没有阻止 3306 端口. MySQL 默认的端口是 3306 ,需要确定防火墙没有阻止 3306 端口,否则远程是无法通过 330 ...
- mysql udf http,mysql下mysql-udf-http效率测试小记
看到张宴的博客上关于"http/rest客户端的文章",怎样安装啥的直接都跳过,下面直接进入测试阶段,测试环境:虚拟机 复制代码代码如下: [root@localhost ~]# ...
- mysql 命令行 h_mysql-命令行
一.导出数据 一条sql 语句,相对于一段复杂的代码,方便程度和执行效率要快的多. 1 mysql连接+将查询结果输出到文件.在命令行中执行(windows的cmd命令行,mac的终端) mysql ...
- MySQL查询增强--多子句查询
– 增强group by 的使用 – (1) 显示每种岗位的雇员总数.平均工资. – (2) 显示雇员总数,以及获得补助的雇员数. – 思路: 获得补助的雇员数 就是 comm 列为非null, 就是 ...
- mysql xtrabackup_编写脚本令Xtrabackup对MySQL数据进行备份的教程
Xtrabackup备份恢复原理备份innodb表时,xtrabackup若干个线程拷贝独立表空间的.ibd文件,并不停监视此过程中redo log的变化,添加到自己的事务日志文件(xtrabacku ...
最新文章
- luogu P3410 拍照(最大权闭合图转最小割)
- Python的time库的一些简单函数以及用法
- 创业-程序员独自5大思维障碍
- 技术解读丨分布式缓存数据库Redis大KEY问题定位及优化建议
- MapReduce高级编程
- 比亚迪:华为的手机,我们造的
- 加密货币究竟是不是泡沫?
- 微信AI开放接口介绍
- java中web错误返回码,Java-Web3j Transfer.sendFunds()返回错误“天然气...
- KVM虚拟化技术介绍以及相关操作
- 微信公众号图片上传和预览功能前端实现
- signature=cc8d613f503e9b933c233da06afc0fc6,襄阳市公安局交通警察支队违法车辆信息公告20210118...
- rpm -ivh *rpm 是什么意思
- 怎么用计算机弹春天在哪里,春天在哪里
- 2021年第四季度全球消费者信心总体持平,印度仍为全球最高,中国大幅增长,日本仍远低于全球平均水平 | 美通社头条...
- 小技巧之统计代码行数
- iOS滚动的导航条(仿网易新闻)
- C语言学习笔记第十天
- L2+ 概念要火!英伟达和英特尔都释放了什么信号?| CES 2019 ...
- 数字孪生技术助力高炉数字化建设的可行性