丫丫小强的个人博客

查询所有表、索引、视图信息的SQL语句-Mysql

一、查询数据库内所有表的基本信息

       在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