一、查询数据库内所有表的基本信息
在Mysql中information_schema.TABLES表存储了数据表的元数据信息,下面对常用的字段进行介绍:
TABLE_SCHEMA 记录数据库名;
TABLE_NAME 记录数据表名;
ENGINE 存储引擎;
TABLE_ROWS 关于表的粗略行估计;
DATA)LENGTH 记录表的大小(单位字节);
INDEX_LENGTH 记录表的索引的大小;
ROW_FORMAT 可以查看数据表是否压缩过;
对应sql语句:
全部属性查询
SELECT * FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = '数据库名';
1.14日下午,我想抓取数据库所有表的建表语句失败
对应版:
SELECT TABLE_CATALOG as '表目录', TABLE_SCHEMA as '数据库名', TABLE_NAME as '表名', TABLE_TYPE as '表类型', ENGINE as '存储引擎', VERSION as '版本', ROW_FORMAT as '表存储格式', TABLE_ROWS as '表现有行数', AVG_ROW_LENGTH as '平均每行长度', MAX_DATA_LENGTH as '最大数据长度', INDEX_LENGTH as '索引大小', DATA_FREE as '碎片大小', auto_increment as '自增', CREATE_TIME as '创建时间', UPDATE_TIME as '更新时间', TABLE_COLLATION as '表字符集', CHECKSUM as '校验和', CREATE_OPTIONS as '创建选项', TABLE_COMMENT as '备注' FROM information_schema.TABLES t WHERE TABLE_SCHEMA = '数据库名';
注:information_schema.TABLES t 或者 information_schema.`TABLES` 这两种写法都可以。
二、查询数据库内所有表的字段(列)信息
Mysql中information_schema.COLUMNS表存储了数据表所有列的信息,下面对常用的字段进行介绍:
TABLE_CATALOG 这一列的值总是DEF;
TABLE_SCHEMA 记录数据库名;
TABLE_NAME 记录表名;
COLUMN_NAME 记录列名;
COLUMN_DEFAULT 记录列默认值;
IS_NULLABLE 是否可以取空;
COLUMN_TYPE 记录列数据类型(详细);
COLUMN_KEY 记录列索引类型;
CHARACTER_MAXIMUM_LENGTH CHAR/VARCHAR 最大长度;
对应SQL语句:
全部属性查询:
SELECT * FROM information_schema.`COLUMNS` c WHERE TABLE_SCHEMA = '数据库名';
对应版:
SELECT TABLE_SCHEMA AS '库名', TABLE_NAME AS '表名', COLUMN_NAME AS '列名', ORDINAL_POSITION AS '列的排列顺序', COLUMN_DEFAULT AS '默认值', IS_NULLABLE AS '是否为空', DATA_TYPE AS '数据类型', CHARACTER_MAXIMUM_LENGTH AS '字符最大长度', NUMERIC_PRECISION AS '数值精度(最大位数)', NUMERIC_SCALE AS '小数精度', COLUMN_TYPE AS 列类型, COLUMN_KEY 'KEY', EXTRA AS '额外说明', COLUMN_COMMENT AS '注释' FROM information_schema.`COLUMNS` WHERE TABLE_SCHEMA = '数据库名' ORDER BY TABLE_NAME, ORDINAL_POSITION;
三、查询数据库内所有表的索引信息
在Mysql中information_schema.STATISTICS表存储了数据表所有索引的信息,下面对常用的字段进行介绍:
TABLE_CATALOG 包含索引的表所属的目录的名称。 该值始终为def;
TABLE_SCHEMA 包含索引的表所属的结构(数据库)的名称;
TABLE_NAME 包含索引的表的名称;
NON_UNIQUE 如果索引不能重复,则为0;如果可以,则为1;
INDEX_SCHEMA 索引所属的结构(数据库)的名称;
INDEX_NAME 索引的名称。 如果是主键,则始终为PRIMARY;
SEQ_IN_INDEX 索引中的列序列号,以1开头;
COLUMN_NAME 列名称;
COLLATION 列在索引中排序方式:A(升序),D(降序),NULL(未排序);
CARDINALITY 估计索引中唯一值的数量,该值不一定精确;
SUB_PART 索引前缀。 如果列仅被部分索引,则索引字符的数量,如果整列被索引,则为NULL;
PACKED 指示密钥的打包方式。 如果不是,则为NULL;
NULLABLE 如果列可能包含NULL值,则包含YES,否则包含’’;
INDEX_TYPE 索引类型(BTREE,FULLTEXT,HASH,RTREE);
COMMENT 有关未在其自己的列中描述的索引的信息,例如在禁用索引时禁用;
INDEX_COMMENT 索引注释;
对应SQL语句:
全部属性查询:
SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE table_schema = '数据库名'
对应:
SELECT TABLE_CATALOG as '目录', TABLE_SCHEMA as '库名', TABLE_NAME as '表名', NON_UNIQUE as '是否重复', INDEX_NAME as '索引名', SEQ_IN_INDEX as '索引的列号', COLUMN_NAME as '列名', collation as '列排序方式', cardinality as '索引唯一值数量', SUB_PART as '索引前缀', NULLABLE as '列包含空', INDEX_TYPE as '索引类型', COMMENT as '描述', INDEX_COMMENT as '注释' FROM information_schema.STATISTICS s WHERE TABLE_SCHEMA = 'mysql'
四、查询库名得建立的所有视图信息
在Mysql中information_schema.STATISTICS表存储了数据表所有索引的信息,下面对常用的字段进行介绍:
TABLE_SCHEMA 视图所属的SCHEMA(数据库)的名称
TABLE_NAME 表名称
VIEW_DEFINITION 视图定义语句
DEFINER 创建触发器的用户的帐户
IS_UPDATABLE MYSQL在CREATE VIEW时设置一个标志,称为视图可更新性标志。
CHECK_OPTION CHECK_OPTION属性的值。该值是NONE,CASCADE或LOCAL之一
SECURITY_TYPE 视图SQL SECURITY特性。该值是DEFINER或INVOKER之一
COLLATION_CONNECTION 排序规则
CHARACTER_SET_CLIENT 编码格式
对应SQL语句:
全部属性查询:
SELECT * from information_schema.VIEWS where TABLE_SCHEMA = '数据库名';
查询所有视图创建语句:
SELECT CONCAT('view ',TABLE_SCHEMA,'.', TABLE_NAME,' as ',VIEW_DEFINITION,';') FROM information_schema.views where TABLE_SCHEMA = '数据库名' ;
中文对应版:
SELECT TABLE_SCHEMA as '库名', TABLE_NAME as '表名', VIEW_DEFINITION as '视图定义语句', DEFINER as '创建触发器的用户的帐户', IS_UPDATABLE as '可更新标志', CHECK_OPTION as '设置视图约束', SECURITY_TYPE as '安全类型', COLLATION_CONNECTION as '排序规则', CHARACTER_SET_CLIENT as '编码格式' from information_schema.VIEWS where TABLE_SCHEMA = '数据库名';
————————————————
版权声明:本文为CSDN博主「黑烟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43912785/article/details/113320068