08-Informatica_schema获取元数据

发布时间 2023-12-27 14:40:46作者: EJW

数据库的元数据即数据库对象的数据,如表,库,的属性数据等,存放在informatica——schema数据库中,已虚拟表的形式存在,只能读不能写

一、 获取元数据的方法

  • 查询INFORMATION_SCHEMA 数据库表。
    • 其中包含MySQL数据库服务器所管理的所有对象的相关数据
  • 使用SHOW 语句。
    • 用于获取数据库和表信息的MySQL专用语句
  • 使用DESCRIBE(或DESC)语句。
    • 用于检查表结构和列属性的快捷方式
  • 使用mysqlshow客户端程序。
    • SHOW 语法的命令行程序

例子

  1. 列出INFORMATION_SCHEMA 数据库中所有的表:
mysql> use information_schema
mysql> show tables;
| CHARACTER_SETS |
| COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS |
| COLUMN_PRIVILEGES |
...
| USER_PRIVILEGES |
| VIEWS
  1. 列出数据库中所有的表
SELECT	TABLE_SCHEMA,table_name,ENGINE FROM information_schema.`TABLES`
  1. 获取world数据库的所有表的存储引擎
SELECT TABLE_NAME, ENGINE
FROM 	 INFORMATION_SCHEMA.TABLES
WHERE  TABLE_SCHEMA = 'world';

  1. 获取数据类型为type的表
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME
FROM   INFORMATION_SCHEMA.COLUMNS
WHERE  DATA_TYPE = 'set';
  1. 获取字符集的默认排序规则
SELECT CHARACTER_SET_NAME, COLLATION_NAME
FROM   INFORMATION_SCHEMA.COLLATIONS
WHERE  IS_DEFAULT = 'Yes';
  1. 获取每个库有多少张表
SELECT TABLE_SCHEMA, COUNT(*)
FROM   INFORMATION_SCHEMA.TABLES
GROUP BY TABLE_SCHEMA;
  1. 备份world库下边所有的表,coucat拼接
mysqldump -uroot -poldboy123 world country >> /bakcup/world_country.bak.sql  # 备份命令

SELECT CONCAT("mysqldump -uroot -poldboy123  ",table_schema," ",table_name," >>","/backup/",table_schema,"_",table_name,".bak.sql") 
FROM information_schema.tables WHERE table_schema='world'; # 拼接命令,双引号为固定类容,逗号后边为可变的表和库

二、MySQL中的show语句


SOHW databases:列出所有数据库


SHOW TABLES:列出默认数据库中的表


SHOW TABLES FROM <database_name>:列出指定数据库中的表


SHOW COLUMNS FROM <table_name>:显示表的列结构 同desc命令


SHOW INDEX FROM <table_name>:显示表中有关索引和索引列的信息


SHOW CHARACTER SET:显示可用的字符集及其默认整理


SHOW COLLATION:显示每个字符集的整理


SHOW STATUS:列出当前数据库状态


SHOW VARIABLES:列出数据库中的参数定义值