在安装或使用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命令可以用来查看表中的记录数等等。这些命令的使用需要根据具体情况进行选择和组合。
总之,以上只是简单的介绍了一些常用的数据库命令,如果您想要深入学习数据库知识,还需要不断学习和实践。另外需要注意的是,在使用这些命令时一定要小心谨慎,避免因为误操作导致数据的丢失或损坏。