广告
返回顶部
首页 > 资讯 > 数据库 >MySQL元数据有哪些
  • 882
分享到

MySQL元数据有哪些

2024-04-02 19:04:59 882人浏览 八月长安
摘要

本篇内容主要讲解“Mysql元数据有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql元数据有哪些”吧!1. MySQL元数据1.1.&nb

本篇内容主要讲解“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:存储过程和功能参数以及存储函数

Ø  InnoDB

INNODB_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> \tmp\Country_Dump.sh

shell> \tmp\mysqldump -uroot -poracle world_innodb Country >>world_innodb.sql

shell> \tmp\mysqldump -uroot -poracle world_innodb Country_Language >>world_innodb.sql

3)       使用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.TABLES

WHERE 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.TABLES

WHERE TABLE_SCHEMA = 'world_innodb';" | mysql -uroot -poracle

1.3.       SHOW 语句

除了INFORMATION_SCHEMA 表之外,MySQL 还支持SHOW 和DESCRIBE 语句,作为访问元数据的备选方式。SHOW 和DESCRIBE 语法不如使用INFORMATION_SCHEMA 查询灵活,但是对于大多数用途,SHOW 和DESCRIBE 语法就足够了。在这些情况下,使用MySQL 特定语法通常会更快速、简单。MySQL支持的SHOW语句有:

SHOW DATABASES

SHOW TABLES

SHOW TABLE STATUS

SHOW CREATE TABLE

SHOW OPEN TABLES

SHOW INDEX

SHOW COLUMNS

SHOW PROCESSLIST

SHOW COLLATION

SHOW CHARACTER SET

SHOW 语句示例:

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 CountryLanguage\G

mysql> SHOW DATABASES LIKE 'm%';

mysql> SHOW COLUMNS FROM Country WHERE `Default` IS NULL;

mysql> SHOW INDEX FROM City\G

mysql> SHOW CHARACTER SET;

mysql> SHOW COLLATION;

1.4.       DESCRIBE 语句

DESCRIBE等效于SHOW COLUMNS,可以缩写为DESC

mysql> DESCRIBE <table_name>;

显示INFORMATION_SCHEMA 表信息

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<user_name> -p<passWord>

+--------------------+

| Databases |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| test |

| world_innodb |

+--------------------+

B.       在使用单个参数的情况下,mysqlshow 将该参数解释为数据库名称,并针对该数据库显示类似于SHOW TABLES 的结果。

shell> mysqlshow world_innodb

C.       在有两个参数的情况下,mysqlshow 将参数解释为数据库和表名称,并针对该表显示类似于SHOW FULL COLUMNS 的结果。

shell> mysqlshow world_innodb City

D.       在有三个参数的情况下,其输出与两个参数的情况相同,不同之处在于:mysqlshow将第三个参数当做列名称,且仅针对该列显示SHOW FULL COLUMNS 输出。

shell> mysqlshow world_innodb City CountryCode

E.        如果命令行中最后的参数包含特殊字符,mysqlshow 会将该参数解释为模式,且仅显示与该模式匹配的名称。特殊字符包括:% 或 *(匹配任一字符序列),以及 _ 或 ?(匹配任一单个字符)。本示例中的命令仅显示那些名称始于w 的数据库。

shell> mysqlshow "w%"

注:这些示例要求在执行命令时使用用户和口令作为参数。

到此,相信大家对“MySQL元数据有哪些”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL元数据有哪些

本文链接: https://www.lsjlt.com/news/63455.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL元数据有哪些
    本篇内容主要讲解“MySQL元数据有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL元数据有哪些”吧!1. MySQL元数据1.1.&nb...
    99+
    2022-10-18
  • mysql数据类型有哪些
    这篇文章主要介绍mysql数据类型有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!首先要了解其支持的数据类型。mysql支持所有标准的sql数据类型,包括三类:数值型,日期型,字...
    99+
    2022-10-18
  • mysql 有哪些数据类型
    本篇文章给大家分享的是有关mysql 有哪些数据类型,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。tinyint , smallint ,me...
    99+
    2022-10-18
  • mysql有哪些数据类型
    这篇文章给大家介绍mysql有哪些数据类型,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、数值类型数值是诸如32 或153.4 这样的值。mysql支持科学表示法,科学表示法由整数或浮点数后跟“e”或“E”、一个符号...
    99+
    2023-06-14
  • mysql数据库有哪些特点
    这篇文章主要为大家展示了“mysql数据库有哪些特点”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql数据库有哪些特点”这篇文章吧。是开源数据库,使用C和C++编写。能够在许多不同的平台上...
    99+
    2023-06-25
  • MySQL数据库有哪些特性
    本篇内容介绍了“MySQL数据库有哪些特性”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  1.使用C和C...
    99+
    2022-10-18
  • MySQL数据库铁律有哪些
    这篇文章给大家分享的是有关MySQL数据库铁律有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。好的数据库规范有助于减少软件实现的复杂度,降低沟通成本,本铁律主要涵盖了建库建表...
    99+
    2022-10-18
  • mysql数据库引擎有哪些
    这篇文章给大家介绍mysql数据库引擎有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。  查看数据库引擎命令:SHOW ENGINES  ISAM  ISAM是一个定义明确且历经时...
    99+
    2022-10-18
  • MySQl数据库目录有哪些
    本篇文章为大家展示了MySQl数据库目录有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、可使用 mysqladmin 变量直接从服务器中得到数据目录路径名。...
    99+
    2022-10-18
  • MySQL数据库分支有哪些
    MySQL数据库分支有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。  MySQL是历史上最受欢迎的免费开源程序之一。它是成千上万个网站的...
    99+
    2022-10-18
  • mysql数据类型都有哪些
    本篇文章给大家分享的是有关mysql数据类型都有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 数值类...
    99+
    2022-10-18
  • Mysql的数据类型有哪些
    这篇文章主要讲解了“Mysql的数据类型有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mysql的数据类型有哪些”吧! Varchar 对每个英文(...
    99+
    2022-10-18
  • mysql数据库有哪些文件
    本篇内容介绍了“mysql数据库有哪些文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.1. ...
    99+
    2022-10-18
  • MySQL数据库有哪些规范
    今天就跟大家聊聊有关MySQL数据库有哪些规范,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。基础规范(1) 必须使用InnoDB存储引擎说明:支持事...
    99+
    2022-10-18
  • MySQL数据库规范有哪些
    MySQL数据库规范有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、数据库命令规范 所有数据库对象名称必须使用小写字母并...
    99+
    2022-10-18
  • MySQL数据库中有哪些锁
    这篇文章主要介绍“MySQL数据库中有哪些锁”,在日常操作中,相信很多人在MySQL数据库中有哪些锁问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL数据库中有哪些锁”...
    99+
    2022-10-18
  • mysql中有哪些数据类型
    这篇文章给大家分享的是有关mysql中有哪些数据类型的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。mysql数据类型有:BOOL、TINY INT、INT、BIG INT、FLO...
    99+
    2022-10-18
  • MySQL的数据目录有哪些
    本文小编为大家详细介绍“MySQL的数据目录有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL的数据目录有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 ...
    99+
    2023-02-03
    mysql
  • Mysql数据库的数据模型有哪些?
    今天小编就为大家带来一篇介绍Mysql数据库的数据模型的文章。小编觉得挺实用的,为此分享给大家做个参考。一起跟随小编过来看看吧。层次模型层次模型是数据库系统最早使用的一种模型,它的数据结构是一棵“有向树”。...
    99+
    2022-10-18
  • MySQL数据中有哪些数据隔离级别
    小编给大家分享一下MySQL数据中有哪些数据隔离级别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!    &...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作