美文网首页半栈工程师
获取数据库元数据

获取数据库元数据

作者: TinyDolphin | 来源:发表于2018-01-05 15:16 被阅读0次

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] ...

相关文章

  • 数据库之元数据——DatabaseMetaData

    元数据 在jdbc中获取数据库的定义,例如:数据库,表,列的定义信息。就用到元数据 在jdbc中可以使用:数据库元...

  • 获取数据库元数据

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

  • Sqlite 源码分析 -- SQLiteOpenHelper

    一、构造方法 二、获取数据库 1. 获取可读写数据库 2. 获取只读数据库 3. 获取数据库逻辑 三、开启数据库并...

  • Sqoop 工作原理

    Sqoop架构 Sqoop import原理 从传统数据库获取元数据信息(schema、table、field、f...

  • 2018-10-09

    ORACLE查询数据库元数据和基本操作, -- 获取表字段 -- user_tab_columns 字段 -- t...

  • Mongodb Study Notes

    图形化工具的使用: 基本操作 获取当前数据库名称 创建数据库 查看数据库状态 获取当前数据库版本 查看数据库相关帮...

  • MySQL---数据库从入门走向大神系列(十一)-Java获取数

    数据库的元信息: 首先介绍一下数据库的元信息(元数据): 元数据(Metadata)是关于数据的数据。 元数据是描...

  • Python操作MySQL数据库

    数据库 Python连接数据库 获取数据库版本信息 #添加数据同时获取刚刚插入数据的ID 修改 根据ID查询 查询...

  • Oracle jdbc获取元数据过程优化

    一、背景 因业务需要,需要使用java程序自动获取oracle数据库的元数据信息(包括表、字段、索引、约束。。。)...

  • MetaData

    MetaData 元数据 指数据库中 库、表、列的定义信息。 DataBaseMetaData 数据库元数据 通...

网友评论

    本文标题:获取数据库元数据

    本文链接:https://www.haomeiwen.com/subject/vmvjnxtx.html