在安装或使用MySQL时,大家可能会发现除了自己安装的数据库以外,还有一个information_schema数据库。那么,information_schema数据库是做什么用的呢?对于使用WordPress博客的朋友来说,可能会误以为这是安装模板时添加的数据库。本文将帮助你了解information_schema数据库的作用。

首先,我们需要了解什么是元数据。元数据是关于数据的数据,例如数据库名、表名、列的数据类型以及访问权限等。有时,用于表述这些信息的术语还包括“数据词典”和“系统目录”。

在MySQL中,将information_schema视为一个数据库,更准确地说是一个信息数据库。它保存了关于MySQL服务器所维护的所有其他数据库的信息,如数据库名、表名、表栏的数据类型和访问权限等。在INFORMATION_SCHEMA中,有几个只读表,它们实际上是视图,而不是基本表,因此你无法看到与之相关的任何文件。

以下是一些主要的INFORMATION_SCHEMA表及其功能:

1. SCHEMATA表:提供了当前MySQL实例中所有数据库的信息。它是show databases的结果取之此表。

2. TABLES表:提供了关于数据库中的表(包括视图)的信息。详细描述了某个表属于哪个schema、表类型、表引擎以及创建时间等信息。它是show tables from information_schema的结果取之此表。

3. COLUMNS表:提供了表中的列信息。详细描述了某张表的所有列以及每个列的信息。它是show columns from information_schema.tables的结果取之此表。

4. STATISTICS表:提供了关于表索引的信息。它是show index from information_schema.tables的结果取之此表。

5. USER_PRIVILEGES表:给出了关于用户权限的信息。该信息源自mysql.user授权表。这是一个非标准表。

6. SCHEMA_PRIVILEGES表:给出了关于方案(数据库)权限的信息。该信息来自mysql.db授权表。这是一个非标准表。

7. TABLE_PRIVILEGES表:给出了关于表权限的信息。这是一个非标准表。

通过了解这些INFORMATION_SCHEMA表及其功能,你将对information_schema数据库有更深入的了解。

表权限信息:

表权限信息源自mysql.tables_priv授权表,是一个非标准表。

列权限信息:

列权限信息源自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权限才能查看该表。

存储引擎信息:

ENGINS表存储引擎相关信息,可以通过以下命令查看MySQL支持的存储引擎:

```sql

mysql> show engines;

```

查看MySQL当前默认的存储引擎:

```sql

mysql> show variables like '%storage_engine%';

```查看某个表使用的存储引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎):

```sql

mysql> show create table 表名;

```

定时事件(scheduled events)信息:

EVENTS表提供了有关定时事件(scheduled events)的信息,类似于Linux crontab计划任务,用于时间触发。通过单独或调用存储过程使用,在某一特定的时间点,触发相关的SQL语句或存储过程。要查看事件调度器状态,可以执行以下命令:```sql

SHOW VARIABLES LIKE 'event_scheduler';

```

在MySQL中,我们可以通过以下命令来查看事件调度器的状态:

1. 设置全局事件调度器为开启状态:

```sql

SET GLOBAL event_scheduler = 1;

```

或者

```sql

SET @@global.event_scheduler = 1;

```

2. 设置全局事件调度器为关闭状态:

```sql

SET GLOBAL event_scheduler = 0;

```

或者

```sql

SET @@global.event_scheduler = 0;

```

键值1或者ON表示开启;0或者OFF表示关闭。此外,我们还可以在服务器的配置文件(my.cnf或my.ini,适用于Windows系统)中设置event_scheduler=1,然后重启服务器。

下一篇文章将会详细介绍事件调度器,让大家更深入地了解它。

本篇文章将对数据库中常用的一些命令进行介绍,包括创建表、修改表结构、删除表、查询表等等。这些命令是学习数据库的基础知识,掌握它们对于后续的学习和发展都非常重要。

在实际应用中,我们经常需要对数据库中的表进行操作,比如增加列、删除列、修改列名等等。这时候就需要使用到上述介绍的命令了。例如,要增加一列,可以使用ALTER TABLE语句,具体格式为:ALTER TABLE 表名 ADD 列名 数据类型;例如,要删除一列,可以使用ALTER TABLE语句,具体格式为:ALTER TABLE 表名 DROP COLUMN 列名;例如,要修改列名,可以使用ALTER TABLE语句,具体格式为:ALTER TABLE 表名 RENAME COLUMN 原列名 TO 新列名;例如,要修改列的数据类型,可以使用ALTER TABLE语句,具体格式为:ALTER TABLE 表名 MODIFY COLUMN 列名 新数据类型;

除了上述命令之外,还有一些其他的命令也很重要。例如desc命令可以用来查看表的结构和详细信息;例如drop命令可以用来删除表;例如select count(*) from table_name命令可以用来查看表中的记录数等等。这些命令的使用需要根据具体情况进行选择和组合。

总之,以上只是简单的介绍了一些常用的数据库命令,如果您想要深入学习数据库知识,还需要不断学习和实践。另外需要注意的是,在使用这些命令时一定要小心谨慎,避免因为误操作导致数据的丢失或损坏。