在程序中,若想要动态地得到某一个表的具体信息,就使用到了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 手册。