INFORMATION_SCHEMA 用法
- MySQL中有一个名为 INFORMATION_SCHEMA 的数据库,在该库中有一个 TABLES 表,这个表主要字段分别是:
- TABLE_SCHEMA : 数据库名,
- TABLE_NAME:表名,
- ENGINE:所使用的存储引擎, -TABLES_ROWS:记录数,
- DATA_LENGTH:数据大小,
- INDEX_LENGTH:索引大小
查询数据库表基本信息
- 查看数据库的表数量
select table_schema as 数据库名称, count(*) as 表数量 from INFORMATION_SCHEMA.TABLES group by table_schema;
- 查询指定数据库及其表数量
SELECT table_schema as 库名 , count(*) as 表数量 FROM information_schema.TABLES where table_schema = 'ods'
- 查询某个表中有多少字段
SELECT COUNT(*) 字段数量 FROM information_schema. COLUMNS WHERE table_schema = 'ods' AND table_name = 'ods_oms_stock';
- 查询某个数据库中所有表共有多少字段
SELECT COUNT(column_name) as 总字段量 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'ods';
-
统计某数据库中每个表的数据量
SELECT TABLE_NAME as 表名, (DATA_LENGTH/1024/1024) as 数据大小_兆 , (INDEX_LENGTH/1024/1024) as 索引数据大小_兆, ((DATA_LENGTH+INDEX_LENGTH)/1024/1024) as 总数据大小_兆, TABLE_ROWS as 总数据条数 FROM TABLES WHERE TABLE_SCHEMA = 'ods';
- 查询某数据库总数据大小
SELECT (sum(DATA_LENGTH)/1024/1024) as 总数据量_单位M from `TABLES` WHERE TABLE_SCHEMA = 'ods';
- 查询某数据库中每张表数据条数
select table_name as 表名 , table_rows as 数据条数 from tables where TABLE_SCHEMA = 'ods';
- 查询某数据库内所有表总数据条数
SELECT sum(table_rows) as 总数据条数 from tables where TABLE_SCHEMA = 'ods'
查看表字段基本信息
- 查询某个数据库中所有字段
SELECT column_name as 全部字段 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'ods';
-
查询某数据库中所有表、字段、字段类型、注释等信息
SELECT TABLE_NAME 表名, column_name 字段名, DATA_TYPE 数据类型, column_comment 注释 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'ods';
INFORMATION_SCHEMA.COLUMNS 查找指定字段
- 通常情况下,我们可以通过以下命令,查看指定表包含哪些字段信息:
- show columns from 表名;
- describe 表名;
- show create table 表名;
-
但在数仓工作中,经常要查看哪些数据表包含指定字段,由于涉及的表比较多,不可能逐个的去查找表格,需要使用特殊方法
INFORMATION_SCHEMA.COLUMNS
。 - 查看全部的 库名 + 表名 + 字段名
select concat(table_schema,'.',table_name,'.',column_name) from INFORMATION_SCHEMA.COLUMNS;
- 查看【字段名】包含指定字符串:
- 精确查找:
select * from INFORMATION_SCHEMA.COLUMNS where column_name = '尺码';
- 模糊匹配:
select * from INFORMATION_SCHEMA.COLUMNS where column_name rlike '尺';
- 精确查找:
-
查看【注释】包含指定字符串:
select * from INFORMATION_SCHEMA.COLUMNS where column_comment rlike '尺';