本篇内容主要讲解“MySQL元数据有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL元数据有哪些”吧!1.MySQL元数据1.1.
元数据访问方法数据库是数据的结构化集合。元数据是“有关数据的数据”。MySQL
通过以下方法提供对元数据的访问:INFORMATION_SCHEMA:MySQL
服务器包含一个名为INFORMATION_SCHEMA
的数据库(模式)的数据字典,其中包含许多显示为表的对象。SHOW
语句:用于获取服务器统计信息、模式和模式对象的相关数据的专用语法。
SHOW DATABASES
和SHOW TABLES返回包含数据库和表名免费主机域名的列表;SHOW COLUMNS生成表中列的定义;使用SHOW
语句需要有SELECT权限。DESCRIBE:可用于查询表结构和列属性的SQL
语句快捷方式mysqlshow:用作指向一些SHOW
语句的命令行命令。您设置的参数将决定要显示的信息,然后程序会发出相应的SHOW
语句并显示语句的结果。下面将详细介绍这4中访问元数据的方法。1.2.
INFORMATION_SCHEMA
数据库INFORMATION_SCHEMA
数据库充当数据库元数据的中央系统信息库,包含模式和模式对象、服务器统计信息(状态变量、设置、连接)。它未存储在硬盘上,从这个方面来看,它是“虚拟数据库”;但是,它与其他任何数据库一样包含表,与其他任何表一样可以使用SELECT
来访问其中表的内容1)
查询INFORMATION_SCHEMA
中的表mysql> SELECT TABLE_NAME-> FROM INFORMATION_SCHEMA.TABLES-> WHERE TABLE_SCHEMA = ‘information_schema’-> ORDER BY TABLE_NAME;INFORMATION_SCHEMA
表包含以下类型的信息:
表信息COLUMNS:表和视图中的列ENGINES:存储引擎SCHEMATA:数据库TABLES:数据库中的表VIEWS:数据库中的视图
分区PARTITIONS:表分区FILES:存储MySQL NDB
磁盘数据表的文件
权限COLUMN_PRIVILEGES:MySQL
用户帐户所拥有的列权限SCHEMA_PRIVILEGES:MySQL
用户帐户所拥有的数据库权限TABLE_PRIVILEGES:MySQL
用户帐户所拥有的表权限USER_PRIVILEGES:MySQL
用户帐户所拥有的全局权限
字符集支持CHARACTER_SETS:可用的字符集COLLATIONS:每个字符集的整理COLLATION_CHARACTER_SET_APPLICABILITY:适用于特定字符集的整理
约束和索引KEY_COLUMN_USAGE:关键列的约束REFERENTIAL_CONSTRAINTS:外键STATISTICS:表索引TABLE_CONSTRAINTS:表的约束
服务器设置和状态KEY_COLUMN_USAGE:约束GLOBAL_STATUS:所有MySQL
连接的状态值GLOBAL_VARIABLES:用于新的MySQL
连接的值PLUGINS:服务器插件PROCESSLIST:指示哪些线程正在运行SESSION_STATUS:当前MySQL
连接的状态值SESSION_VARIABLES:当前MySQL
连接的生效值
例程及相关信息EVENTS:预定事件ROUTINES:存储过程和功能TRIGGERS:数据库中的触发器PARAMETERS:存储过程和功能参数以及存储函数
InnoDBINNODB_CMP
和INNODB_CMP_RESET:对压缩的InnoDB
表的相关操作的状态INNODB_CMPMEM
和INNODB_CMPMEM_RESET:InnoDB
缓冲池中压缩页面的状态INNODB_LOCKS:InnoDB
事务所请求和持有的每个锁INNODB_LOCK_WAITS:每个阻塞的InnoDB
事务的一个或多个行锁INNODB_TRX:当前正在InnoDB
内部执行的所有事务TABLESPACES:活动的表空间有关INFORMATION_SCHEMA
表的更多信息,请参阅《MySQL
参考手册》:http://dev.mysql.com/doc/refman/5.6/en/information-schema.html。例如:查询INFORMATION_SCHEMA
数据库表列:mysql> SELECT COLUMN_NAME-> FROM INFORMATION_SCHEMA.COLUMNS-> WHERE TABLE_SCHEMA = ‘INFORMATION_SCHEMA’-> AND TABLE_NAME = ‘VIEWS’;当使用SELECT
语句在INFORMATION_SCHEMA
表中检索元数据时,您可以使用任何常见的SELECT
功能。通过使用CREATE TABLE…SELECT
语句或INSERT…SELECT
语句,您可以将INFORMATION_SCHEMA
查询的结果检索到其他表中。您可以保存结果,以便稍后在其他语句中使用它们。A.
显示用于给定数据库中表的存储引擎mysql> SELECT TABLE_NAME, ENGINE-> FROM INFORMATION_SCHEMA.TABLES-> WHERE TABLE_SCHEMA = ‘world_innodb’;B.
查找所有包含SET
列的表mysql> SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME-> FROM INFORMATION_SCHEMA.COLUMNS-> WHERE DATA_TYPE = ‘set’;C.
显示每个字符集的默认整理mysql> SELECT CHARACTER_SET_NAME, COLLATION_NAME-> FROM INFORMATION_SCHEMA.COLLATIONS-> WHERE IS_DEFAULT = ‘Yes’;D.
显示每个数据库中表的编号mysql> SELECT TABLE_SCHEMA, COUNT(*)-> FROM INFORMATION_SCHEMA.TABLES-> GROUP BY TABLE_SCHEMA;E.
INFORMATION_SCHEMA
表是只读的,无法用INSERT、DELETE
或UPDATE
之类的语句进行修改。如果执行这些类型的语句以尝试更改INFORMATION_SCHEMA
表中的数据,服务器将生成错误。mysql> DELETE FROM INFORMATION_SCHEMA.VIEWS;ERROR 1044 (42000): Access denied for user’root’@’localhost’ to database ‘information_schema’2)
使用INFORMATION_SCHEMA
表创建Shell
命令使用CONCAT
功能可以将字符串内容结合起来创建可在命令行中执行的shell
脚本。如示例所示,SQL
语句将生成一条输出,仅转储world_innodb
数据库中那些以单词“Country”开始的的表。输出将生成可以在shell
命令行上正确执行的shell
脚本。下一步是将此输出存储在一个可在shell
命令行中执行的批处理文件中。这通过添加子句INTO OUTFILE
来完成:mysql> SELECT CONCAT(“mysqldump -uroot -p “,-> TABLE_SCHEMA, ” “,TABLE_NAME, ” >> “,TABLE_SCHEMA,”.sql”)-> FROM TABLES WHERE TABLE_NAME LIKE ‘Country%’-> INTO OUTFILE ‘/Country_Dump.sh’;然后可以在命令行中执行此文件,命令行将运行示例的两个mysqldump
命令:shell> tmpCountry_Dump.shshell> tmpmysqldump -uroot -poracle world_innodb Country >>world_innodb.sqlshell> tmpmysqldump -uroot -poracle world_innodb Country_Language >>world_innodb.sql3)
使用INFORMATION_SCHEMA
表创建SQL
语句使用mysql
命令创建SQL
语句,使用-e
选项输入SELECT/CONCAT
语句:shell> mysql -uroot -p –silent –skip-column-names -e”SELECT CONCAT(‘CREATE TABLE ‘, TABLE_SCHEMA, ‘.’,TABLE_NAME, ‘_backup LIKE ‘, TABLE_SCHEMA, ‘.’,TABLE_NAME, ‘;’) FROM INFORMATION_SCHEMA.TABLESWHERE TABLE_SCHEMA = ‘world_innodb’;”将导致以下语句发送到标准输出:CREATE TABLE world_innodb.City_backup LIKE world_innodb.City;CREATE TABLE world_innodb.Country_backup LIKE world_innodb.Country_backup;CREATE TABLE world_innodb.CountryLanguage_backup LIKE world_innodb.CountryLanguage_backup;INFORMATION_SCHEMA
表可创建可在命令行中执行的SQL
语句。本示例使用mysql
命令执行了一个语句,以制作world_innodb
数据库中所有表的精确副本。此命令将创建SQL
输出,如果执行该输出,将基于world_innodb
数据库中的表创建三个备份表。注:–silent
命令在输出中删除列标题,–skip-column-names
命令删除输出中的格式(使输出类似于表的格式)。这两个命令用来确保对命令自身的解释是正确的,没有任何干扰执行的外部格式或标题行问题。添加管道符号(|)
并随之执行mysql
命令会将这些SQL
语句发送到MySQL
服务器以便执行:shell> mysql -uroot -p –silent –skip-column-names -e “SELECT CONCAT(‘CREATE TABLE ‘, TABLE_SCHEMA, ‘.’, TABLE_NAME, ‘_backup LIKE ‘, TABLE_SCHEMA, ‘.’, TABLE_NAME, ‘;’)FROM INFORMATION_SCHEMA.TABLESWHERE TABLE_SCHEMA = ‘world_innodb’;” | mysql -uroot -poracle1.3.
SHOW
语句除了INFORMATION_SCHEMA
表之外,MySQL
还支持SHOW
和DESCRIBE
语句,作为访问元数据的备选方式。SHOW
和DESCRIBE
语法不如使用INFORMATION_SCHEMA
查询灵活,但是对于大多数用途,SHOW
和DESCRIBE
语法就足够了。在这些情况下,使用MySQL
特定语法通常会更快速、简单。MySQL支持的SHOW语句有:SHOW DATABASESSHOW TABLESSHOW TABLE STATUSSHOW CREATE TABLESHOW OPEN TABLESSHOW INDEXSHOW COLUMNSSHOW PROCESSLISTSHOW COLLATIONSHOW CHARACTER SETSHOW
语句示例:mysql> SHOW DATABASES;+——————–+| Database |+——————–+| information_schema || mysql || test || world_innodb |+——————–+mysql> SHOW TABLES;mysql> SHOW TABLES FROM mysql;mysql> SHOW TABLES FROM INFORMATION_SCHEMA;mysql> SHOW COLUMNS FROM CountryLanguage;mysql> SHOW FULL COLUMNS FROM CountryLanguageGmysql> SHOW DATABASES LIKE ‘m%’;mysql> SHOW COLUMNS FROM Country WHERE `Default` IS NULL;mysql> SHOW INDEX FROM CityGmysql> SHOW CHARACTER SET;mysql> SHOW COLLATION;1.4.
DESCRIBE
语句DESCRIBE等效于SHOW COLUMNS,可以缩免费主机域名写为DESCmysql> DESCRIBE
表信息mysql> DESCRIBE INFORMATION_SCHEMA.CHARACTER_SETS;+———————-+————-+——+—–+———+——-+| Field | Type | Null | Key | Default | Extra |+———————-+————-+——+—–+———+——-+| CHARACTER_SET_NAME | varchar(64) | NO | | | || DEFAULT_COLLATE_NAME | varchar(64) | NO | | | || DESCRIPTION | varchar(60) | NO | | | || MAXLEN | bigint(3) | NO | | 0 | |+———————-+————-+——+—–+———+——-+例如:mysql> DESCRIBE table_name;mysql> DESC table_name;
以下语句等效于上述DESCRIBE/DESC
示例:mysql> SHOW COLUMNS FROM table_name;
但是,SHOW COLUMNS
支持可选的LIKE
和WHERE
子句,而DESCRIBE
不支持。EXPLAIN
:当指定表名称作为参数时,EXPLAIN
等效于DESCRIBE:mysql> EXPLAIN table_name;1.5.
mysqlshow命令mysqlshow
为各种格式的SHOW
语句提供了一个命令行界面,这些语句用于列出数据库的名称、数据库中的表或有关表列或索引的信息。mysqlshow
的选项部分可包含任一标准连接参数选项,例如–host
或–user。如果默认连接参数不适合,则必须提供选项。mysqlshow
也接受特定于其自身运行的选项。使用–help
选项调用mysqlshow
可查看其选项的完整列表。mysqlshow
所执行的操作取决于已提供的非选项参数的数量。mysqlshow
示例显示所有数据库或特定数据库、表和/或列的相关信息:A.
在没有参数的情况下,mysqlshow
将显示类似于SHOW DATABASES
的结果shell> mysqlshow -u
在使用单个参数的情况下,mysqlshow
将该参数解释为数据库名称,并针对该数据库显示类似于SHOW TABLES
的结果。shell> mysqlshow world_innodbC.
在有两个参数的情况下,mysqlshow
将参数解释为数据库和表名称,并针对该表显示类似于SHOW FULL COLUMNS
的结果。shell> mysqlshow world_innodb CityD.
在有三个参数的情况下,其输出与两个参数的情况相同,不同之处在于:mysqlshow将第三个参数当做列名称,且仅针对该列显示SHOW FULL COLUMNS
输出。shell> mysqlshow world_innodb City CountryCodeE.
如果命令行中最后的参数包含特殊字符,mysqlshow
会将该参数解释为模式,且仅显示与该模式匹配的名称。特殊字符包括:%
或
*(匹配任一字符序列),以及
_
或
?(匹配任一单个字符)。本示例中的命令仅显示那些名称始于w
的数据库。shell> mysqlshow “w%”注:这些示例要求在执行命令时使用用户和口令作为参数。到此,相信大家对“MySQL元数据有哪些”有了更深的了解,不妨来实际操作一番吧!这里是云技术网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
本篇内容介绍了“rman换磁盘迁移的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!I先迁移数据文件1 准备新插一块盘,并且格式化 ,mount上/de…