DQL 数据查询语言 IS (information_schema)

3.information_schema 统计信息库

1.介绍:

视图

1.安全: 只允许查询,不知道操作的对象是谁。
2.方便: 只需要简单的select语句即可使用。

2.作用:

1.方便我们做数据库资产统计
库/表:
个数
数据量(容量;行数)
每张表的数据字典信息

2.可以获取到server层状态信息
3.获取到InnoDB引擎层的状态信息

3.应用举例:

TABLES :

TABLE_SCHEMA:    表所在的库
TABLE_NAME:        表名
ENGINE     :        表的引擎
TABLE-ROWS:         表的行数
AVG_ROW_LENGTH:        平均行长度(字节)
INDEX_LENGTH:            索引占用长度(字节)
TABLE_COMMENT:            表注释

-- 例子:

-- 1. 简单查询体验TABLES信息
SELECT * FROM TABLES;

-- 2. 所有业务库和表的名字.
SELECT table_schema , table_name
FROM information_schema.tables
WHERE table_schema NOT IN ('sys','information_schema','performance_schema','mysql');
-- 3. 统计每个业务库,表的个数和列表
SELECT table_schema , COUNT(table_name),GROUP_CONCAT(table_name)
FROM information_schema.tables
WHERE table_schema NOT IN ('sys','information_schema','performance_schema','mysql')
GROUP BY table_schema;
-- 4. 统计业务数据库的总数据量
SELECT SUM(table_rows * AVG_ROW_LENGTH+index_length)/1024 AS total_KB
FROM information_schema.tables
WHERE table_schema NOT IN ('sys','information_schema','performance_schema','mysql');
-- 5. 每个业务库分别统计数据量
SELECT table_schema,SUM(table_rows * AVG_ROW_LENGTH+index_length)/1024 AS total_KB
FROM information_schema.tables
WHERE table_schema NOT IN ('sys','information_schema','performance_schema','mysql')
GROUP BY table_schema
ORDER  BY total_KB DESC ;

-- 6. top 3 数据量大的表
SELECT table_schema,table_name,(table_rows * AVG_ROW_LENGTH+index_length)/1024 AS table_kb
FROM information_schema.tables
WHERE table_schema NOT IN ('sys','information_schema','performance_schema','mysql')
ORDER BY  table_kb DESC
LIMIT 3;

-- 7. 查询所有非INNODB的表

SELECT table_schema,table_name ,ENGINE FROM information_schema.tables
WHERE table_schema NOT IN ('sys','information_schema','performance_schema','mysql')
AND ENGINE <> 'innodb';

-- 8. 查询所有非INNODB的表 , 并且提出修改建议
SELECT
table_schema,
table_name ,
ENGINE ,
CONCAT("alter table ",table_schema,".",table_name," engine=innodb;") AS "修改建议"
FROM information_schema.tables
WHERE table_schema NOT IN ('sys','information_schema','performance_schema','mysql')
AND ENGINE <> 'innodb';

-- 9. 所有业务库和表的名字,并且生产备份语句
SELECT
table_schema ,
table_name ,
CONCAT("mysqldump ",table_schema," ",table_name," > /bak/",table_schema,"_",table_name,".sql") AS "备份"
FROM information_schema.tables
WHERE table_schema NOT IN ('sys','information_schema','performance_schema','mysql');

原文地址:https://www.cnblogs.com/yangxiaoni/p/12074615.html

时间: 2024-10-13 22:56:35

DQL 数据查询语言 IS (information_schema)的相关文章

八:SQL之DQL数据查询语言单表操作

前言: DQL数据库查询语言是我们在开发中最常使用的SQL,这一章总结了单表操作部分的常用查询方式 主要操作有:查询所有字段.查询指定字段.查询指定记录.带IN的关键字查询,范围查询,陪查询.查询空值 带AND的多条件查询.带OR的多条件查询,关键字DISTINCT,查询结果排序,分组查询.分页查询等 准备好数据测试表 1 mysql> select * from student; 2 +------+----------+-------+----------+-------------+ 3

数据存储——SQLite数据库存储——SQL语句——DQL数据查询语言

一.where  查询条件 1.操作符 (1)is null/is not null  判断控/非空 (2)like  模糊比较字符串 ①通配符 1)%  任意数量字符 2)_   单个字符 ②用法 1)like  ‘%条件%’ 2)like  ‘%条件’ 3)like  '条件%' 4)like  '_条件_' 5)like  '_条件' 6)like  '条件_' (3)in  判断是否在值得列表内 ①和对单个字段  or  运算等效 ②用法 1)字段名 in (值1,值2,...) 2)字

数据存储——SQLite语句之DQL 数据查询语言

一.select 语句 格式:select   字段内容  from  表名 1.字段列表 1-*全部字段 2-逗号间隔的字段名列表 3-用as(可省略)指定别名 2.DISTINCT去重复数据:DISTINCT  字段列表 二.where  查询条件 1.is null/is not null   判断空/非空 2.like  模糊比较字符串 1-通配符 1>%任意数量字符 2>_单个字符 2-用法 1>like‘%条件’ 2>like‘条件%’ 3>like‘%条件%’

SQL入门-DQL数据查询语言--select

1.help select mysql> help select Name: 'SELECT' Description: Syntax: SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] selec

九:SQL之DQL数据查询语言多表操作

前言: 一:数据准备 员工表emp 和部门表 dept --分别创建部门和员工表,并实现一对多关系 DROP TABLE dept; CREATE TABLE `dept`( `d_id` INT(5) PRIMARY KEY AUTO_INCREMENT COMMENT '这是部门id主键自增长', `d_name` VARCHAR(30) NOT NULL UNIQUE COMMENT '这是部门名称唯一非空' ); CREATE TABLE `emp`( `e_id` INT PRIMAR

MySQL数据库之DQL(数据查询语言)

1.MySQL之DQL查询AS CONCAT LIKE的使用 (1)select 列名1,列名2,...... from 表名 [where 条件] 查询所有字段用*,不带where条件的话,就会把表的所有记录查出来 (2)过滤掉重复的列值 select distinct 列名1 from 表名; (3)连接concat select concat(列名1,列名2) from 表名; select concat_ws('分隔符',列名1,列名2) from 表名; 区别:用concat查询出来的

DQL 数据查询语言

1.select 1.select 单独使用 (1) 查询数据库的参数 查看端口: select @@port; 查看数据路径 select @@datadir; (2)调用内置函数 查看当前库 select database(); CONCAT 将内容拼接 select concat(user,host) from mysql.user; select concat(user,'@',host) from mysql.user; 列转行 select group_concat(xid) fro

DQL数据查询语言——连接查询

--内连接 两种写法 等值连接select r.*,b.bummc from t_hq_ryxx r, t_hq_bm b where r.bumbm = b.bumbm select r.*,b.bummc from t_hq_ryxx r inner join t_hq_bm b on r.bumbm = b.bumbm --不等值连接select r.*,b.bummc from t_hq_ryxx r, t_hq_bm b where r.bumbm > b.bumbm select r

DQL数据查询语言

--查询全表select * from t_hq_ryxx; --查询字段select xingm as 姓名 ,gongz as 工资 from t_hq_ryxx; --链接字段查询select xingm || xingb as 姓名性别 from t_hq_ryxx --去除重复查询select distinct bumbm from t_hq_ryxx; --排序查询 desc 降序 asc升序 select * from t_hq_ryxx order by bumbm desc;