当你新接触一个数据库,对其中的数据库,表,字段什么的都不清楚,这时候需要查找某个字段,怎么办呢?
比如,你新接触了一个数据库,其中有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 完以上皆为个人所思所得,如有错误欢迎评论区指正。
欢迎转载,烦请署名并保留原文链接。
更多学习笔记见个人博客——>呼延十