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

 


 

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

| 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 `Database FROM 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_PRIVILEGES SHOW 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_PRIVILEGES SHOW 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: NULL 1 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 SET SHOW COLLATION SHOW COLUMNS SHOW DATABASES SHOW FUNCTION STATUS SHOW KEYS SHOW OPEN TABLES SHOW PROCEDURE STATUS SHOW STATUS SHOW TABLE STATUS SHOW TABLES SHOW 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_ci1
 hp8 HP West European hp8_english_ci1
 koi8r KOI8-R Relcom Russian  koi8r_general_ci1
 latin1 cp1252 West European   latin1_swedish_ci1
 latin2 ISO 8859-2 Central European  latin2_general_ci1
 

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

mysql> SHOW CHARACTER SET WHERE `Default collation` LIKE '%japanese%';
 Charset  描述  默认校对最大长度
 ujis EUC-JP Japanese  ujis_japanese_ci3
 sjis Shift-JIS Japanese   sjis_japanese_ci2
 cp932 SJIS for Windows Japanese  cp932_japanese_ci2
 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_ci3
 sjis Shift-JIS Japanese   sjis_japanese_ci2
 euckr EUC-KR Korean  euckr_korean_ci 2
 gb2312   GB2312 Simplified Chinese  gb2312_chinese_ci2
 gbk  GBK Simplified Chinese gbk_chinese_ci2
 utf8 UTF-8 Unicode  utf8_general_ci 3
 ucs2 UCS-2 Unicode  ucs2_general_ci 2
 cp932 SJIS for Windows Japanese  cp932_japanese_ci2
 eucjpms  UJIS for Windows Japanese  eucjpms_japanese_ci 3
  

 

 

 

 

 

 



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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值