mysql 数据库信息探索
(1)查询数据库的表数量
SELECT COUNT(*) TABLES, table_schema
FROM information_schema.TABLES
GROUP BY table_schema;
(2)查询指定数据库(db_one)的表数量
SELECT COUNT(*) TABLES, table_schema
FROM information_schema.TABLES
WHERE table_schema = 'db_one';
(3)查询表结构
a. 使用 DESCRIBE 或者 desc
DESCRIBE a_table_name;
desc a_table_name
example:
mysql> desc tb_class;
+---------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+----------------+
| Id | int(11) | NO | PRI | NULL | auto_increment |
| clsNo | varchar(3) | NO | | NULL | |
| clsName | varchar(20) | NO | | NULL | |
| sp_Id | int(11) | YES | MUL | NULL | |
+---------+-------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)
MySQL Key值(PRI, UNI, MUL)的含义:
PRI主键约束 UNI唯一约束 MUL可以重复
b. 使用 explain
explain a_table_name
(4)查询主键字段名
SELECT column_name
FROM INFORMATION_SCHEMA.`KEY_COLUMN_USAGE`
WHERE table_name='表名' AND constraint_name='PRIMARY'
(5)查看一个表的字段数量
请对比 (2)查询表结构 desc 的结果的行数。
SELECT count(*)
FROM information_schema.`COLUMNS`
WHERE TABLE_SCHEMA = '数据库名' AND TABLE_NAME = '表名'
(6)统计数据表保存的数据量
(可能表信息未更新,导致得到的数据量与直接count的不一样)
use information_schema;
SELECT TABLE_NAME, TABLE_ROWS
FROM TABLES
WHERE TABLE_SCHEMA = '库名' and table_name = '表名'
(7)查看建表信息
show create table 表名;
(8)查看分区信息
show partitions 表名