MySQL社区

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 4547|回复: 0
打印 上一主题 下一主题

[参数配置] INFORMATION_SCHEMA信息数据库介绍

[复制链接]
跳转到指定楼层
1#
发表于 2008-8-19 16:01:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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有多项优点“

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

如,下述语句是等效的:

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

SHOW DATABASES[LIKE 'wild']
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享淘帖 顶 踩
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|小黑屋|Archiver|手机版|MySQL社区 ( 京ICP备07012489号   
联系人:周生; 联系电话:13911732319

GMT+8, 2024-4-25 16:01 , Processed in 0.065493 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表