获取数据库元数据
上一篇 / 下一篇 2012-09-26 14:06:56 / 个人分类:数据库
.u*Mw$|(\0 MySQL提供几种办法以使获取关于数据库和数据库里各种对象(也就是数据库的元数据)的信息,如下:
2CKPz0\4jjJ2h0^f*Pj6m:g T0 1、SHOW语句,如SHOW TABLES等等。51Testing软件测试网8[5`o'H\ b
+S7C0kC N7m@0 2、INFORMATION_SCHEMA数据库里的数据表。
,ol@1m2b051Testing软件测试网!?p?:|/mAN3、命令行程序,如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[Zz"?G"["_h1]qaB0 查看给定数据库的创建语句。
Fd|+v8l0 SHOW CREATE DATABASE db_name;51Testing软件测试网v(d9~0N
w
列出默认数据库里的所有数据表。51Testing软件测试网,wGiF1S8G%t
SHOW TABLES;
列出给定数据库里的所有数据表。
dw
~_j0 SHOW TABLES FROM db_name;
查看给定数据表的创建语句。
HSpO:l-JPj/k mf0 SHOW CREATE TABLE tbl_name;51Testing软件测试网!h+nY)`6`
查看指定数据表的数据列和索引信息。
jzcV"JN[0nU&p0 SHOW COLUMNS FROM tbl_name; 这个语句和DESC 的输出是一样的。
Xv.D6P'{ [n@R0 SHOW INDEX FROM tbl_name;51Testing软件测试网g6n8F2sJ4X
有几种SHOW语句还可以带有LIKE 'pattern'子句,用来把SHOW语句的输出限定在给定范围,并且允许使用通配符号。
%ulc+^4F7Gu9Y1O0zh u051Testing软件测试网0DVz%@*Y1K;Asc二、从INFORMATION_SCHEMA数据库获取元数据51Testing软件测试网/]7q/tVr,ETS/B
dNb | G7][k0 可以将这个数据库看成一个虚拟的数据库,这个数据库里的数据表是一些由不同的数据库元素数据构成的视图,这个数据库里有以下数据表项:
&i9vc` ym9]0mysql> show tables from information_schema;51Testing软件测试网!?3W L W&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软件测试网.F8d n'OP+B5B6wD1I?
| COLLATION_CHARACTER_SET_APPLICABILITY |51Testing软件测试网[)Jw0P+w{
| COLUMNS |
S ~5s/N*D,ex:S0| COLUMN_PRIVILEGES |51Testing软件测试网&s7bq#oJZ}z9o"}
| ENGINES |
zQzcB6d0| 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软件测试网&Nu'I#@q
| PARTITIONS |
7PU1W a8kjJ0m0| PLUGINS |
s[O}2E{#^0| PROCESSLIST |51Testing软件测试网+Kx$p)@VU,iZ
| 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&YD,n\%@8D1^d
| SESSION_VARIABLES |
M:p3[7@-B3D.b9G0| STATISTICS |51Testing软件测试网7fK2ag$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 oxz7h V%SN0 分别对这些列简单的说明。
.Z(r;V#PnWn'{@0Ekt4S l0 1、SCHEMATA、TABLES、VIEWS、ROUTIMES、TRIGGERS、EVENTS、PARTITIONS、 COLUMNS,表示的信息分别是数据库,数据表,视图,存储例程,触发器,数据库里的事件,数据表分区和数据列的信息,以数据表为例,就是TABLES 表,有以下列:51Testing软件测试网2wHe#EQ
51Testing软件测试网+U!_8z2w i*tC7r%Q p2{'S$SO v0N"t0mysql> show columns from INFORMATION_SCHEMA.COLUMNS;51Testing软件测试网[4B}@"HKm Y$x +--------------------------+---------------------+------+-----+---------+-------+ w3F5y js ]w0| Field | Type | Null | Key | Default | Extra |51Testing软件测试网qS6s-@~c@ +--------------------------+---------------------+------+-----+---------+-------+ (r g]Ab0| TABLE_CATALOG | varchar(512) | YES | | NULL | |51Testing软件测试网,Im8mu}!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)|'{5h8BC)z@!i | IS_NULLABLE | varchar(3) | NO | | | |51Testing软件测试网9t(M5k/Dk3F | DATA_TYPE | varchar(64) | NO | | | |51Testing软件测试网)^.@!Mumk{"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,KCMx]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 | | zh$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+--------------------------+---------------------+------+-----+---------+-------| |
这是我查看一些数据表的记录
ueU9J5L g051Testing软件测试网[5xR+xE+G,}U51Testing软件测试网!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软件测试网KHA"~6J7c!D!x
TABLE_SCHEMA: db_info
3f)J"Js)_ [T]0 TABLE_NAME: i_node51Testing软件测试网t#Y m Q(OM;[7_5g{.a7R
TABLE_TYPE: BASE TABLE
8j8|`[7?%@:S0 ENGINE: MyISAM
e6M LA*x0 VERSION: 1051Testing软件测试网M;btH9C5o
ROW_FORMAT: Dynamic
-H5R#Vc'z)CX0 TABLE_ROWS: 1151Testing软件测试网*vtB8~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"QD$X"LM`og0 DATA_FREE: 0
MC m,]VqU0 AUTO_INCREMENT: 16
Ly,_kd4{0 CREATE_TIME: 2012-09-07 03:07:37
)k5nR$_Q&|Af0 UPDATE_TIME: 2012-09-23 07:57:37
lMpi R#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 ]XzyA~
*************************** 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\)WY{D!Q9{ s1@0 ENGINE: MyISAM
H'dru*o Zt,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;LdA,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&_HW0 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软件测试网chG9C 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.zT0 CREATE_OPTIONS:51Testing软件测试网a$gyN ]*u{
TABLE_COMMENT:51Testing软件测试网d OJ6T(i E4x
3 rows in set (0.00 sec)51Testing软件测试网/Wp G'Sv
&Z`U(d6{3jz0 2、FILES。关于NDB硬盘数据文件的信息。
M.P:R,uF jo051Testing软件测试网:?:j ~Fn9c3、TABLE_CONSTRAINS、KEY_COLUMN_USAGE:关于数据表和数据列上的约束条件的信息,一般唯一化索引和外键都属于这些约束条件。
)q*WQ#r0R(p~051Testing软件测试网\W9oD%y"D jh8o*z.S5e4、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'k07zqsMR/O?'N0 7、ENGINES、PLUGINS。关于存储引擎和服务器插件的信息。51Testing软件测试网4}&J,i oJ1y d$}-gu
Y'F,N H STF0 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\lV-s8n(?0:TCef?\g0 10、GLOBAL_VARIABLES、SESSION_VARIABLES、GLOBAL_STATUS、SESSION_STATUS。全局和会话级系统变量和状态变量的值。
5SB*X1xpF03ES!nb \ S r0 三、从命令行获取元数据51Testing软件测试网Qod*Z Hj} n
pkyxb(V'Di0 先介绍一个命令的使用:mysqlshow。
|HjD0_ p051Testing软件测试网| Pw b9BAyx{a^@)D0Td#O9_3[U0mysqlshow[选项] [db_name [tbl_name [col_name]]] |
1、如果没有给出数据库,显示所有匹配的数据库。51Testing软件测试网 ?$MT5Ck
51Testing软件测试网[,f1H[g[N1G2、如果没有给出表,显示数据库中所有匹配的表。51Testing软件测试网u5Vx2v-aX R
51Testing软件测试网"HsVEu(n%n3、如果没有给出列,显示表中所有匹配的列和列类型。51Testing软件测试网Ven5W4N/N D
51Testing软件测试网O)AVPMa)H说明几个常用的选项信息:51Testing软件测试网#@+@0BG+eIqUm
0v"S*USj0 1、--keys。查看某给定数据表里的索引信息。51Testing软件测试网q(Rigo N&I
51Testing软件测试网-xl:KaB}7Dld2、--status。查看某给定数据库里的数据表的描述性信息。如:
!P@M(^{R?051Testing软件测试网be3a-g"U.Lc-S51Testing软件测试网;\L!~_Xcp
[root@localhost ~]# mysqlshow --status db_info51Testing软件测试网R7Dj)Vj/q
Z6x Database: db_info 3C SDB.l)ss0+--------+--------+---------+------------+------+----------------+-------------+------------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------+ |