如果想了解某个数据库,首先就需要知道,它的数据字典信息的存放,这样就可以查看到一些操作对数据库字典信息的更改,如果创建一索引,查看索引的类型等其他信息。
1、常用字典表
mysql的字典信息都存放在information_schema库中,常用的字典表有:
INFORMATION_SCHEMA.SCHEMATA --数据库中所有数据库信息
INFORMATION_SCHEMA.TABLES --存放数据库中所有数据库表信息
INFORMATION_SCHEMA.COLUMNS --所有数据库表的列信息
INFORMATION_SCHEMA.STATISTICS --存放索引信息
INFORMATION_SCHEMA.USER_PRIVILEGES --
INFORMATION_SCHEMA.SCHEMA_PRIVILEGES
INFORMATION_SCHEMA.TABLE_PRIVILEGES
INFORMATION_SCHEMA.COLUMN_PRIVILEGES
INFORMATION_SCHEMA.CHARACTER_SETS
INFORMATION_SCHEMA.COLLATIONS
INFORMATION_SCHEMA.COLLATION_CHARACTER_SET_APPLICABILITY
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
INFORMATION_SCHEMA.KEY_COLUMN_USAGE ---存放数据库里所有具有约束的键信息
INFORMATION_SCHEMA.ROUTINES
INFORMATION_SCHEMA.VIEWS --存放所有视图信息
INFORMATION_SCHEMA.TRIGGERS --触发器信息
而对于学习源码的码农来讲,可能经常使用的是其中的tables、statistics,之所以这两张常用,是因为在查看执行计划时,需要用到什么索引,以及索引的类型,这对于数据库的优化来讲,非常重要,而我也主要学习查询优化这部分。对于其他一些模块的学习,如安全等,可能使用的字典表信息则是其他表。
2、索引创建和删除
为什么会提到索引的创建和删除呢,主要是因为,创建索引和删除索引是我以后需要经常执行的SQL,这部分语法,与一些常用数据库存在一些差别,如ORACLE,
mysql创建索引的简单语句为:create index idx_name on table_name(column_lst);
删除索引,则存在很大不同之处:drop index idx_name from table_name;
与一般SQL语句的删除语句相比,多了后面的from子句;
对于其他一些SQL语句的书写,不做介绍,可以参数mysql手册;