元数据
什么是元数据
元数据(MetaData)指的是定义数据结构的数据。实际上,除了表本身之外的数据都是元数据。
举例:表的状态信息,属性和权限等,操作结果信息,某条指令影响的记录数,MySQL服务器信息
元数据的获取
方法一:show语句
常用show命令
SHOW DATABASES; #查看所有数据库SHOW TABLES; #查看当前库的所有表SHOW TABLES FROM 库名 #查看某个指定库下的表SHOW CREATE DATABASE 库名 #查看建库语句SHOW CREATE TABLE 库名.表名 #查看建表语句SHOW GRANTS FOR root@'localhost' #查看用户的权限信息SHOW charset; #查看字符集SHOW COLLATION #查看校对规则SHOW PROCESSLIST; #查看数据库连接情况SHOW INDEX FROM #表的索引情况SHOW STATUS #数据库状态查看SHOW STATUS LIKE '%lock%'; #模糊查询数据库某些状态SHOW VARIABLES #查看所有配置信息SHOW VARIABLES LIKE '%lock%'; #查看部分配置信息SHOW ENGINES #查看支持的所有的存储引擎SHOW ENGINE INNODB STATUS\G #查看InnoDB引擎相关的状态信息SHOW BINARY LOGS #列举所有的二进制日志SHOW MASTER STATUS #查看数据库的日志位置信息SHOW BINLOG evnets IN #查看二进制日志事件SHOW SLAVE STATUS \G #查看从库状态SHOW RELAYLOG EVENTS #查看从库relaylog事件信息DESC (SHOW colums FROM city) #查看表的列定义信息
方法二:information_schema视图库
简单介绍一下information_schema视图库
information_schema视图库是MySQL自带的,一个访问数据库元数据的接口,是个视图库。
数据表由元数据和数据行组成。对于文件系统中的一个文件,有大小,权限等信息,也有文件本身的内容信息,大小、权限等信息我们称之为元数据信息。数据表中也有表名、数据类型等元数据信息,也有数据行内容信息。
元数据存储在一种名为基表的数据结构中,MySQL提供DDL,DCL修改元数据,提供show和information_schema查询元数据
information_schema表结构
+-----------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------------+------+-----+---------+-------+
| TABLE_CATALOG | varchar(512) | NO | | | |
| TABLE_SCHEMA | varchar(64) | NO | | | |
| TABLE_NAME | varchar(64) | NO | | | |
| TABLE_TYPE | varchar(64) | NO | | | |
| ENGINE | varchar(64) | YES | | NULL | |
| VERSION | bigint(21) unsigned | YES | | NULL | |
| ROW_FORMAT | varchar(10) | YES | | NULL | |
| TABLE_ROWS | bigint(21) unsigned | YES | | NULL | |
| AVG_ROW_LENGTH | bigint(21) unsigned | YES | | NULL | |
| DATA_LENGTH | bigint(21) unsigned | YES | | NULL | |
| MAX_DATA_LENGTH | bigint(21) unsigned | YES | | NULL | |
| INDEX_LENGTH | bigint(21) unsigned | YES | | NULL | |
| DATA_FREE | bigint(21) unsigned | YES | | NULL | |
| AUTO_INCREMENT | bigint(21) unsigned | YES | | NULL | |
| CREATE_TIME | datetime | YES | | NULL | |
| UPDATE_TIME | datetime | YES | | NULL | |
| CHECK_TIME | datetime | YES | | NULL | |
| TABLE_COLLATION | varchar(32) | YES | | NULL | |
| CHECKSUM | bigint(21) unsigned | YES | | NULL | |
| CREATE_OPTIONS | varchar(255) | YES | | NULL | |
| TABLE_COMMENT | varchar(2048) | NO | | | |
+-----------------+---------------------+------+-----+---------+-------+
每创建一个表,就在information_schema.tables中添加一个记录查询这个表可以获取我们创建的表的其它元数据信息
常用列信息
TABLE_SCHEMA ---->库名
TABLE_NAME ---->表名
ENGINE ---->存储引擎
TABLE_ROWS ---->表的行数
AVG_ROW_LENGTH ---->表中平均行(字节)
INDEX_LENGTH ---->索引占用空间大小(字节)
举例
下面这条命令查询得到的是表名称为name_grade的所有元数据信息
select * from information_schema.tables where name_grade="name_grade";
视图模式
什么是视图
简单地来说,视图就是一个命令到一个字符串的映射,视图的数据结构是一个虚拟表
视图的语法操作格式
创建视图
CREATE VIEW 视图名称 AS 查询SQL语句
删除视图
DROP VIEW 视图名称
修改视图
ALTER VIEW 已存在视图名称 AS SQL语句
使用视图,当作一个表,但是这个表是一个虚拟表,不能进行创建、更新、删除操作,只能查询、
select * from 视图名称