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权限才能查看该表。


+---------------------------------------+

| Tables_in_information_schema |

+---------------------------------------+

| CHARACTER_SETS |

| COLLATIONS |

| COLLATION_CHARACTER_SET_APPLICABILITY |

| COLUMNS |

| COLUMN_PRIVILEGES |

| ENGINES |

| EVENTS |

| FILES |

| GLOBAL_STATUS |

| GLOBAL_VARIABLES |

| KEY_COLUMN_USAGE |

| PARAMETERS |

| PARTITIONS |

| PLUGINS |

| PROCESSLIST |

| PROFILING |

| REFERENTIAL_CONSTRAINTS |

| ROUTINES |

| SCHEMATA |

| SCHEMA_PRIVILEGES |

| SESSION_STATUS |

| SESSION_VARIABLES |

| STATISTICS |

| TABLES |

| TABLESPACES |

| TABLE_CONSTRAINTS |

| TABLE_PRIVILEGES |

| TRIGGERS |

| USER_PRIVILEGES |

| VIEWS |

| INNODB_CMP_RESET |

| INNODB_TRX |

| INNODB_CMPMEM_RESET |

| INNODB_LOCK_WAITS |

| INNODB_CMPMEM |

| INNODB_CMP |

| INNODB_LOCKS |

+---------------------------------------+


例如:

mysql> SELECT table_name, table_type, engine-> FROM information_schema.tables-> WHERE table_schema = 'db5'-> ORDER BY table_name DESC;

 table_name(表名)  table_type(表类型)  引擎
 v56   VIEW(视图)  NULL
 v3

VIEW(视图)

 NULL
 v2

VIEW(视图)

 NULL
 v

VIEW(视图)

 NULL
 tables  BASE TABLE(基本表)  MyISAM
 t7  BASE TABLE(基本表)  MyISAM
 t3  BASE TABLE(基本表)  MyISAM
 t2  BASE TABLE(基本表)  MyISAM
 t  BASE TABLE(基本表)  MyISAM
 pk  BASE TABLE(基本表)  InnoDB
 loop  BASE TABLE(基本表)  MyISAM
 kurs  BASE TABLE(基本表)  MyISAM
 k  BASE TABLE(基本表)  MyISAM
 into  BASE TABLE(基本表)  MyISAM
 goto  BASE TABLE(基本表)  MyISAM
 fk2   BASE TABLE(基本表)  InnoDB
 fk  BASE TABLE(基本表)  InnoDB

 

解释:该语句请求按逆向字母顺序列出数据库db5中的所有表,但仅显示三种信息:表名,表类型,以及表引擎。集合中含17行(0.01秒)。

INFORMATION_SCHEMA是信息数据库,其中保存着关于MySQL服务器所维护的所有其他数据库的信息。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。

每位MySQL用户均有权访问这些表,但仅限于表中的特定行,在这类行中含有用户具有恰当访问权限的对象。

SELECT的优点:

SELECT ... FROM INFORMATION_SCHEMA语句的目的在于提供一种更为一致的方式,以访问MySQL所支持的各种SHOW语句(SHOW DATABASES、SHOW TABLES等等)提供的信息。与SHOW相比,使用SELECT有多项优点“

    符合Codd规则。也就是说,所有访问均是在表上进行的。
    不需要了解新语句的语法。由于他们已知道SELECT的工作方式,仅需了解对象名即可。    实现人无需操心增加关键词方面的事宜。    有数百万种可能的输出变化,而不是一种。这样,就为对元数据有不同需求的应用程序提供了更高的灵活性。    由于其他DBMS也采用了这类方式,移植更为容易。

然而,由于SHOW在MySQL的雇员和用户中十分流行,如果SHOW消失,可能会导致混乱,因此传统的语法方式无法给出消除SHOW的足够理由。事实上,在MySQL 5.1中,还对SHOW进行了多项增强。

标准:

在MySQL中,INFORMATION_SCHEMA表结构的实施遵从“ANSI/ISO SQL:2003标准,第11部分纲要。我们的目的在于,获得与SQL:2003核心特性F021“基本信息方案”的近似兼容。

SQL服务器2000(也遵从该标准)的用户可能已注意到它们高度的相似性。但是,MySQL略去了与我们的实施方式不相关的众多列,并添加了一些MySQL特有的列。其中一种列就是INFORMATION_SCHEMA.TABLES表中的引擎列。

尽管其他DBMS使用了不同的名称,如syscat或系统,但标准名称是INFORMATION_SCHEMA。

事实上,尽管不需要生成名为INFORMATION_SCHEMA的文件,我们仍提供了名为INFORMATION_SCHEMA的新数据库。可以使用USE语句将INFORMATION_SCHEMA选择为默认数据库,但访问该数据库中所含表的唯一方式是使用SELECT语句。不能在其中插入内容,不能更新它们,也不能删除其中的内容。

权限:

当前权限(SHOW)要求和SELCET权限要求不存在差别。在任何一种情况下,要想查看关于它的信息,需要对某类对象拥有特定权限。

我们选择INFORMATION_SCHEMA中的表和列。对于每一列,有三类信息:

    “标准名称”:指明了列的标准SQL名称。
    “SHOW 名称”:指明了最近SHOW语句中的等效字段名,如果有的话。
    “注释”给出了适用的附加信息。

为了避免使用标准或DB2、SQL服务器或Oracle中保留的名称,我们更改了标注为“SQL扩展”的列名。(例如,在TABLES表中,我们将COLLATION改为TABLE_COLLATION)。请参见本文末尾处给出的保留字列表。

字符列(例如TABLES.TABLE_NAME)定义通常是VARCHAR(N) CHARACTER SET utf8,其中,N至少为64。

在每一部分中,指明了等效于从INFORMATION_SCHEMA中检索信息的SELECT语句的SHOW语句,或者不存在这类语句。

注释:目前,有一些丢失的列和一些混乱的列。我们正在着手解决该问题,并随着变化情况更新文档。


INFORMATION_SCHEMA SCHEMATA表

该方案是数据库,因此SCHEMATA表提供了关于数据库的信息。

标准名称

SHOW名称

注释

CATALOG_NAME

-

NULL

SCHEMA_NAME

Database

DEFAULT_CHARACTER_SET_NAME

DEFAULT_COLLATION_NAME

SQL_PATH

NULL

注释:SQL_PATH列的之总为NULL。

下述语句是等效的:

SELECT SCHEMA_NAME AS `DatabaseFROM INFORMATION_SCHEMA.SCHEMATA[WHERE SCHEMA_NAME LIKE 'wild'] SHOW DATABASES[LIKE 'wild']

INFORMATION_SCHEMA TABLES表

TABLES表给出了关于数据库中的表的信息。

标准名称

SHOW名称

注释

TABLE_CATALOG

NULL

TABLE_SCHEMA

Table_...

TABLE_NAME

Table_...

TABLE_TYPE

ENGINE

Engine

MySQL扩展

VERSION

Version

MySQL扩展

ROW_FORMAT

Row_format

MySQL扩展

TABLE_ROWS

Rows

MySQL扩展

AVG_ROW_LENGTH

Avg_row_length

MySQL扩展

DATA_LENGTH

Data_length

MySQL扩展

MAX_DATA_LENGTH

Max_data_length

MySQL扩展

INDEX_LENGTH

Index_length

MySQL扩展

DATA_FREE

Data_free

MySQL扩展

AUTO_INCREMENT

Auto_increment

MySQL扩展

CREATE_TIME

Create_time

MySQL扩展

UPDATE_TIME

Update_time

MySQL扩展

CHECK_TIME

Check_time

MySQL扩展

TABLE_COLLATION

Collation

MySQL扩展

CHECKSUM

Checksum

MySQL扩展

CREATE_OPTIONS

Create_options

MySQL扩展

TABLE_COMMENT

Comment

MySQL扩展

注释:

  TABLE_SCHEMA和TABLE_NAME是SHOW显示中的单个字段,例如Table_in_db1。

TABLE_TYPE(表类型)应是BASE TABLE(基本表)或VIEW(视图)。如果表是临时性的,TABLE_TYPE = TEMPORARY。(没有临时视图,因此,因此不存在歧义)。

如果表位于INFORMATION_SCHEMA数据库中,TABLE_ROWS列为NULL。对于InnoDB表,在SQL优化中,行计数仅是大概估计值。

没有关于表默认字符集的任何信息。TABLE_COLLATION处于关闭状态,原因在于校对名称以字符集名称开头。

下述语句是等效的:

SELECT table_name FROM INFORMATION_SCHEMA.TABLES  [WHERE table_schema = 'db_name']  [WHERE|AND table_name LIKE 'wild']SHOW TABLES  [FROM db_name]  [LIKE 'wild']

INFORMATION_SCHEMA COLUMNS表

COLUMNS表给出了表中的列信息。

标准名称

SHOW名称

注释

TABLE_CATALOG

NULL

TABLE_SCHEMA

TABLE_NAME

COLUMN_NAME

Field

ORDINAL_POSITION

参见注释

COLUMN_DEFAULT

Default

IS_NULLABLE

Null

DATA_TYPE

Type

CHARACTER_MAXIMUM_LENGTH

Type

CHARACTER_OCTET_LENGTH

NUMERIC_PRECISION

Type

NUMERIC_SCALE

Type

CHARACTER_SET_NAME

COLLATION_NAME

Collation

COLUMN_TYPE

Type

MySQL扩展

COLUMN_KEY

Key

MySQL扩展

EXTRA

Extra

MySQL扩展

COLUMN_COMMENT

Comment

MySQL扩展

注释:

在SHOW中,类型显示包括来自数个不同COLUMNS列的值。

ORDINAL_POSITION有必要,这是因为,你可能会在某一天需要ORDER BY ORDINAL_POSITION(按ORDINAL_POSITION排序)。不同于SHOW,SELECT没有自动排序功能。

CHARACTER_OCTET_LENGTH应与CHARACTER_MAXIMUM_LENGTH相同,但多字节字符集除外。

CHARACTER_SET_NAME可由Collation(校对)导出。例如,如果给出了“SHOW FULL COLUMNS FROM t”,在Collation(校对)列中将见到latin1_swedish_ci的值,字符集由第1个下划线前的名称指明。latin1.

下述语句是等效的:

SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT  FROM INFORMATION_SCHEMA.COLUMNS  WHERE table_name = 'tbl_name'  [AND table_schema = 'db_name']  [AND column_name LIKE 'wild']SHOW COLUMNS  FROM tbl_name  [FROM db_name]  [LIKE wild]

INFORMATION_SCHEMA STATISTICS表

STATISTICS表给出了关于表索引的信息。

标准名称

SHOW名称

注释

TABLE_CATALOG

NULL

TABLE_SCHEMA

=数据库

TABLE_NAME

Table

NON_UNIQUE

Non_unique

INDEX_SCHEMA

=数据库

INDEX_NAME

Key_name

SEQ_IN_INDEX

Seq_in_index

COLUMN_NAME

Column_name

COLLATION

Collation

CARDINALITY

Cardinality

SUB_PART

Sub_part

MySQL扩展

PACKED

Packed

MySQL扩展

NULLABLE

Null

MySQL扩展

INDEX_TYPE

Index_type

MySQL扩展

COMMENT

Comment

MySQL扩展

注释:

没有关于这些索引的标准表。上面的列表与SQL服务器2000中sp_statistics返回的值类似。不同之处在于用CATALOG替换了QUALIFIER,并用SCHEMA替换了OWNER。

显而易见,前述表和SHOW INDEX的输出均是由相同的父对象导出的。因此,相关性已关闭。

下述语句是等效的:

SELECT * FROM INFORMATION_SCHEMA.STATISTICS  WHERE table_name = 'tbl_name'  [AND table_schema = 'db_name']SHOW INDEX  FROM tbl_name  [FROM db_name]

INFORMATION_SCHEMA USER_PRIVILEGES表

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

标准名称

SHOW名称

注释

GRANTEE

例如“user'@'host”

TABLE_CATALOG

NULL

PRIVILEGE_TYPE

IS_GRANTABLE

注释:

这是一个非标准表。其值来自mysql.user表。

INFORMATION_SCHEMA SCHEMA_PRIVILEGES表

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

标准名称

SHOW名称

注释

GRANTEE

例如“user'@'host”

TABLE_CATALOG

NULL

TABLE_SCHEMA

PRIVILEGE_TYPE

IS_GRANTABLE

注释:

这是一个非标准表。其值来自mysql.db表。

INFORMATION_SCHEMA TABLE_PRIVILEGES表

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

标准名称

SHOW名称

注释

GRANTEE

例如“user'@'host”

TABLE_CATALOG

NULL

TABLE_SCHEMA

TABLE_NAME

PRIVILEGE_TYPE

IS_GRANTABLE

下述语句不等效:

SELECT ... FROM INFORMATION_SCHEMA.TABLE_PRIVILEGESSHOW GRANTS ...

PRIVILEGE_TYPE可以包含这些值之一(仅能一个):SELECT、INSERT、UPDATE、REFERENCES、ALTER、INDEX、DROP、CREATE VIEW。

INFORMATION_SCHEMA COLUMN_PRIVILEGES表

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

标准名称

SHOW名称

注释

GRANTEE

例如“user'@'host”

TABLE_CATALOG

NULL

TABLE_SCHEMA

TABLE_NAME

COLUMN_NAME

PRIVILEGE_TYPE

IS_GRANTABLE

注释:

在SHOW FULL COLUMNS(显示完整列)的输出中,权限值位于一个字段并采用小写形式,例如select、insert、update、references。在COLUMN_PRIVILEGES中,每种权限占一行,并为大写形式。

PRIVILEGE_TYPE可以包含这些值之一(仅能一个):SELECT, INSERT, UPDATE, REFERENCES.

如果用户有GRANT OPTION权限,那么IS_GRANTABLE应为YES。否则,IS_GRANTABLE应为NO。在输出中,不会将GRANT OPTION作为单独权限列出。

下述语句不等效:

SELECT ... FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGESSHOW GRANTS ...

INFORMATION_SCHEMA CHARACTER_SETS表

CHARACTER_SETS(字符集)表提供了关于可用字符集的信息。

标准名称

SHOW名称

注释

CHARACTER_SET_NAME

Charset

DEFAULT_COLLATE_NAME

Default collation

DESCRIPION

Description

MySQL扩展

MAXLEN

Maxlen

MySQL扩展

注释:

我们增加了两个非标准列,分别对应于SHOW CHARACTER SET输出的Description(描述)和Maxlen(最大长度)列。

下述语句是等效的:

SELECT * FROM INFORMATION_SCHEMA.CHARACTER_SETS  [WHERE name LIKE 'wild']SHOW CHARACTER SET  [LIKE 'wild']

INFORMATION_SCHEMA COLLATIONS表

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

标准名称

SHOW名称

注释

COLLATION_NAME

Collation

注释:

我们增加了5个非标准列,分别对应于SHOW COLLATION输出的Charset、Id、Default、Compiled和Sortlen列。

下述语句是等效的:

SELECT COLLATION_NAME FROM INFORMATION_SCHEMA.COLLATIONS  [WHERE collation_name LIKE 'wild']SHOW COLLATION  [LIKE 'wild']

INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY表

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

标准名称

SHOW名称

注释

COLLATION_NAME

Collation

CHARACTER_SET_NAME

Charset

INFORMATION_SCHEMA TABLE_CONSTRAINTS表

TABLE_CONSTRAINTS表描述了存在约束的表。

标准名称

SHOW名称

注释

CONSTRAINT_CATALOG

NULL

CONSTRAINT_SCHEMA

CONSTRAINT_NAME

TABLE_SCHEMA

TABLE_NAME

CONSTRAINT_TYPE

注释:

CONSTRAINT_TYPE的值可以是UNIQUE(唯一)、PRIMARY KEY(主键)或FOREIGN KEY(外键)。

当Non_unique字段为0时,UNIQUE和PRIMARY KEY信息与SHOW INDEX输出的Key_name字段中给出的信息基本相同。

CONSTRAINT_TYPE列可包含下述值之一:UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK。这是一个CHAR(非ENUM)列。在我们支持CHECK前,CHECK值不可用。

INFORMATION_SCHEMA KEY_COLUMN_USAGE表

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

标准名称

SHOW名称

注释

CONSTRAINT_CATALOG

NULL

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

注释:

如果约束为外键,这就是外键列,而不是外键引用的列。

ORDINAL_POSITION的值是列在约束中的位置,而不是列在表中的位置。列位置采用从1开始的数值编号。

对于“唯一”和“主键”约束,POSITION_IN_UNIQUE_CONSTRAINT的值为NULL。对于“外键”约束,它是所引用表内键中的顺序位置。

例如,假定有两个具有下述定义的表t1和t3:

CREATE TABLE t1(

s1 INT, s2 INT, s3 INT,

PRIMARY KEY(s3)) ENGINE=InnoDB;CREATE TABLE t3(

s1 INT, s2 INT, s3 INT, KEY(s1),

CONSTRAINT CO FOREIGN KEY (s2) REFERENCES t1(s3)) ENGINE=InnoDB;

对于这两个表,KEY_COLUMN_USAGE表有两行:

一行含有CONSTRAINT_NAME='PRIMARY', TABLE_NAME='t1', COLUMN_NAME='s3',ORDINAL_POSITION=1, POSITION_IN_UNIQUE_CONSTRAINT=NULL。

另一行含有CONSTRAINT_NAME='CO', TABLE_NAME='t3', COLUMN_NAME='s2',ORDINAL_POSITION=1, POSITION_IN_UNIQUE_CONSTRAINT=1。

INFORMATION_SCHEMA ROUTINES表

ROUTINES表提供了关于存储子程序(存储程序和函数)的信息。此时,ROUTINES表不包含自定义函数(UDF)。

名为“mysql.proc name”的列指明了对应于INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列,如果有的话。

标准名称

mysql.proc

注释

SPECIFIC_NAME

specific_name

ROUTINE_CATALOG

NULL

ROUTINE_SCHEMA

db

ROUTINE_NAME

name

ROUTINE_TYPE

type

{PROCEDURE|FUNCTION}

DTD_IDENTIFIER

(数据类型描述符)

ROUTINE_BODY

SQL

ROUTINE_DEFINITION

body

EXTERNAL_NAME

NULL

EXTERNAL_LANGUAGE

language

NULL

PARAMETER_STYLE

SQL

IS_DETERMINISTIC

is_deterministic

SQL_DATA_ACCESS

sql_data_access

SQL_PATH

NULL

SECURITY_TYPE

security_type

CREATED

created

LAST_ALTERED

modified

SQL_MODE

sql_mode

MySQL扩展

ROUTINE_COMMENT

comment

MySQL扩展

DEFINER

definer

MySQL扩展

注释:

MySQL计算EXTERNAL_LANGUAGE,因此:

如果mysql.proc.language='SQL',那么EXTERNAL_LANGUAGE为NULL。

否则,EXTERNAL_LANGUAGE为mysql.proc.language中的值。然而,由于尚没有外部语言,因此该值总为NULL。

INFORMATION_SCHEMA VIEWS表

VIEWS表给出了关于数据库中的视图的信息。

标准名称

SHOW名称

注释

TABLE_CATALOG

NULL

TABLE_SCHEMA

TABLE_NAME

VIEW_DEFINITION

CHECK_OPTION

IS_UPDATABLE

DEFINER

SECURITY_TYPE

注释:

有一种新的权限SHOW VIEW,如果没有它,将无法看到VIEWS表。

VIEW_DEFINITION列含有你在SHOW CREATE VIEW所生成的Create Table字段中见到的大多数信息。跳过SELECT前的单词,并跳过具有CHECK OPTION(检查选项)的单词。例如,如果初始语句是:

CREATE VIEW v AS SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1 WITH CHECK OPTION;

那么视图定义为:

SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1

CHECK_OPTION列的值总为NONE。

如果视图是可更新的,IS_UPDATABLE列的值为YES,如果视图是不可更新的,IS_UPDATABLE列的值为NO。

DEFINER列指明了定义视图的人。SECURITY_TYPE的值为DEFINER或INVOKER。

INFORMATION_SCHEMA TRIGGERS表

TRIGGERS表提供了关于触发程序的信息。

必须有SUPER权限才能查看该表。

标准名称

SHOW名称

注释

TRIGGER_CATALOG

NULL

TRIGGER_SCHEMA

TRIGGER_NAME

Trigger

EVENT_MANIPULATION

Event

EVENT_OBJECT_CATALOG

NULL

EVENT_OBJECT_SCHEMA

EVENT_OBJECT_TABLE

Table

ACTION_ORDER

0

ACTION_CONDITION

NULL

ACTION_STATEMENT

Statement

ACTION_ORIENTATION

ROW

ACTION_TIMING

Timing

ACTION_REFERENCE_OLD_TABLE

NULL

ACTION_REFERENCE_NEW_TABLE

NULL

ACTION_REFERENCE_OLD_ROW

OLD

ACTION_REFERENCE_NEW_ROW

NEW

CREATED

NULL (0)

SQL_MODE

注释:

TRIGGER_SCHEMA和TRIGGER_NAME列中分别含有相应数据库的名称以及触发程序的名称,在该数据库中,含有该触发程序。

EVENT_MANIPULATION列含有下述值之一:INSERT、DELETE、或UPDATE。

每个触发程序均与一个表准确相关。EVENT_OBJECT_SCHEMA和EVENT_OBJECT_TABLE列包含相应的数据库和表名,在该数据库中,含有该表。

ACTION_ORDER语句含有触发程序动作(在相同表上所有类似触发程序列表中)的顺序位置。目前该值总为0,这是因为在相同表上具有相同EVENT_MANIPULATION和ACTION_TIMING的触发程序不能超过1个。

ACTION_STATEMENT列含有激活了触发程序时将要执行的语句。这与SHOW TRIGGERS输出的Statement(语句)列中显示的文本相同。注意,该文本采用了UTF-8编码方式。

ACTION_ORIENTATION列总含有值“ROW”。

ACTION_TIMING列含有下述两种值之一:“BEFORE”或“AFTER”。

列ACTION_REFERENCE_OLD_ROW和ACTION_REFERENCE_NEW_ROW分别含有旧的和新的列标识符。这意味着ACTION_REFERENCE_OLD_ROW总含有值“OLD”,ACTION_REFERENCE_NEW_ROW总含有值“NEW”。

SQL_MODE列显示了创建触发程序时有效的服务器SQL模式(无论当前的服务器SQL模式为何,只要激活了触发程序,它将保持有效)。该列的可能取值范围与sql_mode系统变量的取值范围相同。请参见5.3.2节,“SQL服务器模式”。

在下述列中,目前总含有NULL:TRIGGER_CATALOG,EVENT_OBJECT_CATALOG,ACTION_CONDITION,ACTION_REFERENCE_OLD_TABLE,ACTION_REFERENCE_NEW_TABLE和CREATED。

例如,使用触发器中定义的触发程序ins_sum。

mysql> SELECT * FROM INFORMATION_SCHEMA.TRIGGERS/G*************************** 1. row *************************** TRIGGER_CATALOG: NULL TRIGGER_SCHEMA: test TRIGGER_NAME: ins_sum  EVENT_MANIPULATION: INSERT EVENT_OBJECT_CATALOG: NULL EVENT_OBJECT_SCHEMA: test  EVENT_OBJECT_TABLE: account ACTION_ORDER: 0 ACTION_CONDITION: NULL ACTION_STATEMENT:  SET @sum = @sum + NEW.amount  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: NULL1 row in set (1.54 sec)

其他INFORMATION_SCHEMA表

    我们打算实施附加的INFORMATION_SCHEMA表。尤其是,我们确认了对INFORMATION_SCHEMA.PARAMETERS和INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS的需求。
 
 

SHOW语句的扩展

某些SHOW语句的扩展伴随着INFORMATION_SCHEMA的实施:

SHOW可用于获取关于INFORMATION_SCHEMA本身结构的信息。

一些SHOW语句允许使用WHERE子句,这样,在指定需要显示的行时,可更为灵活。

INFORMATION_SCHEMA是一种信息数据库,因此,在SHOW DATABASES的输出中,包含其名称。与此类似,SHOW TABLES可与INFORMATION_SCHEMA一起使用,以获取表清单。

mysql> SHOW TABLES FROM INFORMATION_SCHEMA;+---------------------------------------+| Tables_in_information_schema|+---------------------------------------+| SCHEMATA|| TABLES|| COLUMNS || CHARACTER_SETS || COLLATIONS  || COLLATION_CHARACTER_SET_APPLICABILITY || ROUTINES|| STATISTICS  || VIEWS || TRIGGERS|| USER_PRIVILEGES|| SCHEMA_PRIVILEGES  || TABLE_PRIVILEGES|| COLUMN_PRIVILEGES  || TABLE_CONSTRAINTS  || KEY_COLUMN_USAGE|+---------------------------------------+

SHOW COLUMNS和DESCRIBE能够显示单独INFORMATION_SCHEMA表中的列信息。

扩展了一些SHOW语句,允许使用WHERE子句:

SHOW CHARACTER SETSHOW COLLATIONSHOW COLUMNSSHOW DATABASESSHOW FUNCTION STATUSSHOW KEYSSHOW OPEN TABLESSHOW PROCEDURE STATUSSHOW STATUSSHOW TABLE STATUSSHOW TABLESSHOW VARIABLES

如果有WHERE子句的话,将根据SHOW语句显示的列名进行计算。例如,SHOW COLLATION语句可产生这些输出列:

例如,SHOW CHARACTER SET语句可产生这些输出列:

mysql> SHOW CHARACTER SET;

Charset 描述 默认校对 最大长度
 big5  Big5 Traditional Chinese  big5_chinese_ci 2
 dec8  DEC West European  dec8_swedish_ci 1
 cp850  DOS West European  cp850_general_ci 1
 hp8  HP West European  hp8_english_ci 1
 koi8r  KOI8-R Relcom Russian  koi8r_general_ci 1
 latin1  cp1252 West European   latin1_swedish_ci 1
 latin2  ISO 8859-2 Central European  latin2_general_ci 1

要想与SHOW CHARACTER SET一起使用WHERE子句,应引用这些列名称。例如,在下面的语句中,给出了用于默认校对且含有字符串“japanese”的字符集的信息:

mysql> SHOW CHARACTER SET WHERE `Default collation` LIKE '%japanese%';

 Charset  描述   默认校对 最大长度
 ujis  EUC-JP Japanese  ujis_japanese_ci 3
 sjis  Shift-JIS Japanese   sjis_japanese_ci 2
 cp932  SJIS for Windows Japanese  cp932_japanese_ci 2
 eucjpms  UJIS for Windows Japanese  eucjpms_japanese_ci 3

该语句显示了多字节字符集。

mysql> SHOW CHARACTER SET WHERE Maxlen > 1;

 Charset  描述  默认校对 最大长度
 big5  Big5 Traditional Chinese   big5_chinese_ci 2
 ujis  EUC-JP Japanese  ujis_japanese_ci 3
 sjis  Shift-JIS Japanese   sjis_japanese_ci 2
 euckr  EUC-KR Korean  euckr_korean_ci 2
 gb2312   GB2312 Simplified Chinese  gb2312_chinese_ci 2
 gbk  GBK Simplified Chinese  gbk_chinese_ci 2
 utf8  UTF-8 Unicode  utf8_general_ci 3
 ucs2  UCS-2 Unicode  ucs2_general_ci 2
 cp932  SJIS for Windows Japanese  cp932_japanese_ci 2
 eucjpms  UJIS for Windows Japanese  eucjpms_japanese_ci 3
来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/magina/p/4974209.html

Information_Schema系统表相关推荐

  1. 查询Master下的系统表和系统视图获取数据库的信息和简单的渗透测试

    在SQL中可以通过查询Master下的系统表(sys)和系统视图(information_schema)获取数据库的信息.SQL2000和SQL2005的结构略有不同. 系统表结构参考系统表详细说明. ...

  2. sql server2008系统表详细说明sys.开头的表

    sql server2008系统表详细说明sys.开头的表 一.库里有多少个表,表名等 select * from INFORMATION_SCHEMA.TABLES 二.查询表.字段.类型.是否主键 ...

  3. MySQL5.7 常用系统表大全

    MySQL5.7 默认的模式有:information_schema, 具有 61个表: m ysqL, 具有31个表: performance_schema,具有87个表; sys, 具有1个表, ...

  4. mysql list转表_mysql系统表【转】

    MySQL5.7 默认的模式有:information_schema, 具有 61个表: mysqL, 具有31个表: performance_schema,具有87个表; sys, 具有1个表, 1 ...

  5. 通过系统表获取SQL,Access,Oracle数据库的元数据信息

    元数据简介 元数据 (metadata) 最常见的定义为"有关数据的结构数据",或者再简单一点就是"关于数据的信息",日常生活中的图例.图书馆目录卡和名片等都可 ...

  6. 如何根据对象获取到对应的表名_Hands-on! 如何给 TiDB 添加新系统表

    作者:黄东旭 "TiDB,你已经是一个成熟的数据库了,该学会用自己的 SQL 查自己的状态了." 对于一个成熟的数据库来说,通过 SQL 来查询系统本身的状态再正常不过,对于 My ...

  7. SQL2000系统表、存储过程、函数的功能介绍及应用

    ----系统表--------------------------------------------------------------------------------------------- ...

  8. SQL-Server使用点滴(二-系统表)

    二,对象的建立和使用 1,了解MSSql的[系统表] 对于SQL-Server中的所有对象,包括数据库,数据表,记录,字段,触发器,索引,数据类型等元素,均有对应的系统表记性记录.系统表是禁止直接删改 ...

  9. SQL Server 2000 ——系统表和系统视图

    一.系统表 数据字典的详细信息请查SQL SERVER BOL,这里仅列出一部分. 1.1.sysservers 1.查看所有本地服务器及链接服务器 select * from master..sys ...

最新文章

  1. 如果我是小白, 学Python要准备什么呢?
  2. “630”后逆变器售价下滑 企业如何应战?
  3. 微服务下的容器部署和管理平台Rancher
  4. [源码和文档分享]基于Java的带GUI界面猜数字游戏
  5. python程序如何封装成接口_python接口自动化如何封装获取常量的类
  6. 教师网络计算机研修日志,教师网络研修日志
  7. php3级分类,关于php非递归三级分类输出json数据
  8. Vue项目开发中的点滴积累系列文章
  9. the process cannot access the file because it is being used by another process
  10. 数据可视化之下发图实践
  11. Java 运行程序,并获得结果
  12. CDH初始化scm_prepare_database.sh数据库遇到的问题
  13. hbase版本对应的hadoop版本
  14. 黑马程序员——双列集合、泛型 笔记第十一篇
  15. MIMO技术杂谈(一)浅谈分集与复用的权衡_akala啦_新浪博客
  16. JVM调优实践:记录初次JVM调优经历
  17. kaggle上面的E-Commerce Data数据集练习(可视化与部分特征工程)
  18. 漫游费概念模糊,运营商自食其果
  19. 干货知识:高清监控怎么选配交换机
  20. 【本人秃顶程序员】程序员不要去这样的公司

热门文章

  1. python对json的相关操作
  2. React开发(166):ant design form 设置值
  3. Taro+react开发(93):判断是否是H5端
  4. 前端学习(2986):一文理解数据劫持4
  5. 前端学习(2934):上午回顾
  6. [html] 使用canvas制作一个印章
  7. [html] 在主框架下引入的iframe,如果检测这个iframe是否能打开,如果打不开则跳到404页面
  8. [html] Ajax与Flash的优缺点分别是什么?
  9. [css] 用CSS绘制一个三角形
  10. 工作155:首页样式调整第二次