在程序中,若想要动态地得到某一个表的具体信息,就使用到了MySQL 中的 INFORMATION_SCHEMA 信息数据库,而它又包含很多表,见下:
INFORMATION_SCHEMA SCHEMATA表
INFORMATION_SCHEMA TABLES表
INFORMATION_SCHEMA COLUMNS表
INFORMATION_SCHEMA
STATISTICS
表
INFORMATION_SCHEMA USER_PRIVILEGES表
INFORMATION_SCHEMA SCHEMA_PRIVILEGES表
INFORMATION_SCHEMA TABLE_PRIVILEGES表
INFORMATION_SCHEMA COLUMN_PRIVILEGES表
INFORMATION_SCHEMA CHARACTER_SETS表
INFORMATION_SCHEMA COLLATIONS表
INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY表
INFORMATION_SCHEMA TABLE_CONSTRAINTS表
INFORMATION_SCHEMA KEY_COLUMN_USAGE表
INFORMATION_SCHEMA ROUTINES表
INFORMATION_SCHEMA VIEWS表
INFORMATION_SCHEMA TRIGGERS表
|
其中的 COLUMNS 表给出了某一个表中的具体的列信息:我们在 'test' 库中建立 'documents' 表,语句如下:
CREATE
TABLE
`documents` (
`id`
int
(11)
NOT
NULL
auto_increment,
`group_id`
int
(11)
NOT
NULL
,
`group_id2`
int
(11)
NOT
NULL
,
`date_added` datetime
NOT
NULL
,
`title`
varchar
(255)
NOT
NULL
,
`content` text
NOT
NULL
,
PRIMARY
KEY
(`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5
DEFAULT
CHARSET=gbk
|
字段以及索引信息为:
/*字段信息 - test.documents*/
-----------------------------
Field Type Collation
Null
Key
Default
Extra
Privileges
Comment
---------- ------------ -------------- ------ ------ ------- -------------- ------------------------------- -------
id
int
(11) (
NULL
)
NO
PRI (
NULL
) auto_increment
select
,
insert
,
update
,
references
group_id
int
(11) (
NULL
)
NO
select
,
insert
,
update
,
references
group_id2
int
(11) (
NULL
)
NO
select
,
insert
,
update
,
references
date_added datetime (
NULL
)
NO
select
,
insert
,
update
,
references
title
varchar
(255) gbk_chinese_ci
NO
select
,
insert
,
update
,
references
content text gbk_chinese_ci
NO
select
,
insert
,
update
,
references
/*索引信息 - test.documents*/
-----------------------------
Table
Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed
Null
Index_type Comment
--------- ---------- -------- ------------ ----------- --------- ----------- -------- ------ ------ ---------- -------
documents 0
PRIMARY
1 id A 4 (
NULL
) (
NULL
) BTREE
|
|
好啦!建表结束!先来了解一下 INFORMATION_SCHEMA COLUMNS 表:
下面我们开始了解它!键入 SQL 语句:
SELECT
COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
table_name =
'documents'
|
结果如下,可以对照我们刚开始的建表语句以及字段信息:
当然,还可以参照如下格式的 SQL 语句来查看其他字段的查询信息:
SELECT
COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
table_name =
'tbl_name'
[
AND
table_schema =
'db_name'
]
[
AND
column_name
LIKE
'wild'
]
|
接下来看看 SHOW 语句和它的异同:键入 SQL 语句:
SHOW COLUMNS
FROM
`documents`
|
结果如下:
SHOW 语句的基本格式为:
SHOW COLUMNS
FROM
tbl_name
[
FROM
db_name]
[
LIKE
wild]
|
更多详细的内容,请参看 MySQL 手册。