前提了解,mysql创建语句
01
—
什么是元数据
02
—
关系型数据库Mysql、Postgresql
元数据简单介绍
下面主要针对Mysql 和 Postgresql两种关系型数据库进行一些元数据的介绍。那么为什么是这两种关系型数据库呢?因为目前它们是开源的,并且目前互联网的主流就是用它们。所以先介绍这两种数据库的元数据。
这里我们将介绍如何通过元数据获取:所有数据库、表、表字段 等等一些信息。
1、Mysql元数据

-- mysql下常用元数据表SCHEMATA -- 数据库信息表TABLES -- 表记录表COLUMNS -- 表字段记录表
-- 查询mysql实例下,有哪些dbselect SCHEMA_NAME from information_schema.SCHEMATA;-- 查询表所属db\表名称\表创建时间\表更新时间\表描述selectTABLE_SCHEMA,TABLE_NAME,CREATE_TIME,UPDATE_TIME,TABLE_COMMENTfrom information_schema.TABLES;-- 说明:里面还包含表很多信息,例如:表占磁盘大小,表数据量多少-- 查询表所属db\表名称\字段名称\字段顺序\字段类型\字段描述selecttable_schema,table_name,column_name,ordinal_position,data_type,column_commentfrom information_schema.columns;
2、Postgresql元数据(补充postgresql简称:pg库)
-- 在postgresql一个db下,常用的元数据表select * from pg_catalog.pg_database;-- 记录所有db信息select * from pg_catalog.pg_tables; -- 记录当前db下表信息select * from pg_catalog.pg_namespace;-- 记录当前db下命名空间select * from pg_catalog.pg_attribute;-- 记录当前db下字段信息select * from pg_catalog.pg_class; -- 记录当前db下,命名空间、表、字段关系-- 也可以写成 数据库.pg_catalog.pg_database 三层结构-- 如: my_test_db.pg_catalog.pg_database;-- 理解为: 数据库.命名空间.表

-- 查询所有数据库select * from pg_catalog.pg_database;-- 说明:只要查询所有db时,不会受到每个db限制。-- 其它查询都是限制在某个db下的

-- 查询表信息,只能查询到当前连接的db下的所有表select * from pg_catalog.pg_tables;

-- 查询命名空间名称\表名称\表描述selectn.nspname,c.relname,cast(obj_description(c.relfilenode,'pg_class') as varchar) as commentfrompg_catalog.pg_namespace ninner joinpg_class c on n.oid = c.relnamespacewhere c.relkind = 'r' and c.relname not like 'pg_%' and c.relname not like 'sql_%' ;

-- 查询命名空间'stg'下,表'test_2020'的字段\描述\类型\顺序SELECTn.nspname,c.relname,a.attname,col_description(a.attrelid,a.attnum) as comment,format_type(a.atttypid,a.atttypmod) as type,a.attnumFROMpg_namespace ninner join pg_class c on n.nspname ='stg' and n.oid = c.relnamespaceinner join pg_attribute a on c.relname = 'test_2020' and a.attrelid = c.oid and a.attnum>0;

03
—
小结
如果大家喜欢可关注公众号,感谢!

文章转载自数据在此,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




