db2全表扫描 怎么查看 db2查schema下所有表名_db2查看表结构


参考官方文档:

24.1 Introductiondev.mysql.com


INFORMATION_SCHEMA提供对数据库元数据的访问,有关MySQL服务器的信息,例如数据库或表的名称,列的数据类型或访问权限。 有时用于此信息的其他术语是数据字典和系统目录。

INFORMATION_SCHEMA 使用注意

尽管你可以使用USE语句选择INFORMATION_SCHEMA作为默认数据库,但只能读取表的内容,而不能对它们执行INSERT,UPDATE或DELETE操作。

以下是从INFORMATION_SCHEMA中检索信息的语句例子:

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

说明:该语句请求数据库db5中所有表的列表,仅显示三条信息:表的名称,类型和存储引擎。

字符集条件

字符列的定义(例如,TABLES.TABLE_NAME)通常是VARCHAR(N)CHARACTER SET utf8,其中N至少为64.MySQL使用此字符集的默认排序规则(utf8_general_ci)进行搜索,排序,比较和 这些列上的其他字符串操作。

由于某些MySQL对象表示为文件,因此INFORMATION_SCHEMA字符串列中的搜索可能会受到文件系统区分大小写的影响。

INFORMATION_SCHEMA作为SHOW语句的替代

SELECT ... FROM INFORMATION_SCHEMA语句旨在提供对MySQL支持的各种SHOW语句(SHOW DATABASES,SHOW TABLES等)提供的信息的访问的更一致的方法。 与SHOW相比,使用SELECT具有以下优点:

  • 它符合Codd的规则,因为所有访问都是在表上完成的。
  • 您可以使用熟悉的SELECT语句语法,只需要了解一些表名和列名。
  • 实现者无需担心添加关键字。
  • 您可以将INFORMATION_SCHEMA查询的结果过滤,排序,连接和转换为应用程序所需的任何格式,例如数据结构或要解析的文本表示。
  • 此技术可与其他数据库系统更具互操作性。 例如,Oracle数据库用户熟悉在Oracle数据字典中查询表。

因为SHOW很熟悉并且被广泛使用,所以SHOW语句仍然是另一种选择。

INFORMATION_SCHEMA 和权限

每个MySQL用户都有权访问这些表,但只能看到用户具有适当访问权限的对象的相对应的行。 在某些情况下(例如,INFORMATION_SCHEMA ROUTINES表中的ROUTINE_DEFINITION列),权限不足的用户会看到NULL。 这些限制不适用于InnoDB表; 只有PROCESS权限才能看到它们。

相同的权限适用于从INFORMATION_SCHEMA中选择信息和通过SHOW语句查看相同的信息。 在任何一种情况下,您都必须拥有对象的某些权限才能查看有关它的信息。

性能注意事项

INFORMATION_SCHEMA查询从多个数据库中搜索信息可能需要很长时间并影响性能。 要检查查询的效率,可以使用EXPLAIN。 有关使用EXPLAIN输出调整INFORMATION_SCHEMA查询的信息

标准考虑因素

MySQL中的INFORMATION_SCHEMA表结构的实现遵循ANSI / ISO SQL:2003标准第11部分Schemata。 我们的意图是近似符合SQL:2003核心功能F021基本信息模式。

SQL Server 2000的用户(也遵循该标准)可能会注意到强烈的相似性。 但是,MySQL省略了许多与我们的实现无关的列,并添加了特定于MySQL的列。 其中一个这样添加的列是INFORMATION_SCHEMA TABLES表中的ENGINE列。

虽然其他DBMS使用各种名称,如syscat或system,但标准名称为INFORMATION_SCHEMA。

为避免使用DB2,SQL Server或Oracle中保留的任何名称,我们更改了标记为“MySQL扩展”的某些列的名称。 (例如,我们在TABLES表中将COLLATION更改为TABLE_COLLATION。)

INFORMATION_SCHEMA章节中的约定

之后的部分描述了INFORMATION_SCHEMA中的每个表和列。 对于每列,有三块信息:

  • “INFORMATION_SCHEMA Name”表示INFORMATION_SCHEMA表中列的名称。 除非“Remarks”字段显示“MySQL extension”,否则这对应于标准SQL名称。
  • “SHOW Name”表示最近的SHOW语句中的等效字段名称(如果有)。
  • “ Remarks”提供了适用的其他信息。 如果此字段为NULL,则表示该列的值始终为NULL。 如果此字段显示“MySQL extension”,则该列是标准SQL的MySQL扩展。