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,否則你看到的將是資料庫表裡的資料