• MySQL自带information_schema数据库使用


      MySQL的information_schema数据库是什么,有什么作用?

      大家在安装或使用MYSQL时,会发现除了自己安装的数据库以外,还有一个 information_schema数据库。information_schema数据库是做什么用的呢,使用WordPress博客的朋友可能会想,是不是安装模板添加的数据库呀?看完本片文章后,你就会对information_schema数据库有所了解。

      information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式。什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。

      在 MySQL中,把 information_schema 看作是一个数据库,确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。
    information_schema数据库表说明:

      SCHEMATA表:提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。

      TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是show tables from schemaname的结果取之此表。

      COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之此表。

      STATISTICS表:提供了关于表索引的信息。是show index from schemaname.tablename的结果取之此表。

      USER_PRIVILEGES(用户权限)表:给出了关于全程权限的信息。该信息源自mysql.user授权表。是非标准表。

      SCHEMA_PRIVILEGES(方案权限)表:给出了关于方案(数据库)权限的信息。该信息来自mysql.db授权表。是非标准表。

      TABLE_PRIVILEGES(表权限)表:给出了关于表权限的信息。该信息源自mysql.tables_priv授权表。是非标准表。

      COLUMN_PRIVILEGES(列权限)表:给出了关于列权限的信息。该信息源自mysql.columns_priv授权表。是非标准表。

      CHARACTER_SETS(字符集)表:提供了mysql实例可用字符集的信息。是SHOW CHARACTER SET结果集取之此表。

      COLLATIONS表:提供了关于各字符集的对照信息。

      COLLATION_CHARACTER_SET_APPLICABILITY表:指明了可用于校对的字符集。这些列等效于SHOW COLLATION的前两个显示字段。

      TABLE_CONSTRAINTS表:描述了存在约束的表。以及表的约束类型。

      KEY_COLUMN_USAGE表:描述了具有约束的键列。

      ROUTINES表:提供了关于存储子程序(存储程序和函数)的信息。此时,ROUTINES表不包含自定义函数(UDF)。名为“mysql.proc name”的列指明了对应于INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列。

      VIEWS表:给出了关于数据库中的视图的信息。需要有show views权限,否则无法查看视图信息。

      TRIGGERS表:提供了关于触发程序的信息。必须有super权限才能查看该表

    扩展的应用

    • 查看某个数据库表的记录数。
    select table_schema,table_name,table_rows from tables where TABLE_SCHEMA = '数据库名称' order by table_rows desc;
    • 查看数据库所占空间
    select concat(round(sum(data_length/1024/1024),2),'MB') as data_length_MB,  
     concat(round(sum(index_length/1024/1024),2),'MB') as index_length_MB  
     from information_schema.tables where  
     table_schema='数据库名';
    • 查看某个表所占空间
    select concat(truncate(sum(data_length)/1024/1024,2),'MB') as data_size,
    concat(truncate(sum(max_data_length)/1024/1024,2),'MB') as max_data_size,
    concat(truncate(sum(data_free)/1024/1024,2),'MB') as data_free,
    concat(truncate(sum(index_length)/1024/1024,2),'MB') as index_size
    from information_schema.tables where TABLE_NAME = '表名';
  • 相关阅读:
    BZOJ 1040 (ZJOI 2008) 骑士
    BZOJ 1037 (ZJOI 2008) 生日聚会
    ZJOI 2006 物流运输 bzoj1003
    ZJOI 2006 物流运输 bzoj1003
    NOI2001 炮兵阵地 洛谷2704
    NOI2001 炮兵阵地 洛谷2704
    JLOI 2013 卡牌游戏 bzoj3191
    JLOI 2013 卡牌游戏 bzoj3191
    Noip 2012 day2t1 同余方程
    bzoj 1191 [HNOI2006]超级英雄Hero——二分图匹配
  • 原文地址:https://www.cnblogs.com/rwxwsblog/p/4528533.html
Copyright © 2020-2023  润新知