这个系列的文章主要是为了能够让自己了解MySQL5.7的一些系统表,统一做一下备注和使用,也希望分享出来让大家能够有一点点的受益。
1:COLUMNS
老规矩。查一下这个表,看一下记录,由于这个是看表的结构的我们就拿qiandai数据库的一张表作为例子。
root@localhost [information_schema]>select * from COLUMNS where TABLE_SCHEMA='qiandai' and TABLE_NAME= 'articles'\G;
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: qiandai
TABLE_NAME: articles
COLUMN_NAME: FTS_DOC_ID
ORDINAL_POSITION: 1
COLUMN_DEFAULT: NULL
IS_NULLABLE: NO
DATA_TYPE: bigint
CHARACTER_MAXIMUM_LENGTH: NULL
CHARACTER_OCTET_LENGTH: NULL
NUMERIC_PRECISION: 20
NUMERIC_SCALE: 0
DATETIME_PRECISION: NULL
CHARACTER_SET_NAME: NULL
COLLATION_NAME: NULL
COLUMN_TYPE: bigint(20) unsigned
COLUMN_KEY: PRI
EXTRA: auto_increment
PRIVILEGES: select,insert,update,references
COLUMN_COMMENT:
GENERATION_EXPRESSION:
*************************** 2. row ***************************
我们可以通过TABLE_SCHEMA和TABLE_NAME定位到某一张表进行查看,这样还是很方便能看到一张表的记录的,不过如果要查看表结构的话我们一板也可以通过以下两种方式查看:
show create table tablename
desc tablename
以上两种方式都可以满足基本的查看表结构的需求,为什么还要有一张系统表来记录呢,首先这个表更加的全面,其次MySQL本身内部也是要有一个统计信息来统计列的。我们看一下这个表记录的信息,字段名,所属于的类型,属于哪张表,在表中创建的时候排序是第几位等信息。贴一下官网对于这张表的解释:
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
TABLE_CATALOG |
|
def |
TABLE_SCHEMA |
|
|
TABLE_NAME |
|
|
COLUMN_NAME |
Field |
|
ORDINAL_POSITION |
|
see notes |
COLUMN_DEFAULT |
Default |
|
IS_NULLABLE |
Null |
|
DATA_TYPE |
Type |
|
CHARACTER_MAXIMUM_LENGTH |
Type |
|
CHARACTER_OCTET_LENGTH |
|
|
NUMERIC_PRECISION |
Type |
|
NUMERIC_SCALE |
Type |
|
DATETIME_PRECISION |
Type |
|
CHARACTER_SET_NAME |
|
|
COLLATION_NAME |
Collation |
|
COLUMN_TYPE |
Type |
MySQL extension |
COLUMN_KEY |
Key |
MySQL extension |
EXTRA |
Extra |
MySQL extension |
PRIVILEGES |
Privileges |
MySQL extension |
COLUMN_COMMENT |
Comment |
MySQL extension |
GENERATION_EXPRESSION |
|
MySQL extension |
CHARACTER_OCTET_LENGTH 和CHARACTER_MAXIMUM_LENGTH大部分情况是相同的,除非是多字节字符集,一般情况下,了解这些信息也算足够一个DBA是用了,不过个人还是比较建议使用desc来查看表结构。
2:COLUMN_PRIVILEGES
我们看一下授权信息:
第一步:授权
grant select on qiandai.articles(title) to 'replication'@'%';
授权以后就会有信息出现了,一般情况这个表是空的。
root@localhost [information_schema]>select * from COLUMN_PRIVILEGES limit 10;
+------------------------------+---------------+--------------+------------+-------------+----------------+--------------+
| GRANTEE | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | PRIVILEGE_TYPE | IS_GRANTABLE |
+------------------------------+---------------+--------------+------------+-------------+----------------+--------------+
| 'replication'@'172.16.88.42' | def | qiandai | articles | title | SELECT | NO |
+------------------------------+---------------+--------------+------------+-------------+----------------+--------------+
我们这样看的话很清楚就能看到表授权的用户的对象,那张表那个库以及授予的是什么权限,如果授权的时候加上with grant option的话,我们可以看得到PRIVILEGE_TYPE这个值必须是YES,筛选的时候可以根据TABLE_NAME 和COLUMN_NAME 进行筛选,比如:
select * from COLUMN_PRIVILEGES where TABLE_NAME =‘’ and COLUMN_NAME=‘’;
3:ENGINES
老规矩看一下数据
root@localhost [information_schema]>select * from ENGINES limit 10;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| ENGINE | SUPPORT | COMMENT | TRANSACTIONS | XA | SAVEPOINTS |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
引擎类型,是否支持这个引擎,描述,是否支持事物,是否支持分布式事务,是否能够支持事物的回滚点。这个就比较简了。不过多的解释了。
4:EVENTS
看一下记录吧筒子们,我只查询一条就可以了,因为这个记录的是MySQL的事件,一般情况我们是很少使用事件的,中间有一些加*因为是涉及到公司的东西,不过会解释一下,在后面标注上汉字解释。
mysql> select * from EVENTS limit 1\G;
*************************** 1. row ***************************
EVENT_CATALOG: def
EVENT_SCHEMA: ******所在的数据库
EVENT_NAME: name 事件的名字
DEFINER: root 哪一个用户定义的这个事件
TIME_ZONE: SYSTEM 该事件的时区,这是用于调度事件的时区,这是有效的事件中,因为它执行。默认值是系统。
EVENT_BODY: SQL MYSQL5.7这个记录统一为SQL
EVENT_DEFINITION: call day_statistic() 表示事件要做什么操作,这个很好理解,就是启动day_statistic这个方法,做一系列的处理
EVENT_TYPE: RECURRING 本次活动的重复类型,是ONE TIME(瞬态)或重复(重复) 。
EXECUTE_AT: NULL 单次的话就是定义的时间或最后一次修改事件,如果事件的时序由一个EVERY子句代替AT子句值就是NULL
INTERVAL_VALUE: 1 对于周期性事件,该列包含事件的EVERY子句的数字部分。
INTERVAL_FIELD: DAY 对于周期性事件,该列包含管理事件的时机了EVERY子句的单位部分。如年月日天等
SQL_MODE: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
STARTS: 2016-08-16 01:00:00 对于重复发生的事件,其定义包括STARTS子句,该列包含相应的DATETIME值。
ENDS: NULL
STATUS: ENABLED 有以下三个值 ENABLED, DISABLED, or SLAVESIDE_DISABLED.
ON_COMPLETION: NOT PRESERVE 是保留还是不保留
CREATED: 2016-08-15 05:11:12
LAST_ALTERED: 2016-08-15 05:11:12
LAST_EXECUTED: 2016-08-28 01:00:00
EVENT_COMMENT: 注释文本
ORIGINATOR: 1 在其上创建事件的MySQL服务器的服务器ID,也就是server ID ;在复制中使用。缺省值是0
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
DATABASE_COLLATION: utf8_general_ci
1 row in set (0.00 sec)
好了,我们已经解释完了,接下来看一下创建一个事件怎么创建吧,也就给个例子:
CREATE DEFINER=`root`@`%` EVENT `money_day_statistic` ON SCHEDULE EVERY 1 DAY STARTS '2016-08-16 01:00:00' ON COMPLETION NOT PRESERVE ENABLE DO call day_statistic()
这个语句就是对应上面的查询语句。
最后看一下上面的表结构:
COLUMNS,EVENTS的存储引擎是MyISAM,这是为了长久的保存,不能够重启后就没有啊
COLUMN_PRIVILEGES,ENGINES的存储引擎是MEMORY,引擎也是一样的按照版本自动可以生成,至于列为什么会是MEMORY,我想大概是因为这样对于权限的控制都是在MySQL的SQL层。每次重启应该是会从其他user表读取到内存,所以他只是在SQL层做一些控制。大概就是这个样子。
- MySQL(二)MySQL中的存储引擎
前言 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建.查询.更新和删除数据.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎,还可以 ...
- [MySQL Reference Manual]15. 其他存储引擎
15. 其他存储引擎 15. 其他存储引擎 15.1 设置存储引擎 15.2 MyISAM存储引擎 15.2.1 MyISAM启动选项 15.2.2 Key的空间要求 15.2.3 MyISAM表存储 ...
- MySql存储引擎介绍
MySQL5.5以后默认使用InnoDB存储引擎,其中InnoDB和BDB提供事务安全表,其它存储引擎都是非事务安全表.若要修改默认引擎,可以修改配置文件中的default-storage-engin ...
- MySQL存储引擎通常有哪3种?各自分别有什么特点?应用场景是哪些?
MySQL5.5以后默认使用InnoDB存储引擎,其中InnoDB和BDB提供事务安全表,其它存储引擎都是非事务安全表.若要修改默认引擎,可以修改配置文件中的default-storage-engin ...
- MYSQL存储引擎介绍--应用场景
MySQL存储引擎通常有哪3种?各自分别有什么特点?应用场景是哪些? MySQL5.5以后默认使用InnoDB存储引擎,其中InnoDB和BDB提供事务安全表,其它存储引擎都是非事务安全表.若要修改默 ...
- sql 入门经典(第五版) Ryan Stephens 学习笔记 后续——存储引擎
一.引擎基础 1 查看系统支持的存储引擎 show engines; 2 查看表使用的存储引擎两种方法: a.show table status from database_name where na ...
- MySQL存储引擎对比
MySQL存储引擎对比 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL的存储引擎 大家应该知道MySQL的存储引擎应该是表级别的概念,因为我们无法再创建databas ...
- MySQL数据库篇之存储引擎
主要内容: 一.数据引擎 二.MySQL支持的存储引擎 三.使用存储引擎 1️⃣ 什么是存储引擎? MySQL中建立的库----> 文件夹,库中建立的表----->文件. 现实生活中我们用 ...
- mysql三-1:理解存储引擎
一.什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制:比如处理文本用txt类型,处 ...
随机推荐
- 基于cocos2d-x的Android游戏中使用fmod音频引擎
cocos2d-x的音频引擎是cocosDenshion, 它的Android版比较弱, 只能播放一个背景音乐和些许音效, 如果要实现稍微复杂一点的音频播放, 比如同时播放几个音轨就不能了. 这一点远 ...
- SQLite手工注入方法小结
SQLite 官网下载:www.sqlite.org/download.html sqlite管理工具:http://www.yunqa.de/delphi/products/sqlitespy/in ...
- MYSQL分库分表和不停机更改表结构
在MYSQL分库分表中我们一般是基于数据量比较大的时间对mysql数据库一种优化的做法,下面我简单的介绍一下mysql分表与分库的简单做法. .分库分表 很明显,一个主表(也就是很重要的表,例如用户表 ...
- JavaWeb用Jdbc操作MySql数据库(二)
一.仍然使用前面的环境和示例数据库. 二.建立发出注册请求的页面index3.jsp. <%@ page language="java" import="java. ...
- JVM byte code
http://blog.jamesdbloom.com/JVMInternals.html#constant_pool http://grepcode.com/file/repository.grep ...
- Artificial-Intelligence BOOKs
All of Statistics: A Concise Course in Statistical Inference The Elements of Statistical Learning:Da ...
- 为什么在使用get时,Properties对象总是忽略默认值?
不应该对Properties对象调用get方法:而应该调用getProperty方法.许多人认为二者的区别是getProperty声明了返回值为String类型,而get声明的返回值类型为Object ...
- Android服务之Service(其一)
android中服务是运行在后台的东西,级别与activity差不多.既然说service是运行在后台的服务,那么它就是不可见的,没有界面的东西.你可以启动一个服务Service来播放音乐,或者记录你 ...
- 初识WebSocket协议
1.什么是WebSocket协议 RFC6455文档的表述如下: The WebSocket Protocol enables two-way communication between a clie ...
- Win8 WinRT将替换Win32 API程序员何去何从?
win8 新引入了称为WinRT的核心API.支持使用C/C++..NET或JavaScript来开发Metro风格的应用.这些应用自动获得硬件加速和高级电源管理的功能.现有的Silverlight和 ...