什么是mysql中的元数据

一:什么是元数据?

所谓元数据,就是表示数据的数据,这些数据五花八门,总之,只要不是我们存储到数据库里的数据,大多都可以理解为元数据。描述数据库的任何数据—作为数据库内容的对立面—是元数据。因此,列名、数据库名、用户名、版本名以及从SHOW语句得到的结果中的大部分字符串是元数据。还包括INFORMATION_SCHEMA数据库中的表中的内容,因为定义的那些表存储关于数据库对象的信息。

二:如何来获取这些元数据呢?

总的来说,有三种思路,第一种,各种show,第二种,各种select,第三种,是mysql的命令行下的命令,不是sql语句。

1:show

我们首先看第一种,这里我列举一下大家比较熟悉的show语句的用法,其实咱们经常用show来查看信息,比如:

[sql]
show databases;  --列出所有数据库  
show create database db_name;  --查看数据库的DDL  
show tables; --列出默认数据库的所有表  
show tables from db_name;  --列出指定数据库的所有表  
show table status;  --查看表的描述性信息  
show table status from db_name;  
show create table tbl_name;  --查看表的DDL  
show columns from tbl_name;  --查看列信息  
show index from tbl_name;  --查看索引信息

有几种show语句还可以带有一条like ‘pattern‘字句,用来限制语句的输出范围,其中‘pattern‘允许包含‘%‘和‘_‘通配符,比如下面这条语句返回domaininfo表中以s开头的所有列:

show columns from domaininfo like ‘s%‘;

2:select

像上面这张支持like字句的所有show都可以改写成一条where字句,如:

show columns from domaininfo where field=‘sysdomain‘;

注:desc tbl_name和explain tbl_name的效果和show columns from tbl_name一致。

从INFORMATION_SCHEMA数据库里查询相关表

INFORMATION_SCHEMA是MySQL自带的一个系统数据库,它里面存储了所有的元数据,通过select里面的相关表就可以获取你想要的元数据。和show语句相比,它比较麻烦,但它的好处是标准的SQL语句,更具有可移植性,且更灵活,可以通过各种表达式获取你真正需要的信息。

3:从命令行获取元数据

前面两种方法都必须得在MySQL命令行里执行,而mysqlshow和mysqldump提供了从OS命令行获取元数据库的方法,如:

mysqlshow  --列出所有数据库 

mysqlshow db_name  --列出给定数据库的所有表 

mysqlshow db_name tbl_name  --列出给定数据库表的所有列 

mysqlshow --keys db_name tbl_name  --列出索引信息 

mysqlshow --status db_name  --列出数据库的描述性信息 

mysqldump可以让你看到create table语句(就想show create table语句一样),如:

[sql]

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

注意:在用mysqldump查看表结构时,一定要加上--no-data,否则你看到的将是数据库表里的数据

时间: 09-18

什么是mysql中的元数据的相关文章

辛星浅谈mysql中的元数据

首先解释一下什么是元数据,所谓元数据,就是表示数据的数据,这些数据五花八门,总之,只要不是我们存储到数据库里的数据,大多都可以理解为元数据.那么我们如何来获取这些元数据呢? 总的来说,有三种思路,第一种,各种show,第二种,各种select,第三种,是mysql的命令行下的命令,不是sql语句. 我们首先看第一种,这里我列举一下大家比较熟悉的show语句的用法,其实咱们经常用show来查看信息,比如: show databases; show tales; show create table

MySQL中INFORMATION_SCHEMA是什么?(1)

在获取自增ID时,我用到了以下语句: select auto_increment from information_schema.tables where table_name = "表名"; 仔细一看,这其实就是一条查询语句,查询了information_schema数据库下的"tables"表,里面 以 table_name  为 "表名"  的一行记录的  auto_increment字段的值. 那么information_schema数据

查询MySQL中某个数据库中有多少张表

SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES   WHERE table_schema = '数据库' GROUP BY table_schema; 这还是头一次接触information_schema这个数据库, information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式.什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等.有些时候用于表

【个人笔记】《知了堂》MySQL中的数据类型

MySQL中的数据类型 1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节  范围(-128~127) smallint(m) 2个字节  范围(-32768~32767) mediumint(m) 3个字节  范围(-8388608~8388607) int(m) 4个字节  范围(-2147483648~2147483647) bigint(m) 8个字节  范围(+-9.22*10的18次方) 取值范围如果加了unsigned,则最大值翻倍,如tinyint un

mysql中int、bigint、smallint和tinyint的区别与长度

对比发现 int bigint smallint 和 tinyint 类型,如果创建新表时没有指定 int(M) 中的M时,默认分别是 : int             -------     int(11) bigint       -------     bigint(20) smallint   -------     smallint(6) tinyint     -------     tinyint(4) 下面是这几种类型的取值范围 参考:http://www.2cto.com/d

mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法

mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法: 语法: TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2) 说明: 返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差.其结果的单位由interval 参数给出.interval 的法定值同TIMESTAMPADD()函数说明中所列出的相同. mysql> SELECT TIMESTAMPDIFF(MONTH,'200

SQL-GROUP BY语句在MySQL中的一个错误使用被兼容的情况

首先创建数据库hncu,建立stud表格. 添加数据: create table stud( sno varchar(30) not null primary key, sname varchar(30) not null, age int, saddress varchar(30) ); INSERT INTO stud VALUES('1001','Tom',22,'湖南益阳'); INSERT INTO stud VALUES('1002','Jack',23,'益阳'); INSERT

MYSQL中存储过程的创建,调用及语法

MySQL 存储过程是从 MySQL 5.0 开始增加的新功能.存储过程的优点有一箩筐.不过最主要的还是执行效率和SQL 代码封装.特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句.特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗.现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高. 第一部分:创建一个简单的无参的存储过程 1 用mysql客户端登入

在Mysql中如何显示所有用户?

在Mysql中如何显示所有用户? 这是一个mysql初学者经常问到的一个问题,今天我们就带大家看看是如何在Mysql中显示所有用户的.通常我们在mysql中使用SHOW DATABASES可以显示所有的数据库,SHOW TABLES将会显示所有的数据表,那么你是不是会猜测显示所有用户的命令是SHOW USERS呢?不不不,并不是的,现在让我们一起来看看如何显示所有用户吧. 在Mysql中显示所有用户 1.登录数据库 首先,你需要使用如下命令登录到数据库,注意,必须是root用户哦~ ## mys

mysql中bigint、int、mediumint、smallint 和 tinyint的取值范

mysql数据库设计,其中,对于数据性能优化,字段类型考虑很重要,搜集了些资料,整理分享出来,这篇为有关mysql整型bigint.int.mediumint.smallint 和 tinyint的语法介绍,如下:1.bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字),无符号的范围是0到 18446744073709551615.一位为 8 个字节. 2.int 一个正常大小整数.有符号