• 详解MySQL information_schema数据库常用的表信息以及各表对应的字段信息;以及如何登录mysql和创建视图


    我们在安装或使用mysql数据库时,mysql会默认给我们创建information_schema数据库。实际上,information_schema只是视图,存储的是元数据,而不是基本表,因此,你将无法看到与之相关的任何文件。

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

    登录mysql

    mysql -u root -p
    Enter password: ******
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 9
    Server version: 5.7.19-log MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    查询information_schema信息

    我们切换到information_schema数据库后,可以通过show tables指令查询information_schema数据库

    
    -- 切换到information_schema数据库
    mysql> use information_schema
    Database changed
    
    -- 展示information_schema数据库中数据表
    mysql> show tables;
    +---------------------------------------+
    | Tables_in_information_schema          |
    +---------------------------------------+
    | CHARACTER_SETS                        |
    | COLUMNS                               |
    | TABLES                                |
    | TABLESPACES                           |
      ......                                
      ......                               
    | INNODB_SYS_TABLESTATS                 |
    | INNODB_SYS_TABLESTATS                 |
    +---------------------------------------+
    
    -- 查询information_schema中一共有61张表
    mysql> SELECT count(1) TABLES FROM information_schema.TABLES WHERE table_schema = 'information_schema' ;
    +--------+
    | TABLES |
    +--------+
    |     61 |
    +--------+
    1 row in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    information_schema数据库存在61张表,但我们常用的也就是以下十几张表

    information_schema常用数据表

    TABLES

    查询tables

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

    查询test库下的数据表信息

    mysql> SELECT * FROM information_schema.tables WHERE TABLE_SCHEMA = 'test'ORDER BY TABLE_NAME;
    +---------------+--------------+------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------------+
    | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | ENGINE | VERSION | ROW_FORMAT | TABLE_ROWS | AVG_ROW_LENGTH | DATA_LENGTH | MAX_DATA_LENGTH | INDEX_LENGTH | DATA_FREE | AUTO_INCREMENT | CREATE_TIME         | UPDATE_TIME | CHECK_TIME | TABLE_COLLATION | CHECKSUM | CREATE_OPTIONS | TABLE_COMMENT |
    +---------------+--------------+------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------------+
    | def           | test         | class      | BASE TABLE | InnoDB |      10 | Dynamic    |          2 |           8192 |       16384 |               0 |            0 |         0 |              3 | 2022-06-21 17:31:00 | NULL        | NULL       | utf8_general_ci |     NULL |                |               |
    | def           | test         | students   | BASE TABLE | InnoDB |      10 | Dynamic    |          2 |           8192 |       16384 |               0 |        16384 |         0 |              3 | 2022-06-21 17:31:00 | NULL        | NULL       | utf8_general_ci |     NULL |                |               |
    +---------------+--------------+------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------------+
    2 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    tables中字段解释

    字段含义
    Table_catalog数据表登记目录
    Table_schema数据表所属的数据库名
    Table_name表名称
    Table_type表类型[system view
    Engine使用的数据库引擎[MyISAM
    Version版本,默认值10
    Row_format行格式[Compact
    Table_rows表里所存多少行数据
    Avg_row_length平均行长度
    Data_length数据长度
    Max_data_length最大数据长度
    Index_length索引长度
    Data_free空间碎片
    Auto_increment做自增主键的自动增量当前值
    Create_time表的创建时间
    Update_time表的更新时间
    Check_time表的检查时间
    Table_collation表的字符校验编码集
    Checksum校验和
    Create_options创建选项
    Table_comment表的注释、备注

    SCHEMATA

    查询schema

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

    
    mysql> SELECT * FROM SCHEMATA;
    +--------------+--------------------+----------------------------+------------------------+----------+
    | CATALOG_NAME | SCHEMA_NAME        | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH |
    +--------------+--------------------+----------------------------+------------------------+----------+
    | def          | information_schema | utf8                       | utf8_general_ci        | NULL     |
    | def          | antd-access        | utf8                       | utf8_general_ci        | NULL     |
    | def          | mysql              | utf8                       | utf8_general_ci        | NULL     |
    | def          | performance_schema | utf8                       | utf8_general_ci        | NULL     |
    | def          | sakila             | utf8                       | utf8_general_ci        | NULL     |
    | def          | sys                | utf8                       | utf8_general_ci        | NULL     |
    | def          | test               | utf8                       | utf8_general_ci        | NULL     |
    | def          | world              | utf8                       | utf8_general_ci        | NULL     |
    +--------------+--------------------+----------------------------+------------------------+----------+
    8 rows in set (0.00 sec)
    
    -- 查询多少个数据库
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | antd-access        |
    | mysql              |
    | performance_schema |
    | sakila             |
    | sys                |
    | test               |
    | world              |
    +--------------------+
    8 rows in set (0.00 sec)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    schema字段解释

    字段含义
    schema_name数据库名称
    default_character_set_name数据库编码
    default_collation_name数据库排序规则

    COLUMNS

    查询COLUMNS

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

    比如查询students表中的字段信息

    mysql> select *  from  information_schema.COLUMNS where table_name = 'students';
    +---------------+--------------+------------+-------------+------------------+----------------+-------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+-----------------+------------------+------------+----------------+---------------------------------+----------------+-----------------------+
    | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | ORDINAL_POSITION | COLUMN_DEFAULT | IS_NULLABLE | DATA_TYPE | CHARACTER_MAXIMUM_LENGTH | CHARACTER_OCTET_LENGTH | NUMERIC_PRECISION | NUMERIC_SCALE | DATETIME_PRECISION | CHARACTER_SET_NAME | COLLATION_NAME  | COLUMN_TYPE      | COLUMN_KEY | EXTRA          | PRIVILEGES                      | COLUMN_COMMENT | GENERATION_EXPRESSION |
    +---------------+--------------+------------+-------------+------------------+----------------+-------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+-----------------+------------------+------------+----------------+---------------------------------+----------------+-----------------------+
    | def           | test         | students   | id          |                1 | NULL           | NO          | int       |                     NULL |                   NULL |                10 |             0 |               NULL | NULL               | NULL            | int(10) unsigned | PRI        | auto_increment | select,insert,update,references |                |                       |
    | def           | test         | students   | name        |                2 | NULL           | YES         | varchar   |                      255 |                    765 |              NULL |          NULL |               NULL | utf8               | utf8_general_ci | varchar(255)     |            |                | select,insert,update,references |                |                       |
    | def           | test         | students   | classId     |                3 | NULL           | YES         | int       |                     NULL |                   NULL |                10 |             0 |               NULL | NULL               | NULL            | int(11)          | MUL        |                | select,insert,update,references |                |                       |
    | def           | test         | students   | no          |                4 | NULL           | YES         | varchar   |                       50 |                    150 |              NULL |          NULL |               NULL | utf8               | utf8_general_ci | varchar(50)      |            |                | select,insert,update,references |                |                       |
    +---------------+--------------+------------+-------------+------------------+----------------+-------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+-----------------+------------------+------------+----------------+---------------------------------+----------------+-----------------------+
    4 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    COLUMNS字段解释

    列名数据类型描述
    TABLE_CATALOGnvarchar(128)表限定符。
    TABLE_SCHEMAnvarchar(128)表所有者。
    TABLE_NAMEnvarchar(128)表名。
    COLUMN_NAMEnvarchar(128)列名。
    ORDINAL_POSITIONsmallint列标识号。
    COLUMN_DEFAULTnvarchar(4000)列的默认值。
    IS_NULLABLEvarchar(3)列的为空性。如果列允许 NULL,那么该列返回 YES。否则,返回 NO。
    DATA_TYPEnvarchar(128)系统提供的数据类型。
    CHARACTER_MAXIMUM_LENGTHsmallint以字符为单位的最大长度,适于二进制数据、字符数据,或者文本和图像数据。否则,返回 NULL。有关更多信息,请参见数据类型。
    CHARACTER_OCTET_LENGTHsmallint以字节为单位的最大长度,适于二进制数据、字符数据,或者文本和图像数据。否则,返回 NULL。
    NUMERIC_PRECISIONtinyint近似数字数据、精确数字数据、整型数据或货币数据的精度。否则,返回 NULL。
    NUMERIC_PRECISION_RADIXsmallint近似数字数据、精确数字数据、整型数据或货币数据的精度基数。否则,返回 NULL。
    NUMERIC_SCALEtinyint近似数字数据、精确数字数据、整数数据或货币数据的小数位数。否则,返回 NULL。
    DATETIME_PRECISIONsmallintdatetime 及 SQL-92 interval 数据类型的子类型代码。对于其它数据类型,返回 NULL。
    CHARACTER_SET_CATALOGvarchar(6)如果列是字符数据或 text 数据类型,那么返回 master,指明字符集所在的数据库。否则,返回 NULL。
    CHARACTER_SET_SCHEMAvarchar(3)如果列是字符数据或 text 数据类型,那么返回 DBO,指明字符集的所有者名称。否则,返回 NULL。
    CHARACTER_SET_NAMEnvarchar(128)如果该列是字符数据或 text 数据类型,那么为字符集返回唯一的名称。否则,返回 NULL。
    COLLATION_CATALOGvarchar(6)如果列是字符数据或 text 数据类型,那么返回 master,指明在其中定义排序次序的数据库。否则此列为 NULL。
    COLLATION_SCHEMAvarchar(3)返回 DBO,为字符数据或 text 数据类型指明排序次序的所有者。否则,返回 NULL。
    COLLATION_NAMEnvarchar(128)如果列是字符数据或 text 数据类型,那么为排序次序返回唯一的名称。否则,返回 NULL。
    DOMAIN_CATALOGnvarchar(128)如果列是一种用户定义数据类型,那么该列是某个数据库名称,在该数据库名中创建了这种用户定义数据类型。否则,返回 NULL。
    DOMAIN_SCHEMAnvarchar(128)如果列是一种用户定义数据类型,那么该列是这种用户定义数据类型的创建者。否则,返回 NULL。
    DOMAIN_NAMEnvarchar(128)如果列是一种用户定义数据类型,那么该列是这种用户定义数据类型的名称。否则,返回 NULL。

    KEY_COLUMN_USAGE

    查询KEY_COLUMN_USAGE

    描述了具有约束的键列。

    比如查询student表中约束关系。

    mysql> SELECT * from information_schema.key_column_usage where table_name = 'students' ;
    +--------------------+-------------------+-----------------+---------------+--------------+------------+-------------+------------------+-------------------------------+-------------------------+-----------------------+------------------------+
    | CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | ORDINAL_POSITION | POSITION_IN_UNIQUE_CONSTRAINT | REFERENCED_TABLE_SCHEMA | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME |
    +--------------------+-------------------+-----------------+---------------+--------------+------------+-------------+------------------+-------------------------------+-------------------------+-----------------------+------------------------+
    | def                | test              | PRIMARY         | def           | test         | students   | id          |                1 |                          NULL | NULL                    | NULL                  | NULL                   |
    | def                | test              | fk_classId      | def           | test         | students   | classId     |                1 |                             1 | test                    | class                 | id                     |
    +--------------------+-------------------+-----------------+---------------+--------------+------------+-------------+------------------+-------------------------------+-------------------------+-----------------------+------------------------+
    2 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    KEY_COLUMN_USAGE字段解释

    字段含义
    CONSTRAINT_CATALOG约束所属的目录名称,该值始终为def
    CONSTRAINT_SCHEMA约束所属的数据库名称
    CONSTRAINT_NAME约束的名字
    TABLE_CATALOG约束所在表所属的目录名称,该值始终为def
    TABLE_SCHEMA约束所在表的数据库名称
    TABLE_NAME约束所在的表的名称
    COLUMN_NAME拥有约束的列的名称,如果是外键约束,名称是该外键列,不是所引用的列
    ORDINAL_POSITION约束中列的位置,不是列在表中的位置,从1开始标记
    POSITION_IN_UNIQUE_CONSTRAINT如果是唯一或者主键约束,值为NULL,如果是外键约束,该值为被引用表的列的位置
    REFERENCED_TABLE_SCHEMA被引用的表的数据库名称
    REFERENCED_TABLE_NAME被引用的表的名称
    REFERENCED_COLUMN_NAME被引用的列的名称

    CHARACTER_SETS

    查询CHARACTER_SETS

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

     select * from information_schema.CHARACTER_SETS ;
    +--------------------+----------------------+---------------------------------+--------+
    | CHARACTER_SET_NAME | DEFAULT_COLLATE_NAME | DESCRIPTION                     | MAXLEN |
    +--------------------+----------------------+---------------------------------+--------+
    | big5               | big5_chinese_ci      | Big5 Traditional Chinese        |      2 |
    | dec8               | dec8_swedish_ci      | DEC West European               |      1 |
    | cp850              | cp850_general_ci     | DOS West European               |      1 |
    | hp8                | hp8_english_ci       | HP West European                |      1 |
    ......     
    ......         
    | eucjpms            | eucjpms_japanese_ci  | UJIS for Windows Japanese       |      3 |
    | gb18030            | gb18030_chinese_ci   | China National Standard GB18030 |      4 |
    +--------------------+----------------------+---------------------------------+--------+
    41 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    CHARACTER_SETS字段解释

    字段含义
    character_set_name字符集名
    default_collate_name默认排序规则
    description描述信息
    maxlen单个字符最大占用字节数

    STATISTICS

    查询STATISTICS

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

    比如,查询students标的索引信息

    mysql> SELECT * from information_schema.statistics where table_name = 'students' ;
    +---------------+--------------+------------+------------+--------------+------------+--------------+-------------+-----------+-------------+----------+--------+----------+------------+---------+---------------+
    | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | NON_UNIQUE | INDEX_SCHEMA | INDEX_NAME | SEQ_IN_INDEX | COLUMN_NAME | COLLATION | CARDINALITY | SUB_PART | PACKED | NULLABLE | INDEX_TYPE | COMMENT | INDEX_COMMENT |
    +---------------+--------------+------------+------------+--------------+------------+--------------+-------------+-----------+-------------+----------+--------+----------+------------+---------+---------------+
    | def           | test         | students   |          0 | test         | PRIMARY    |            1 | id          | A         |           2 |     NULL | NULL   |          | BTREE      |         |               |
    | def           | test         | students   |          1 | test         | fk_classId |            1 | classId     | A         |           1 |     NULL | NULL   | YES      | BTREE      |         |               |
    +---------------+--------------+------------+------------+--------------+------------+--------------+-------------+-----------+-------------+----------+--------+----------+------------+---------+---------------+
    2 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    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索引注释

    USER_PRIVILEGES

    查询USER_PRIVILEGES

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

    mysql> select * from information_schema.USER_PRIVILEGES ;
    +-----------------------------+---------------+-------------------------+--------------+
    | GRANTEE                     | TABLE_CATALOG | PRIVILEGE_TYPE          | IS_GRANTABLE |
    +-----------------------------+---------------+-------------------------+--------------+
    | 'root'@'localhost'          | def           | SELECT                  | YES          |
    | 'root'@'localhost'          | def           | INSERT                  | YES          |
    | 'root'@'localhost'          | def           | UPDATE                  | YES          |
    ......
    ......
    | 'mysql.session'@'localhost' | def           | SUPER                   | NO           |
    | 'mysql.sys'@'localhost'     | def           | USAGE                   | NO           |
    +-----------------------------+---------------+-------------------------+--------------+
    30 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    USER_PRIVILEGES 字段解释

    字段含义
    GRANTEE权限描述
    TABLE_CATALOGdef
    PRIVILEGE_TYPE权限类型
    IS_GRANTABLE是否授权

    SCHEMA_PRIVILEGES

    查询SCHEMA_PRIVILEGES

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

    mysql> select * from information_schema.SCHEMA_PRIVILEGES;
    +-----------------------------+---------------+--------------------+----------------+--------------+
    | GRANTEE                     | TABLE_CATALOG | TABLE_SCHEMA       | PRIVILEGE_TYPE | IS_GRANTABLE |
    +-----------------------------+---------------+--------------------+----------------+--------------+
    | 'mysql.sys'@'localhost'     | def           | sys                | TRIGGER        | NO           |
    | 'mysql.session'@'localhost' | def           | performance_schema | SELECT         | NO           |
    +-----------------------------+---------------+--------------------+----------------+--------------+
    2 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    SCHEMA_PRIVILEGES字段解释

    字段类型NULL含义
    GRANTEEvarchar(81)NO权限描述
    TABLE_CATALOGvarchar(4096)NOdef
    TABLE_SCHEMAvarchar(128)NO数据库名
    TABLE_NAMEvarchar(64)NO表名
    PRIVILEGE_TYPEvarchar(64)NO权限类型
    IS_GRANTABLEvarchar(3)NO是否授权

    TABLE_PRIVILEGES

    查询TABLE_PRIVILEGES

    这是表权限表,给出了关于表权限的信息。该信息源自mysql.tables_priv授权表。是非标准表。

    mysql> select * from information_schema.TABLE_PRIVILEGES;
    +-----------------------------+---------------+--------------+------------+----------------+--------------+
    | GRANTEE                     | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | PRIVILEGE_TYPE | IS_GRANTABLE |
    +-----------------------------+---------------+--------------+------------+----------------+--------------+
    | 'mysql.session'@'localhost' | def           | mysql        | user       | SELECT         | NO           |
    | 'mysql.sys'@'localhost'     | def           | sys          | sys_config | SELECT         | NO           |
    +-----------------------------+---------------+--------------+------------+----------------+--------------+
    2 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    TABLE_PRIVILEGES字段解释

    字段含义
    字段名称描述
    GRANTEE权限描述
    TABLE_CATALOGdef
    TABLE_SCHEMA数据库名
    TABLE_NAME表名
    PRIVILEGE_TYPE权限类型
    IS_GRANTABLE是否授权

    COLUMN_PRIVILEGES

    查询COLUMN_PRIVILEGES

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

     mysql> select * from COLUMN_PRIVILEGES;
    +----------+---------------+--------------+------------+-------------+----------------+--------------+
    | GRANTEE  | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | PRIVILEGE_TYPE | IS_GRANTABLE |
    +----------+---------------+--------------+------------+-------------+----------------+--------------+
    | 'xx'@'%' | def          | sbtest      | sbtest1    | id          | SELECT        | NO          |
    | 'xx'@'%' | def          | sbtest      | sbtest1    | id          | INSERT        | NO          |
    | 'xx'@'%' | def          | sbtest      | sbtest1    | id          | UPDATE        | NO          |
    +----------+---------------+--------------+------------+-------------+----------------+--------------+
    3 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    COLUMN_PRIVILEGES字段解释

    字段含义
    GRANTEEPRIVILEGE_TYPE 列值的权限对应的授予者(账户名)
    TABLE_SCHEMAPRIVILEGE_TYPE 列值的权限关联的表对应的库名
    TABLE_NAMEPRIVILEGE_TYPE 列值的权限关联的表名
    COLUMN_NAMEPRIVILEGE_TYPE 列值的权限关联的字段名
    PRIVILEGE_TYPE具体的列权限名称,注意:该字段值只显示一个权限名称,即,如果一个字段拥有多个可授予的列权限值,则在该表中会记录多行记录,每行PRIVILEGE_TYPE列值仅对应一个权限名称
    IS_GRANTABLE如果GRANTEE列值表示的授予者还同时拥有grant option权限,则该列值为YES,否则为NO

    COLLATIONS

    查询COLLATIONS

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

    mysql> select * from information_schema.COLLATIONS;
    +--------------------------+--------------------+-----+------------+-------------+---------+
    | COLLATION_NAME           | CHARACTER_SET_NAME | ID  | IS_DEFAULT | IS_COMPILED | SORTLEN |
    +--------------------------+--------------------+-----+------------+-------------+---------+
    | big5_chinese_ci          | big5               |   1 | Yes        | Yes         |       1 |
    | big5_bin                 | big5               |  84 |            | Yes         |       1 |
    | dec8_swedish_ci          | dec8               |   3 | Yes        | Yes         |       1 |
    ......
    ......
    | gb18030_bin              | gb18030            | 249 |            | Yes         |       1 |
    | gb18030_unicode_520_ci   | gb18030            | 250 |            | Yes         |       8 |
    +--------------------------+--------------------+-----+------------+-------------+---------+
    222 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    COLLATIONS字段解释

    字段含义
    COLLATION_NAME比对方法名称
    CHARACTER_SET_NAME和collation关联的字符集名称
    IDcollation的ID
    IS_DEFAULTcollation是否是对应字符集的默认比对方法
    IS_COMPILED字符集是否被编译到服务器中
    SORTLEN排序字符集需要用到的内存大小

    COLLATION_CHARACTER_SET_APPLICABILITY

    查询COLLATION_CHARACTER_SET_APPLICABILITY

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

    mysql> select * from information_schema. COLLATION_CHARACTER_SET_APPLICABILITY;
    +--------------------------+--------------------+
    | COLLATION_NAME           | CHARACTER_SET_NAME |
    +--------------------------+--------------------+
    | big5_chinese_ci          | big5               |
    | big5_bin                 | big5               |
    | dec8_swedish_ci          | dec8               |
    | dec8_bin                 | dec8               |
    ......
    ......
    | gb18030_bin              | gb18030            |
    | gb18030_unicode_520_ci   | gb18030            |
    +--------------------------+--------------------+
    222 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    COLLATION_CHARACTER_SET_APPLICABILITY字段解释

    字段含义
    COLLATION_NAME比对方法名称
    CHARACTER_SET_NAME字符集名称

    TABLE_CONSTRAINTS

    查询 TABLE_CONSTRAINTS

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

    比如查询students表存在的约束表。

    mysql> select * from information_schema. TABLE_CONSTRAINTS where table_schema = 'test' and table_name = 'students';
    +--------------------+-------------------+-----------------+--------------+------------+-----------------+
    | CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | TABLE_SCHEMA | TABLE_NAME | CONSTRAINT_TYPE |
    +--------------------+-------------------+-----------------+--------------+------------+-----------------+
    | def                | test              | PRIMARY         | test         | students   | PRIMARY KEY     |
    | def                | test              | fk_classId      | test         | students   | FOREIGN KEY     |
    +--------------------+-------------------+-----------------+--------------+------------+-----------------+
    2 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    TABLE_CONSTRAINTS字段含义

    字段含义
    CONSTRAINT_CATALOGdef
    CONSTRAINT_SCHEMA数据库名
    CONSTRAINT_NAME约束名称
    TABLE_SCHEMA数据库名
    TABLE_NAME表名
    CONSTRAINT_TYPE约束类型

    ROUTINES

    查询ROUTINES

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

    mysql>  select * from information_schema.ROUTINES limit 1 \G;
    *************************** 1. row ***************************
               SPECIFIC_NAME: film_in_stock
             ROUTINE_CATALOG: def
              ROUTINE_SCHEMA: sakila
                ROUTINE_NAME: film_in_stock
                ROUTINE_TYPE: PROCEDURE
                   DATA_TYPE:
    CHARACTER_MAXIMUM_LENGTH: NULL
      CHARACTER_OCTET_LENGTH: NULL
           NUMERIC_PRECISION: NULL
               NUMERIC_SCALE: NULL
          DATETIME_PRECISION: NULL
          CHARACTER_SET_NAME: NULL
              COLLATION_NAME: NULL
              DTD_IDENTIFIER: NULL
                ROUTINE_BODY: SQL
          ROUTINE_DEFINITION: BEGIN
         SELECT inventory_id
         FROM inventory
         WHERE film_id = p_film_id
         AND store_id = p_store_id
         AND inventory_in_stock(inventory_id);
    
         SELECT FOUND_ROWS() INTO p_film_count;
    END
               EXTERNAL_NAME: NULL
           EXTERNAL_LANGUAGE: NULL
             PARAMETER_STYLE: SQL
            IS_DETERMINISTIC: NO
             SQL_DATA_ACCESS: READS SQL DATA
                    SQL_PATH: NULL
               SECURITY_TYPE: DEFINER
                     CREATED: 2021-11-26 16:29:50
                LAST_ALTERED: 2021-11-26 16:29:50
                    SQL_MODE: STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
             ROUTINE_COMMENT:
                     DEFINER: root@localhost
        CHARACTER_SET_CLIENT: utf8
        COLLATION_CONNECTION: utf8_general_ci
          DATABASE_COLLATION: utf8_general_ci
    1 row in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    ROUTINES字段解释

    字段含义
    SPECIFIC_NAME例程的名称。
    ROUTINE_CATALOG例程所属的目录的名称。此值始终为def。
    ROUTINE_SCHEMA例程所属的模式(数据库)的名称。
    ROUTINE_NAME例程的名称。
    ROUTINE_TYPEPROCEDURE用于存储过程, FUNCTION用于存储函数。
    DATA_TYPE如果例程是存储的函数,则返回值数据类型。如果例程是存储过程,则此值为空。
    DATA_TYPE值仅是类型名称,没有其他信息。
    DTD_IDENTIFIER值包含类型名称以及可能的其他信息,例如精度或长度。
    CHARACTER_MAXIMUM_LENGTH对于存储的函数字符串返回值,以字符为单位的最大长度。如果例程是存储过程,则此值为NULL。
    CHARACTER_OCTET_LENGTH对于存储的函数字符串返回值,最大长度(以字节为单位)。如果例程是存储过程,则此值为 NULL。
    NUMERIC_PRECISION对于存储的函数数字返回值,数字精度。如果例程是存储过程,则此值为 NULL。
    NUMERIC_SCALE对于存储的函数数字返回值,数字刻度。如果例程是存储过程,则此值为 NULL。
    DATETIME_PRECISION对于存储的函数的时间返回值,分数秒精度。如果例程是存储过程,则此值为NULL。
    CHARACTER_SET_NAME对于存储的函数字符串返回值,字符集名称。如果例程是存储过程,则此值为NULL。
    COLLATION_NAME对于存储的函数字符串返回值,归类名称。如果例程是存储过程,则此值为NULL。
    DTD_IDENTIFIER如果例程是存储的函数,则返回值数据类型。如果例程是存储过程,则此值为空。
    ROUTINE_BODY例程定义所使用的语言。此值始终为SQL。
    ROUTINE_DEFINITION例程执行的SQL语句的文本。
    EXTERNAL_NAME此值始终为NULL。
    EXTERNAL_LANGUAGE存储例程的语言。该值是从数据字典表的external_language列中 读取的 mysql.routines。
    PARAMETER_STYLE此值始终为SQL。
    IS_DETERMINISTICYES或NO,取决于例程是否使用DETERMINISTIC特性定义 。
    SQL_DATA_ACCESS例程的数据访问特征。值中的一个CONTAINS SQL,NO SQL,READS SQL DATA,或 MODIFIES SQL DATA。
    SQL_PATH此值始终为NULL。
    SECURITY_TYPE常规SQL SECURITY特征。值为DEFINER或之一 INVOKER。
    CREATED创建例程的日期和时间。这是一个 TIMESTAMP值。
    LAST_ALTERED例程的最后修改日期和时间。这是一个TIMESTAMP值。如果例程自创建以来尚未修改,则该值与该CREATED值相同。
    SQL_MODE创建或更改例程时有效的SQL模式,在该模式下执行例程。
    ROUTINE_COMMENT注释文本(如果例程包含一个)。如果不是,则此值为空。
    DEFINER在DEFINER子句中命名的帐户(通常是创建例程的用户), 格式。 ‘user_name’@‘host_name’
    CHARACTER_SET_CLIENTcharacter_set_client创建例程时系统变量 的会话值 。
    COLLATION_CONNECTIONcollation_connection创建例程时系统变量 的会话值 。
    DATABASE_COLLATION与例程相关联的数据库的整理。

    VIEWS

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

    切换数据库

    数据库切换到test下,并创建名为test_view视图

    -- 切换数据库到test
    mysql> use test
    Database changed
    
    -- 创建test-view视图
    mysql> CREATE VIEW test_view AS SELECT`students`.`name` AS `姓名`,`students`.`no` AS `学号`,`class`.`name` AS `班名` FROM`students`LEFT JOIN `class` ON `class`.`id` = `students`.`classId`;
    Query OK, 0 rows affected (0.01 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    查询VIEWS

    mysql>  select * from information_schema.VIEWS where table_name = 'test_view';
    +---------------+--------------+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------+--------------+----------------+---------------+----------------------+----------------------+
    | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | VIEW_DEFINITION                                                                                                                                                                                                      | CHECK_OPTION | IS_UPDATABLE | DEFINER        | SECURITY_TYPE | CHARACTER_SET_CLIENT | COLLATION_CONNECTION |
    +---------------+--------------+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------+--------------+----------------+---------------+----------------------+----------------------+
    | def           | test         | test_view  | select `test`.`students`.`name` AS `姓名`,`test`.`students`.`no` AS `学号`,`test`.`class`.`name` AS `班名` from (`test`.`students` left join `test`.`class` on((`test`.`class`.`id` = `test`.`students`.`classId`))) | NONE         | YES          | root@localhost | DEFINER       | gbk                  | gbk_chinese_ci       |
    +---------------+--------------+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------+--------------+----------------+---------------+----------------------+----------------------+
    1 row in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    VIEWS字段解释

    字段含义
    TABLE_CATALOGdef
    TABLE_SCHEMA数据库名称
    TABLE_NAME表名称
    VIEW_DEFINITION视图定义
    CHECK_OPTION检查选项
    IS_UPDATABLE是否可更新
    DEFINER创建视图的用户名
    SECURITY_TYPE安全类型
    CHARACTER_SET_CLIENT视图创建时对应的seesion变量character_set_client的值
    COLLATION_CONNECTION视图创建时对应的seesion变量collation_connection的值

    TRIGGERS

    SQL触发器是存储在数据库目录中的一组SQL语句。每当与表相关联的事件发生时,即会执行或触发SQL触发器,例如插入,更新或删除。。必须有super权限才能查看该表。

    查询TRIGGERS

    mysql>  select * from information_schema.TRIGGERS limit 1 \G;
    *************************** 1. row ***************************
               TRIGGER_CATALOG: def
                TRIGGER_SCHEMA: sakila
                  TRIGGER_NAME: customer_create_date
            EVENT_MANIPULATION: INSERT
          EVENT_OBJECT_CATALOG: def
           EVENT_OBJECT_SCHEMA: sakila
            EVENT_OBJECT_TABLE: customer
                  ACTION_ORDER: 1
              ACTION_CONDITION: NULL
              ACTION_STATEMENT: SET NEW.create_date = NOW()
            ACTION_ORIENTATION: ROW
                 ACTION_TIMING: BEFORE
    ACTION_REFERENCE_OLD_TABLE: NULL
    ACTION_REFERENCE_NEW_TABLE: NULL
      ACTION_REFERENCE_OLD_ROW: OLD
      ACTION_REFERENCE_NEW_ROW: NEW
                       CREATED: 2021-11-26 16:29:50.66
                      SQL_MODE: STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
                       DEFINER: root@localhost
          CHARACTER_SET_CLIENT: utf8
          COLLATION_CONNECTION: utf8_general_ci
            DATABASE_COLLATION: utf8_general_ci
    1 row in set (0.01 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    TRIGGERS字段解释

    字段含义
    trigger_schema触发器所属schema(database)的名称
    trigger_name触发器名称
    event_manipulation触发​​事件。这是触发触发器的关联表上的操作类型。值为 ‘INSERT’ (插入行), ‘DELETE’ (删除行)或 ‘UPDATE’ (修改行)
    event_object_catalog如“使用触发器”中所述,每个触发器只与一个表相关联。 该列表示此表所在的目录。
    event_object_schema如“使用触发器”中所述,每个触发器只与一个表相关联。 该列表示此表所在schema(数据库)
    event_object_table如“使用触发器”中所述,每个触发器只与一个表相关联。 该列表示此表所在的表名
    action_statement触发的语句
    action_timing触发​​器时机。值为 ‘BEFORE’ 或 ‘AFTER’
    definer definer创建触发器的用户的帐户, 格式。‘user_name’@‘host_name’

    总结

    我们在开发过程中,可以通过查询information_schema中的数据表【视图】,可以查看我们创建的表信息、字段信息、视图信息等等。

  • 相关阅读:
    信创国产化,高速数据传输系统-UTS
    Linux性能优化实战CPU篇之软中断(三)
    【云计算 | Openstack】KVM虚机通过dhcp自动获取地址
    乘性散斑噪声理论及其仿真实例分析-Matlab源代码
    基于智能合约的银行借贷方案设计与实现
    计算机网络——带你理解走进计算机网络
    Apache Pulsar 社区年度峰会 Pulsar Summit Asia 2022 即将召开
    单层应用升级到多层应用3
    信创操作系统--麒麟Kylin桌面版操作系统博文汇总目录
    mysql主备集群(高可用)
  • 原文地址:https://blog.csdn.net/lvoelife/article/details/125873284