mysql获取数据集元数据_获取数据库元数据

MySQL 提供了多种获取数据库元数据(有关数据库的信息与它里面的各种对象)的方法:

各种 SHOW 语句,如 SHOW DATABASES 或 SHOW TABLES;

INFORMATION_SCHEMA 数据库里的表;

命令行程序,如 mysqlshow 或 mysqldump。

使用 SHOW 语句获取元数据

-- 列出可以访问的数据库

SHOW DATABASES ;

-- 显示数据库的 CREATE DATABASE 语句

SHOW CREATE DATABASE db_name;

-- 列出默认数据库或给定数据库里的表

SHOW TABLES;

SHOW TABLES FROM db_name;

-- SHOW TABLES 语句无法显示出 temporary 表

-- 显示表的 CREATE TABLE 语句

SHOW CREATE TABLE tbl_name;

-- 显示表里的列或索引信息

-- SHOW COLUMNS 与 DESCRIBE tbl_name & EXPLAIN tbl_name 同一个意思

SHOW COLUMNS FROM tbl_name;

SHOW INDEX FROM tbl_name;

-- 显示默认数据库或某给定数据库里的表描述信息

SHOW TABLE STATUS;

SHOW TABLE STATUS FROM db_name;

-- 把 tbl_name 表里面列的名字以"s" 开头的所用列都显示出来

SHOW COLUMNS FROM tbl_name LIKE 's%';

-- 在应用程序中识别出某个给定的表是否存在

SHOW TABLES LIKE 'student';

SHOW TABLES FROM db_name LIKE 'tbl_name';

SELECT count(*) FROM tbl_name; -- 最适合 MyISAM 表,不适合 InnoDB 表,因为会全表扫描

SELECT * FROM tbl_name WHERE FALSE ; -- 通用,对于不同的存储引擎,都执行都很快

借助 INFORMATION_SCHEMA 获取元数据

-- 查询 INFORMATION_SCHEMA 库中包含了哪些表

SHOW TABLES IN information_schema;

-- SCHEMATA、TABLES、VIEWS、ROUTINES、TRIGGERS、EVENTS、PARAMETERS、PARTITIONS、COLUMNS

-- 以上是与数据库、表、视图、存储过程、触发器、事件、表分区和列有关的信息

-- FILES

-- 与用于存储表空间数据的那些文件有关的信息

-- TABLE_CONSTRAINTS、KEY_COLUMN_USAGE:

-- 与具有约束条件的表和列有关的信息

-- STATISTICS

-- 与表索引特性有关的信息

-- REFERENTIAL_CONSTRAINTS

-- 与外键有关的信息

-- CHARACTER_SETS、COLLATIONS、COLLATION_CHARACTER_SET_APPLICABILITY

-- 与所支持的字符集、每种字符集的排序规则,以及每种排序规则与其字符集之间的映射关系有关的信息

-- ENGINES、PLUGINS

-- 与存储引擎和服务器插件有关的信息

-- USER_PRIVILEGES、SCHEMA_PRIVILEGES、TABLE_PRIVILEGES、COLUMN_PRIVILEGES

-- 与全局、数据库、表和列的权限分配有关的信息,分别来自于 mysql 数据库里的 user、db、tables_priv 和 column_priv 表

-- GLOBAL_VARIABLES、SESSION_VARIABLES、GLOBAL_STATUS、SESSION_STATUS

-- 全局和会话的系统变量值和状态变量值

-- PROCESSLIST

-- 与服务器内的执行线程有关的信息

-- 查询 information_schema 里表都包含哪些列?

DESCRIBE information_schema.schemata;

-- 测试某个特定的表是否存在:1 存在,0 不存在

SELECT count(*) FROM information_schema.tables

WHERE table_schema = 'sampdb' AND table_name='member';

-- 检查某个表所使用的是哪种存储引擎

SELECT engine FROM information_schema.tables

WHERE table_schema = 'sampdb' AND table_name='student';

从命令行获取元数据

windows 命令行或者 Linux 命令行

在使用 mysqlshow 和 mysqldump 时,请记住要指定必要的链接参数选项,如 --host、--user 或 --password

-- 列出服务器所管理的数据库

mysqlshow

-- 列出数据库里的表

mysqlshow db_name

-- 显示表里的列信息

mysqlshow db_name tbl_name

-- 显示表里的索引信息

mysqlshow --keys db_name tbl_name

-- 显示数据库里所有表的描述性信息

mysqlshow --status db_name

-- 客户端程序 mysqldump 能够让你看到 CREATE TABLE 语句所定义的表结构

mysqldump --no-data db_name [tbl_name] ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值