获取数据库元数据

上一篇 / 下一篇  2012-09-26 14:06:56 / 个人分类:数据库

51Testing软件测试网/] ~ ]_:M3P

  MySQL提供几种办法以使获取关于数据库和数据库里各种对象(也就是数据库的元数据)的信息,如下:51Testing软件测试网z]Wserlq

51Testing软件测试网b@/jt%m1H

  1、SHOW语句,如SHOW TABLES等等。51Testing软件测试网A` Ip*S~8K

51Testing软件测试网PE(lPi4S&H

  2、INFORMATION_SCHEMA数据库里的数据表。51Testing软件测试网1n m0R@+?;xqRQ1x|

51Testing软件测试网8TBm_L

  3、命令行程序,如mysqlshow或者是mysqldump。

I+D_(n!v"o0

/]5e8Q;oJ(A#N0  一、用SHOW语句获取

c"f U%@%?S4g0

own-t FK0s/E0  获取服务器所管理的数据库。51Testing软件测试网tc5bK6l~.n_@-}e
  SHOW DATABASES;51Testing软件测试网5jS1[3~2R
  查看给定数据库的创建语句。
/N6jR5n7N+P1f'N0  SHOW CREATE DATABASE db_name;
51Testing软件测试网`(c/{Uj4Zl#F(`

)C:f(N3b N'{ e-H0  列出默认数据库里的所有数据表。51Testing软件测试网+O:zOs-tr
  SHOW TABLES;
51Testing软件测试网1Z @4a%F,zT

:J0l0fI(`M0  列出给定数据库里的所有数据表。51Testing软件测试网9B"| V\ \I[
  SHOW TABLES FROM db_name;

3IqGN6L;^\W0TQ051Testing软件测试网p-U6^]mhVh%W5P

  查看给定数据表的创建语句。51Testing软件测试网wJ]$h$Z+o ia0\)hz
  SHOW CREATE TABLE tbl_name;
51Testing软件测试网n2k RA z+`w

o"[p7zW4`9{we/Z4m0  查看指定数据表的数据列和索引信息。
9z7YO)v+JU#d"x0  SHOW COLUMNS FROM tbl_name;  这个语句和DESC 的输出是一样的。51Testing软件测试网 A ~.w7l*^k5H5?
  SHOW INDEX FROM tbl_name;

8QymZ%|2L#A#K1f0

3O\rqz;c0  有几种SHOW语句还可以带有LIKE 'pattern'子句,用来把SHOW语句的输出限定在给定范围,并且允许使用通配符号。51Testing软件测试网X+~Z&P]9p|

*bzV6B DD7u0  二、从INFORMATION_SCHEMA数据库获取元数据51Testing软件测试网#s:I]#JLL ?%e

8U#B!_)W0i0  可以将这个数据库看成一个虚拟的数据库,这个数据库里的数据表是一些由不同的数据库元素数据构成的视图,这个数据库里有以下数据表项:51Testing软件测试网b$Bt+K @M1O

mysql> show tables from information_schema;
!o ENlH8a`{Z0+---------------------------------------+
V/sc0rt MZ%l0| Tables_in_information_schema          |
~Uv-FMjz0+---------------------------------------+51Testing软件测试网6m'OkNE6~
| CHARACTER_SETS                        |51Testing软件测试网E qz"i]V'fA%Q
| COLLATIONS                            |51Testing软件测试网8?RmjEj$b\
| COLLATION_CHARACTER_SET_APPLICABILITY |51Testing软件测试网!r!qh+l c-VAd
| COLUMNS                               |
a-@ XiA |z){A*|!D,r0| COLUMN_PRIVILEGES                     |51Testing软件测试网9F_0h2`sKW9P,sR.q
| ENGINES                               |51Testing软件测试网x|s6y)ytir
| EVENTS                                |51Testing软件测试网p5Ui ?Z,r9S
| FILES                                 |
&K&U e l,|?0| GLOBAL_STATUS                         |
2}.[,O6K%}1yd0| GLOBAL_VARIABLES                      |
-OhN&c%?ZE-p^0| KEY_COLUMN_USAGE                      |51Testing软件测试网H f,x}$xO#h
| PARTITIONS                            |
odh x.^]Cm0| PLUGINS                               |51Testing软件测试网*x-N~ angd4r
| PROCESSLIST                           |51Testing软件测试网)L Z5Fs0j+N,o&? Z
| PROFILING                             |51Testing软件测试网r:g8ft[ {#c#y+[
| REFERENTIAL_CONSTRAINTS               |
ko\![ ^LaY%@"w0| ROUTINES                              |
rF2BDX ZNj Q0| SCHEMATA                              |
,V(O#y!vb!Z0| SCHEMA_PRIVILEGES                     |
;YBD!Xt[b[0| SESSION_STATUS                        |
UEe b5W)m0| SESSION_VARIABLES                     |
,^Aha~4|zw0| STATISTICS                            |51Testing软件测试网Lo*|:j8etN)\Yx
| TABLES                                |
N dd3Op3m%Di2HE0| TABLE_CONSTRAINTS                     |
;m#u QV!r ^@ s\0| TABLE_PRIVILEGES                      |
{1G/OJ;W%eg#TQ0| TRIGGERS                              |51Testing软件测试网Orl4S5e@}8^ o
| USER_PRIVILEGES                       |51Testing软件测试网v*D6UoF6R.[
| VIEWS                                 |51Testing软件测试网Y4| zK9j2a%^$bsk
+---------------------------------------+
? ~w2[UT?028 rows in set (0.01 sec)51Testing软件测试网E7dO4SuP

?J7m+`^ P6] H0  分别对这些列简单的说明。

uKcMk|051Testing软件测试网;G3j\.j!n\y0Q)s)v

  1、SCHEMATA、TABLES、VIEWS、ROUTIMES、TRIGGERS、EVENTS、PARTITIONS、 COLUMNS,表示的信息分别是数据库,数据表,视图,存储例程,触发器,数据库里的事件,数据表分区和数据列的信息,以数据表为例,就是TABLES 表,有以下列:51Testing软件测试网6A,j{]!zkg)N

51Testing软件测试网h+iT:G*pb

g2pC!u(r;L0\5Ub'M0
mysql> show columns from INFORMATION_SCHEMA.COLUMNS;51Testing软件测试网@i3bBh'IF
+--------------------------+---------------------+------+-----+---------+-------+
g c!au4t fg`N0| Field                    | Type                | Null | Key | Default | Extra |
'f"z(g7K(e q\9A0p)K0+--------------------------+---------------------+------+-----+---------+-------+51Testing软件测试网a*EVT*L0m)ft u
| TABLE_CATALOG            | varchar(512)        | YES  |     | NULL    |       |
(mK)O/th/v!B0D2w-K0| TABLE_SCHEMA             | varchar(64)         | NO   |     |         |       |51Testing软件测试网}^f6dr-m/o"b'z
| TABLE_NAME               | varchar(64)         | NO   |     |         |       |51Testing软件测试网$w ^\9Gp%@ t
| COLUMN_NAME              | varchar(64)         | NO   |     |         |       |51Testing软件测试网C3ZC&w^wO p
| ORDINAL_POSITION         | bigint(21) unsigned | NO   |     | 0       |       |
g-y~w^5@0| COLUMN_DEFAULT           | longtext            | YES  |     | NULL    |       |
dKY HlsY5~0| IS_NULLABLE              | varchar(3)          | NO   |     |         |       |51Testing软件测试网%k#m{{KHj
| DATA_TYPE                | varchar(64)         | NO   |     |         |       |
fq6o2w(n2M;c0| CHARACTER_MAXIMUM_LENGTH | bigint(21) unsigned | YES  |     | NULL    |       |51Testing软件测试网$p*v8cG/b$bW%z7d(B7F
| CHARACTER_OCTET_LENGTH   | bigint(21) unsigned | YES  |     | NULL    |       |51Testing软件测试网,[9yS5RNpC9m
| NUMERIC_PRECISION        | bigint(21) unsigned | YES  |     | NULL    |       |
j"Hk/g2I+@0| NUMERIC_SCALE            | bigint(21) unsigned | YES  |     | NULL    |       |51Testing软件测试网5v;a;DB0R
| CHARACTER_SET_NAME       | varchar(32)         | YES  |     | NULL    |       |
&h w8`%iaV0| COLLATION_NAME           | varchar(32)         | YES  |     | NULL    |       |
1uU/Yl!G;q(iW\0| COLUMN_TYPE              | longtext            | NO   |     | NULL    |       |51Testing软件测试网 XR+k3i(o
| COLUMN_KEY               | varchar(3)          | NO   |     |         |       |
Z5W2e mK~0| EXTRA                    | varchar(27)         | NO   |     |         |       |51Testing软件测试网0zb&fX3z:{ v
| PRIVILEGES               | varchar(80)         | NO   |     |         |       |51Testing软件测试网ylSeG0S4LL+H9`h
| COLUMN_COMMENT           | varchar(255)        | NO   |     |         |       |51Testing软件测试网K&L ]h KI o
+--------------------------+---------------------+------+-----+---------+-------|
51Testing软件测试网'itBy+A#o

  这是我查看一些数据表的记录51Testing软件测试网1R,g2c p5Y

51Testing软件测试网.P y+Pc)ea)t

;Nv4Ul$Y#O j0mysql> SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA != 'information_schema' and TABLE_SCHEMA!='mysql'\G;
4^6J1\.lL0*************************** 1. row ***************************51Testing软件测试网7Lq ah(Y"x
  TABLE_CATALOG: NULL
A%i?6a*r2b)x0   TABLE_SCHEMA: db_info
N\-p9T/kGNJ0     TABLE_NAME: i_node51Testing软件测试网}1`U*M _hg
     TABLE_TYPE: BASE TABLE
4Z&h'vW}+\$MD0         ENGINE: MyISAM
n^c_DT0        VERSION: 1051Testing软件测试网!l'Q*M+`$IMXOM
     ROW_FORMAT: Dynamic51Testing软件测试网)acw#fc,l
     TABLE_ROWS: 11
s hmQyoy0 AVG_ROW_LENGTH: 2151Testing软件测试网 qu&vIt1R
    DATA_LENGTH: 24051Testing软件测试网 K W9~+A5c
MAX_DATA_LENGTH: 28147497671065551Testing软件测试网jDcm1D
   INDEX_LENGTH: 2048
@,oI.a\0      DATA_FREE: 051Testing软件测试网5o0x@^&m
 AUTO_INCREMENT: 1651Testing软件测试网~3Fb1LV^/[
    CREATE_TIME: 2012-09-07 03:07:3751Testing软件测试网J)YqCB
    UPDATE_TIME: 2012-09-23 07:57:37
xE:Q \[W#{~5\ K0     CHECK_TIME: NULL51Testing软件测试网_8K#yR"WL)aR*cb!UP
TABLE_COLLATION: latin1_swedish_ci51Testing软件测试网8M%QQ,V$t3s\)x
       CHECKSUM: NULL
gt)ttV0 CREATE_OPTIONS:
-}l;A{Q\0  TABLE_COMMENT:51Testing软件测试网/O3]+He6Oq5Z
*************************** 2. row ***************************51Testing软件测试网4SL,E\TH}p
  TABLE_CATALOG: NULL
']8}w:oL`0   TABLE_SCHEMA: db_info51Testing软件测试网tD(C5h"[:Qv
     TABLE_NAME: test
8Gu~ YX?0     TABLE_TYPE: BASE TABLE
N {%H!x)E)t7z1XK0         ENGINE: MyISAM
SC0Pb.I EZ0        VERSION: 1051Testing软件测试网O/V%gIIo
     ROW_FORMAT: Fixed51Testing软件测试网e"s,H&Q5e T|
     TABLE_ROWS: 351Testing软件测试网l)QsY ~:X_ Dt3N
 AVG_ROW_LENGTH: 7
Rvt&k4P N4^T3Jg NY(d1l0    DATA_LENGTH: 2151Testing软件测试网m"x7e M'lGQUl`
MAX_DATA_LENGTH: 197032483697459151Testing软件测试网Nb/r@/J,_-l
   INDEX_LENGTH: 102451Testing软件测试网aS*ex4Iul:b:\
      DATA_FREE: 051Testing软件测试网"v!m/QI"itZH,_[P
 AUTO_INCREMENT: NULL51Testing软件测试网C:R\b hW`l|x
    CREATE_TIME: 2012-09-22 02:25:01
2l(i2jq/eV0    UPDATE_TIME: 2012-09-22 02:37:18
6G,E/]H"m8uz-t0     CHECK_TIME: NULL
5IktwlL ~;Fo0TABLE_COLLATION: latin1_swedish_ci51Testing软件测试网/L,W4X2h AKKw
       CHECKSUM: NULL
bM L I;hD!P9VE.C0 CREATE_OPTIONS:
-H3br.[K%E5w0  TABLE_COMMENT:
BUxg e6E4ddO0*************************** 3. row ***************************51Testing软件测试网1\8ifl8w b-F)d`|
  TABLE_CATALOG: NULL51Testing软件测试网o5nS5M$E(^/?
   TABLE_SCHEMA: test51Testing软件测试网zV Wh"\9S+a
     TABLE_NAME: test
*nM"u-[C^1]YI0     TABLE_TYPE: BASE TABLE51Testing软件测试网ms L`[.Vd1pb
         ENGINE: MyISAM
J-L1X\#Cj;q v C0        VERSION: 1051Testing软件测试网,P1O5_9x/k+]
     ROW_FORMAT: Dynamic
+jvH.| Y!Njl&rA j0     TABLE_ROWS: 3
q#\1d+|4a^{0 AVG_ROW_LENGTH: 20
S`_.X|+m0    DATA_LENGTH: 60
-s2E`+S1Cx |#l0MAX_DATA_LENGTH: 281474976710655
8v(W5E"R[:F*B0   INDEX_LENGTH: 1024
WS3H(V7R0      DATA_FREE: 051Testing软件测试网\~;k6[-gy\)Q4[ui l
 AUTO_INCREMENT: NULL
@7D\mg#Pi"DK0    CREATE_TIME: 2012-09-07 20:44:41
kO)K(k`r{0    UPDATE_TIME: 2012-09-07 20:44:41
i Cuo}d n0     CHECK_TIME: NULL51Testing软件测试网O3W5{%^%Z? r }
TABLE_COLLATION: latin1_swedish_ci51Testing软件测试网3[4Zb;UX)L6Ri
       CHECKSUM: NULL
2qM\#~/fL7u']0 CREATE_OPTIONS:
dR/gO,n/P mD6P-k]0  TABLE_COMMENT:51Testing软件测试网nR$n ~_5l
3 rows in set (0.00 sec)
f},Hn8|0
51Testing软件测试网']S?/y%B qG{3Cn)u

  2、FILES。关于NDB硬盘数据文件的信息。

@poU sr6f051Testing软件测试网O3o5|:h Y8q

  3、TABLE_CONSTRAINS、KEY_COLUMN_USAGE:关于数据表和数据列上的约束条件的信息,一般唯一化索引和外键都属于这些约束条件。

3L[ _ N F9z051Testing软件测试网Cj9h6Y&uX.}

  4、STATISTICS。关于数据表索引特性的信息。

B5p f.rQ_n7d0

Nb~7D3v5^m\$Bybr ^0  5、REFERENTIAL_CONSTRAINS。关于外键的信息。

#fS4p{!_0

:B,a(hp$o I0  6、CHARACTER_SETS、COLLATIONS、COLLATION_CHARACTER_SET_APPLICABILITY。关于所支持的字符集,每种字符集的排序方式、每种排序方式与它的字符集的映射关系信息。

4n'f8Nj4r^\XL{])O0

-q bas;K-j5NvH0  7、ENGINES、PLUGINS。关于存储引擎和服务器插件的信息。

M zH'|I4DXQ.Q051Testing软件测试网&oHse;x[

  8、USER_PRIVILEGES、SCHEMA_PRIVILEGES、TABLE_PRIVILEGES、 COLUMN_PRIVILEGES。全局、数据库、数据表和数据列的权限信息。这些信息分别来自mysql数据库里的 user,db,tables_priv,column_priv数据表。

l{6x9t(Kj:g:g051Testing软件测试网2Vuz+aAM'a6c-`

  9、PROCESSLIST。在服务器内执行的线程的信息。51Testing软件测试网@YI9p-t.XQ u

51Testing软件测试网)md+[VT&C]

  10、GLOBAL_VARIABLES、SESSION_VARIABLES、GLOBAL_STATUS、SESSION_STATUS。全局和会话级系统变量和状态变量的值。51Testing软件测试网 NIt,lK4E h

D ~$@d@@6Pc0  三、从命令行获取元数据51Testing软件测试网#a`c Z"U&}

J+Ns*L4H*q/Z L0  先介绍一个命令的使用:mysqlshow。

g X)e7eb5O$O],K051Testing软件测试网#Y \P#o+K^

51Testing软件测试网8s)YMpcy

mysqlshow[选项] [db_name [tbl_name [col_name]]]

3II1O$]w%_0  1、如果没有给出数据库,显示所有匹配的数据库。

X9v/cO QCP2u#TH2y051Testing软件测试网#vD!eQ^)rA

  2、如果没有给出表,显示数据库中所有匹配的表。51Testing软件测试网do!f.~t t`rj E;T

BXafi"r9DB(hSf0  3、如果没有给出列,显示表中所有匹配的列和列类型。51Testing软件测试网f%y2o*W0|/@Y

51Testing软件测试网d"Pb:x9s2h/I4JZ_'D/Z2U

  说明几个常用的选项信息:51Testing软件测试网-A%Q*e2PR.ms@X

+vM!{-Kye%@*z0  1、--keys。查看某给定数据表里的索引信息。

[ dM(M$R W+z0

7Rn&jz.y sL.M0  2、--status。查看某给定数据库里的数据表的描述性信息。如:

3rga,ry%A,Q f?051Testing软件测试网o7A&Pnm

]4fC LdB z0
[root@localhost ~]# mysqlshow --status db_info
&eg}4}Ub#G;m [0Database: db_info51Testing软件测试网uO`? ]yq7w6F5k
+--------+--------+---------+------------+------+----------------+-------------+------------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------+51Testing软件测试网W V2C;?$P5tAJ
| Name   | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length  | Index_length | Data_free | Auto_increment | Create_time         | Update_time         | Check_time | Collation         | Checksum | Create_options | Comment |
B.SQ+r Y9l0Mqx0+--------+--------+---------+------------+------+----------------+-------------+------------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------+
h9^6Eu'bE0`C7l0| i_node | MyISAM | 10      | Dynamic    | 11   | 21             | 240         | 281474976710655  | 2048         | 0         | 16             | 2012-09-07 03:07:37 | 2012-09-23 07:57:37 |            | latin1_swedish_ci |          |                |         |51Testing软件测试网3l l*R E3[$Uc
| test   | MyISAM | 10      | Fixed      | 3    | 7              | 21          | 1970324836974591 | 1024         | 0         |                | 2012-09-22 02:25:01 | 2012-09-22 02:37:18 |            | latin1_swedish_ci |          |                |         |
(IWL6O#lN*I$Kl0+--------+--------+---------+------------+------+----------------+-------------+------------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------
51Testing软件测试网C#G*x/F.b I

  在使用该工具的时候,如果没有默认的数据库服务例程,不要忘了加上--host --user --password甚至是 --socket等信息。51Testing软件测试网iW^_M|

51Testing软件测试网}gR;k0x~6MJi

TAG:

 

评分:0

我来说两句

Open Toolbar