MariaDB社区

标题: INFORMATION_SCHEMA信息数据库介绍 [打印本页]

作者: kider    时间: 2008-8-19 16:01
标题: INFORMATION_SCHEMA信息数据库介绍
INFORMATION_SCHEMA提供了访问数据库元数据的方式。

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

例如:
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
v3VIEW(视图)
NULL
v2VIEW(视图)
NULL
vVIEW(视图)
NULL
tables BASE TABLE(基本表)MyISAM
t7BASE TABLE(基本表)MyISAM
t3BASE TABLE(基本表)MyISAM
t2BASE TABLE(基本表)MyISAM
tBASE TABLE(基本表)MyISAM
pkBASE TABLE(基本表)InnoDB
loop BASE TABLE(基本表)MyISAM
kurs BASE TABLE(基本表)MyISAM
kBASE TABLE(基本表)MyISAM
into BASE TABLE(基本表)MyISAM
goto BASE TABLE(基本表)MyISAM
fk2  BASE TABLE(基本表)InnoDB
fkBASE 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有多项优点“


然而,由于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权限要求不存在差别。在任何一种情况下,要想查看关于它的信息,需要对某类对象拥有特定权限。

如,下述语句是等效的:

SELECT SCHEMA_NAME AS `Database`
FROM INFORMATION_SCHEMA.SCHEMATA
[WHERE SCHEMA_NAME LIKE 'wild']

SHOW DATABASES[LIKE 'wild']




欢迎光临 MariaDB社区 (http://123.56.88.72/) Powered by Discuz! X3.2