您的位置:首页 > 数据库

INFORMATION_SCHEMA信息数据库

2014-04-28 13:50 302 查看
INFORMATION_SCHEMA提供了访问数据库元数据的方式。

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

例如:
mysql> SELECTtable_name,table_type, engine

-> FROM information_schema.tables

-> WHEREtable_schema = 'db5'

-> ORDER BYtable_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

集合中含17行(0.01秒)。


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

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进行了多项增强。关于这方面的介绍,请参见23.2节,“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权限要求不存在差别。在任何一种情况下,要想查看关于它的信息,需要对某类对象拥有特定权限。

dev.mysql.com/doc/refman/5.1/zh/information-schema.html

访问数据库information_schema中所含表的唯一方式是使用SELECT语句。不能在其中插入内容,不能更新它们,也不能删除其中的内容。
它反映的是关于mysql数据库的数据的相关信息。
你要修改关于表和字段的描述信息,是不能直接在information_schema中修改的,而是需要对数据库中相应的表进行修改,修改了相应表之后,information_schema的数据也会自动更新。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: