Mysql自带数据库中的信息

当你新接触一个数据库,对其中的数据库,表,字段什么的都不清楚,这时候需要查找某个字段,怎么办呢?

比如,你新接触了一个数据库,其中有20多个库,每个库里面有500+的表格,你这个时候想找用户的昵称字段,要一个一个表去查吗?或者挨个看名字里面带有user的表,然后逐一执行desc table查看字段吗?

no,你可以直接通过读元数据的一些信息来快速定位.

当你新建一个mysql服务,并且使用root用户登录mysql(或者你拥有相应的权限),会发现mysql预先安装了四个数据库.

  • information_schema
  • mysql
  • perfomance_schema
  • test

这些数据库完全可以当成是普通的数据库,使用查询语句去获取其中的信息.

接下来逐一看一下里面保存了哪些数据.

information_schema

这个数据库主要用来存储数据的数据,即你的数据库信息,数据表信息,字段信息等等.表非常的多,这里不逐一列举,仅查看一些常用的表.

  • SCHEMATA:提供了当前mysql实例中所有数据库的信息,我们经常使用的show databases就是从这里读取数据的.
  • TABLES:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间,备注等信息。
  • COLUMNS:提供了表中的列信息。详细的描述了某个字段属于某张表,某个库,以及其他的字段名,字段类型,权限,备注等信息.
  • STATISTICS:提供了关于表索引的信息。
  • TABLE_CONSTRAINTS:描述了存在约束的表。以及表的约束类型等。
  • KEY_COLUMN_USAGE:描述了具有约束的键列。
  • VIEWS:给出了关于数据库中的视图的信息。
  • TRIGGERS:提供了关于触发器的信息。

mysql

这是mysql的核心库,我们的用户,密码及权限等相关信息都存储在这里,所以在修改用户或者添加用户等操作的时候,使用grant命令和直接对这个库中的user表进行增删改查的作用是相等的.

这其中最常用的就是user表,可以对其进行操作.比如:

1
delete from mysql.user where User='haha';

可以删除用户.

performance_schema

这里存储的是一些和性能相关的信息.目前没有研究,普通用户也用不上,等我需要用到的时候回来补充.

test

这是一个纯粹的测试库,可以继续使用测试自己的程序也可以直接删除.





ChangeLog

2019-04-18 完

以上皆为个人所思所得,如有错误欢迎评论区指正。

欢迎转载,烦请署名并保留原文链接。

联系邮箱:huyanshi2580@gmail.com

更多学习笔记见个人博客——>呼延十