获取数据库元数据

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

.u*Mw$|(\0  MySQL提供几种办法以使获取关于数据库和数据库里各种对象(也就是数据库的元数据)的信息,如下:

2CKPz0\4j jJ2h0

^f*Pj6m:g T0  1、SHOW语句,如SHOW TABLES等等。51Testing软件测试网8[5`o'H\b

+S7C0kC N7m@0  2、INFORMATION_SCHEMA数据库里的数据表。

,ol@1m2b051Testing软件测试网!?p?:|/mAN

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

y?%V } @E051Testing软件测试网4vOrus:x

  一、用SHOW语句获取51Testing软件测试网uw P4?ILF

-R5U)j#vQ'X#G0  获取服务器所管理的数据库。51Testing软件测试网7c"zP e Q/@^&DAe
  SHOW DATABASES;
4[Z z"?G"["_h1] qaB0  查看给定数据库的创建语句。
Fd |+v8l0  SHOW CREATE DATABASE db_name;
51Testing软件测试网 v(d9~0N w

51Testing软件测试网+Pm5i%P&CU

  列出默认数据库里的所有数据表。51Testing软件测试网,wGiF1S8G%t
  SHOW TABLES;

#rb P_ B}~ i/QYoe051Testing软件测试网1op,~sn

  列出给定数据库里的所有数据表。
dw ~_j0  SHOW TABLES FROM db_name;

s1Lhjk { [051Testing软件测试网.|xw-}JRh T-mT

  查看给定数据表的创建语句。
HSpO:l-JP j/kmf0  SHOW CREATE TABLE tbl_name;
51Testing软件测试网!h+nY)`6`

51Testing软件测试网.YJm1j _T3T(E

  查看指定数据表的数据列和索引信息。
jzcV"JN[0nU&p0  SHOW COLUMNS FROM tbl_name;  这个语句和DESC 的输出是一样的。
Xv.D6P'{[n@R0  SHOW INDEX FROM tbl_name;
51Testing软件测试网g6n8F2sJ4X

51Testing软件测试网h]8rS,]Rz N

  有几种SHOW语句还可以带有LIKE 'pattern'子句,用来把SHOW语句的输出限定在给定范围,并且允许使用通配符号。

%ulc+^4F7Gu9Y1O0zh u051Testing软件测试网0DVz%@*Y1K;Asc

  二、从INFORMATION_SCHEMA数据库获取元数据51Testing软件测试网/]7q/tVr,ETS/B

dNb |G7][k0  可以将这个数据库看成一个虚拟的数据库,这个数据库里的数据表是一些由不同的数据库元素数据构成的视图,这个数据库里有以下数据表项:

&i9vc` y m9]0mysql> show tables from information_schema;51Testing软件测试网!?3W LW&D$Lz
+---------------------------------------+51Testing软件测试网%j xYg*l3X2S
| Tables_in_information_schema          |
(h&Y|/p | P&r:jS1vn0+---------------------------------------+51Testing软件测试网P`'w*B/_Y%q
| CHARACTER_SETS                        |51Testing软件测试网U"`av!UL@7e;\*m
| COLLATIONS                            |51Testing软件测试网.F8dn'OP+B5B6wD1I?
| COLLATION_CHARACTER_SET_APPLICABILITY |51Testing软件测试网[)Jw0P+w{
| COLUMNS                               |
S~5s/N*D,ex:S0| COLUMN_PRIVILEGES                     |51Testing软件测试网&s7bq#oJZ}z9o"}
| ENGINES                               |
zQzc B6d0| EVENTS                                |51Testing软件测试网8\!AH}3k[R
| FILES                                 |51Testing软件测试网].zj%CG
| GLOBAL_STATUS                         |51Testing软件测试网l&L(VL:I#W\^
| GLOBAL_VARIABLES                      |
&w&Tgo6ez0| KEY_COLUMN_USAGE                      |51Testing软件测试网&N u'I#@q
| PARTITIONS                            |
7P U1W a8kjJ0m0| PLUGINS                               |
s[O}2E{#^0| PROCESSLIST                           |51Testing软件测试网+Kx$p)@VU,i Z
| PROFILING                             |51Testing软件测试网9|[4DP/~%qx+L`
| REFERENTIAL_CONSTRAINTS               |
5ZnX Pb&iA0| ROUTINES                              |
*z)T5K%js]$}'pB0| SCHEMATA                              |51Testing软件测试网$S6?VuxK%O(G
| SCHEMA_PRIVILEGES                     |51Testing软件测试网F7l VAY*C(Y_e
| SESSION_STATUS                        |51Testing软件测试网"A&Y D,n\%@8D1^d
| SESSION_VARIABLES                     |
M:p3[7@-B3D.b9G0| STATISTICS                            |51Testing软件测试网7fK2a g$F0|yD
| TABLES                                |
kE,N0p(\3SC^`0| TABLE_CONSTRAINTS                     |51Testing软件测试网-eoz R YQ+v-g
| TABLE_PRIVILEGES                      |
;B"q$j1\%f0| TRIGGERS                              |
Z7pQ\;\#wU0| USER_PRIVILEGES                       |
%V1s+i:CmY2@C0| VIEWS                                 |51Testing软件测试网+_1y%^Ker-F
+---------------------------------------+51Testing软件测试网{P;ie?U _
28 rows in set (0.01 sec)51Testing软件测试网RwG#wDX

g o xz7hV%SN0  分别对这些列简单的说明。

.Z(r;V#PnWn'{@0

Ekt4S l0  1、SCHEMATA、TABLES、VIEWS、ROUTIMES、TRIGGERS、EVENTS、PARTITIONS、 COLUMNS,表示的信息分别是数据库,数据表,视图,存储例程,触发器,数据库里的事件,数据表分区和数据列的信息,以数据表为例,就是TABLES 表,有以下列:51Testing软件测试网2wHe#EQ

51Testing软件测试网+U!_8z2w i*tC

7r%Q p2{'S$S O v0N"t0
mysql> show columns from INFORMATION_SCHEMA.COLUMNS;51Testing软件测试网[4B}@"H Km Y$x
+--------------------------+---------------------+------+-----+---------+-------+
w3F5y js ]w0| Field                    | Type                | Null | Key | Default | Extra |51Testing软件测试网qS6s-@~c@
+--------------------------+---------------------+------+-----+---------+-------+
(r g]Ab0| TABLE_CATALOG            | varchar(512)        | YES  |     | NULL    |       |51Testing软件测试网,Im8m u}!Yf
| TABLE_SCHEMA             | varchar(64)         | NO   |     |         |       |
/DN"Km9S1bsIx.r0| TABLE_NAME               | varchar(64)         | NO   |     |         |       |
zp4Po:b"e0| COLUMN_NAME              | varchar(64)         | NO   |     |         |       |51Testing软件测试网1|q1}:CCf M
| ORDINAL_POSITION         | bigint(21) unsigned | NO   |     | 0       |       |
o"y+BwQ9R/EL0| COLUMN_DEFAULT           | longtext            | YES  |     | NULL    |       |51Testing软件测试网t)|'{5h8B C)z@!i
| IS_NULLABLE              | varchar(3)          | NO   |     |         |       |51Testing软件测试网9t(M5k/Dk3F
| DATA_TYPE                | varchar(64)         | NO   |     |         |       |51Testing软件测试网)^.@!M u mk{"h
| CHARACTER_MAXIMUM_LENGTH | bigint(21) unsigned | YES  |     | NULL    |       |
f UBpjnQ.]5Z-l0| CHARACTER_OCTET_LENGTH   | bigint(21) unsigned | YES  |     | NULL    |       |51Testing软件测试网T8\J"EoM
| NUMERIC_PRECISION        | bigint(21) unsigned | YES  |     | NULL    |       |51Testing软件测试网,Y+S,KCM x]k
| NUMERIC_SCALE            | bigint(21) unsigned | YES  |     | NULL    |       |51Testing软件测试网8e G7[8?Kc
| CHARACTER_SET_NAME       | varchar(32)         | YES  |     | NULL    |       |
*D+uu0p+@B9rn&D0| COLLATION_NAME           | varchar(32)         | YES  |     | NULL    |       |
z h$T6[WEi0E"{~,X0| COLUMN_TYPE              | longtext            | NO   |     | NULL    |       |51Testing软件测试网%G!db+q0rGEZ;j
| COLUMN_KEY               | varchar(3)          | NO   |     |         |       |
s({Z|"^0[q0| EXTRA                    | varchar(27)         | NO   |     |         |       |51Testing软件测试网 Q:_V]`diO
| PRIVILEGES               | varchar(80)         | NO   |     |         |       |
N0JmD4xQ&[-F0| COLUMN_COMMENT           | varchar(255)        | NO   |     |         |       |
1`pa6Z8j0+--------------------------+---------------------+------+-----+---------+-------|
51Testing软件测试网w"z1Pf#uFB|

  这是我查看一些数据表的记录

ueU9J5L g051Testing软件测试网[5xR+xE+G,}U

51Testing软件测试网!X+k8aaB

mysql> SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA != 'information_schema' and TABLE_SCHEMA!='mysql'\G;51Testing软件测试网3vFi?L
*************************** 1. row ***************************51Testing软件测试网w5K/`6}4n a9]IDI i
  TABLE_CATALOG: NULL51Testing软件测试网K HA"~6J7c!D!x
   TABLE_SCHEMA: db_info
3f)J"Js)_ [T]0     TABLE_NAME: i_node51Testing软件测试网t#Y m Q(O M;[7_5g{.a7R
     TABLE_TYPE: BASE TABLE
8j8|`[7?%@:S0         ENGINE: MyISAM
e6M LA*x0        VERSION: 1051Testing软件测试网M;b tH9C5o
     ROW_FORMAT: Dynamic
-H5R#Vc'z)CX0     TABLE_ROWS: 1151Testing软件测试网*v tB8~kI*k
 AVG_ROW_LENGTH: 21
G!SP/t+qo0    DATA_LENGTH: 240
o.| V ^~0MAX_DATA_LENGTH: 281474976710655
%P7w8~!t,^6P-C)v.N#o%f0   INDEX_LENGTH: 2048
+e"Q D$X"LM`og0      DATA_FREE: 0
MCm,]VqU0 AUTO_INCREMENT: 16
Ly,_kd4{0    CREATE_TIME: 2012-09-07 03:07:37
)k5nR$_Q&|A f0    UPDATE_TIME: 2012-09-23 07:57:37
lMpiR#K0     CHECK_TIME: NULL51Testing软件测试网:w7@$j&w3},dLA
TABLE_COLLATION: latin1_swedish_ci51Testing软件测试网 P XDsJ K,~
       CHECKSUM: NULL51Testing软件测试网[%F%L2N/Q3Rpw8N-I.T
 CREATE_OPTIONS:51Testing软件测试网8@U O H1uz\kT
  TABLE_COMMENT:51Testing软件测试网+~R1T ]X zyA~
*************************** 2. row ***************************51Testing软件测试网JTC;ctU8D;Z[
  TABLE_CATALOG: NULL51Testing软件测试网 @Rg4j i#Z
   TABLE_SCHEMA: db_info51Testing软件测试网&Mr$aCTN8Q'B$J;XE%g%m
     TABLE_NAME: test
tF!`;c*D/N0     TABLE_TYPE: BASE TABLE
0\)W Y{D!Q9{s1@0         ENGINE: MyISAM
H'dr u*oZt,j+v0        VERSION: 10
Ckd H8\|*lW,g0     ROW_FORMAT: Fixed
]8kS3i2|i x/ro0     TABLE_ROWS: 3
~zQp7`R0 AVG_ROW_LENGTH: 751Testing软件测试网&ToF2Xl&A r S:k
    DATA_LENGTH: 2151Testing软件测试网*@9D!A4Eqg7c/V D5C
MAX_DATA_LENGTH: 1970324836974591
RU1k;v+D0   INDEX_LENGTH: 102451Testing软件测试网0d~(G^6Z.P8Mm
      DATA_FREE: 051Testing软件测试网JM(v#sH|*F
 AUTO_INCREMENT: NULL
u IC%iFqS0    CREATE_TIME: 2012-09-22 02:25:0151Testing软件测试网Pei2r{$j4PL
    UPDATE_TIME: 2012-09-22 02:37:1851Testing软件测试网.Y+V?\ A"A
     CHECK_TIME: NULL
'?._8VmCQ _n0TABLE_COLLATION: latin1_swedish_ci51Testing软件测试网5B&d~$i?5h
       CHECKSUM: NULL
V|@:O'p+iL0 CREATE_OPTIONS:51Testing软件测试网4Pm:^.Bf;h~GQ~
  TABLE_COMMENT:51Testing软件测试网$nj/@9A8b^!E/XH
*************************** 3. row ***************************51Testing软件测试网,d Zsdr3t*k+B9G6K
  TABLE_CATALOG: NULL51Testing软件测试网;Cy1f-^;zr(a;L dA,B,Z
   TABLE_SCHEMA: test
Z j};e^5em6z0     TABLE_NAME: test
n9r"ES[ x&I9p1F l0     TABLE_TYPE: BASE TABLE51Testing软件测试网 C0b}m5N}e
         ENGINE: MyISAM51Testing软件测试网^ B#I9D9rX
        VERSION: 10
W1pf"{:h7Gj0     ROW_FORMAT: Dynamic51Testing软件测试网QkdG!znH{+r)u
     TABLE_ROWS: 351Testing软件测试网1P7cO?d6v
 AVG_ROW_LENGTH: 20
2k'`!t"Pv y&_H W0    DATA_LENGTH: 6051Testing软件测试网1}8nw \h*i
MAX_DATA_LENGTH: 281474976710655
2z(? \;y.G@+M-U0   INDEX_LENGTH: 1024
\`p(v \$F0      DATA_FREE: 051Testing软件测试网$Jv-V4Bm3]
 AUTO_INCREMENT: NULL51Testing软件测试网0{+@#K \\.~
    CREATE_TIME: 2012-09-07 20:44:4151Testing软件测试网ch G9C tn2P
    UPDATE_TIME: 2012-09-07 20:44:41
-dZ|Z_s0Y5{0     CHECK_TIME: NULL
)jUiV'C*~w0TABLE_COLLATION: latin1_swedish_ci51Testing软件测试网+B`y0P#p \9\ z1SO0uMC
       CHECKSUM: NULL
KZ+J6{-ZI4U.z T0 CREATE_OPTIONS:51Testing软件测试网a$g yN ]*u{
  TABLE_COMMENT:51Testing软件测试网d OJ6T(i E4x
3 rows in set (0.00 sec)51Testing软件测试网/WpG'Sv

&Z`U(d6{3j z0  2、FILES。关于NDB硬盘数据文件的信息。

M.P:R,uFj o051Testing软件测试网:?:j ~Fn9c

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

)q*WQ#r0R(p~051Testing软件测试网 \W9o D%y"D jh8o*z.S5e

  4、STATISTICS。关于数据表索引特性的信息。51Testing软件测试网 @sjz L \*Q@ \ V

1hj;o1s?%lW EAVXK0  5、REFERENTIAL_CONSTRAINS。关于外键的信息。51Testing软件测试网xEB+Ek3sgQ"t

Bf8] {#|v2iU0  6、CHARACTER_SETS、COLLATIONS、COLLATION_CHARACTER_SET_APPLICABILITY。关于所支持的字符集,每种字符集的排序方式、每种排序方式与它的字符集的映射关系信息。

1pt8^i'k0

7zqsMR/O?'N0  7、ENGINES、PLUGINS。关于存储引擎和服务器插件的信息。51Testing软件测试网4}&J,i oJ1y d$}-gu

Y'F,NH S T F0  8、USER_PRIVILEGES、SCHEMA_PRIVILEGES、TABLE_PRIVILEGES、 COLUMN_PRIVILEGES。全局、数据库、数据表和数据列的权限信息。这些信息分别来自mysql数据库里的 user,db,tables_priv,column_priv数据表。51Testing软件测试网a?]!UZh#?0zRl

'QHG0_&@?K0  9、PROCESSLIST。在服务器内执行的线程的信息。

~T7b\l V-s8n(?0

:TCef?\g0  10、GLOBAL_VARIABLES、SESSION_VARIABLES、GLOBAL_STATUS、SESSION_STATUS。全局和会话级系统变量和状态变量的值。

5SB*X1xpF0

3ES!nb \ S r0  三、从命令行获取元数据51Testing软件测试网Qod*Z Hj}n

pkyxb(V'Di0  先介绍一个命令的使用:mysqlshow。

|Hj D0_p051Testing软件测试网| P w b9BAyx{ a^

@)D0Td#O9_3[U0
mysqlshow[选项] [db_name [tbl_name [col_name]]]
51Testing软件测试网N+zg6C4S i F-y:m

  1、如果没有给出数据库,显示所有匹配的数据库。51Testing软件测试网 ?$MT5Ck

51Testing软件测试网[,f1H[g[N1G

  2、如果没有给出表,显示数据库中所有匹配的表。51Testing软件测试网u5Vx2v-aX R

51Testing软件测试网"HsVEu(n%n

  3、如果没有给出列,显示表中所有匹配的列和列类型。51Testing软件测试网Ven5W4N/N D

51Testing软件测试网O)AVPMa)H

  说明几个常用的选项信息:51Testing软件测试网#@+@0BG+eIqUm

0v"S*USj0  1、--keys。查看某给定数据表里的索引信息。51Testing软件测试网q(Rigo N&I

51Testing软件测试网-xl:KaB}7Dld

  2、--status。查看某给定数据库里的数据表的描述性信息。如:

!P@M(^{R?051Testing软件测试网be3a-g"U.Lc-S

51Testing软件测试网;\L!~_Xcp

[root@localhost ~]# mysqlshow --status db_info51Testing软件测试网R7Dj)Vj/q Z6x
Database: db_info
3C S DB.l)ss0+--------+--------+---------+------------+------+----------------+-------------+------------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------+
[\ O2r\+U0| 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 |
Lz2f G1j?gmH1q0+--------+--------+---------+------------+------+----------------+-------------+------------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------+51Testing软件测试网;k}f9@UK&x
| 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 |          |                |         |
\0h? eR/oJ+p6Ds%B9gj0| 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 |          |                |         |
P}4Bh;c0aQ!em4i0+--------+--------+---------+------------+------+----------------+-------------+------------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------

7lLwCl&w'bG2?0  在使用该工具的时候,如果没有默认的数据库服务例程,不要忘了加上--host --user --password甚至是 --socket等信息。

k,n:i!k\} |&_]2?_-M051Testing软件测试网? j zj La{.Fb

TAG:

 

评分:0

我来说两句

Open Toolbar