分类: Mysql/postgreSQL
2008-05-12 15:01:21
COLUMNS表给出了表中的列信息。
标准名称 |
SHOW名称 |
注释 |
TABLE_CATALOG |
|
NULL |
TABLE_SCHEMA |
|
|
TABLE_NAME |
|
|
COLUMN_NAME |
Field |
|
ORDINAL_POSITION |
|
参见注释 |
COLUMN_DEFAULT |
Default |
|
IS_NULLABLE |
Null |
|
DATA_TYPE |
Type |
|
CHARACTER_MAXIMUM_LENGTH |
Type |
|
CHARACTER_OCTET_LENGTH |
|
|
NUMERIC_PRECISION |
Type |
|
NUMERIC_SCALE |
Type |
|
CHARACTER_SET_NAME |
|
|
COLLATION_NAME |
Collation |
|
COLUMN_TYPE |
Type |
MySQL扩展 |
COLUMN_KEY |
Key |
MySQL扩展 |
EXTRA |
Extra |
MySQL扩展 |
COLUMN_COMMENT |
Comment |
MySQL扩展 |
注释:
· 在SHOW中,类型显示包括来自数个不同COLUMNS列的值。
· ORDINAL_POSITION有必要,这是因为,你可能会在某一天需要ORDER BY ORDINAL_POSITION(按ORDINAL_POSITION排序)。不同于SHOW,SELECT没有自动排序功能。
· CHARACTER_OCTET_LENGTH应与CHARACTER_MAXIMUM_LENGTH相同,但多字节字符集除外。
· CHARACTER_SET_NAME可由Collation(校对)导出。例如,如果给出了“SHOW FULL COLUMNS FROM t”,在Collation(校对)列中将见到latin1_swedish_ci的值,字符集由第1个下划线前的名称指明。latin1.
下述语句是等效的:
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 COLUMNS
FROM tbl_name
[FROM db_name]
[LIKE wild]
STATISTICS表给出了关于表索引的信息。
标准名称 |
SHOW名称 |
注释 |
TABLE_CATALOG |
|
NULL |
TABLE_SCHEMA |
|
=数据库 |
TABLE_NAME |
Table |
|
NON_UNIQUE |
Non_unique |
|
INDEX_SCHEMA |
|
=数据库 |
INDEX_NAME |
Key_name |
|
SEQ_IN_INDEX |
Seq_in_index |
|
COLUMN_NAME |
Column_name |
|
COLLATION |
Collation |
|
CARDINALITY |
Cardinality |
|
SUB_PART |
Sub_part |
MySQL扩展 |
PACKED |
Packed |
MySQL扩展 |
NULLABLE |
Null |
MySQL扩展 |
INDEX_TYPE |
Index_type |
MySQL扩展 |
COMMENT |
Comment |
MySQL扩展 |
注释:
· 没有关于这些索引的标准表。上面的列表与SQL服务器2000中sp_statistics返回的值类似。不同之处在于用CATALOG替换了QUALIFIER,并用SCHEMA替换了OWNER。
显而易见,前述表和SHOW INDEX的输出均是由相同的父对象导出的。因此,相关性已关闭。
下述语句是等效的:
SELECT * FROM INFORMATION_SCHEMA.STATISTICS
WHERE table_name = 'tbl_name'
[AND table_schema = 'db_name']
SHOW INDEX
FROM tbl_name
[FROM db_name]
USER_PRIVILEGES(用户权限)表给出了关于全程权限的信息。该信息源自mysql.user授权表。
标准名称 |
SHOW名称 |
注释 |
GRANTEE |
|
例如“user'@'host” |
TABLE_CATALOG |
|
NULL |
PRIVILEGE_TYPE |
|
|
IS_GRANTABLE |
|
|
注释:
· 这是一个非标准表。其值来自mysql.user表。
SCHEMA_PRIVILEGES(方案权限)表给出了关于方案(数据库)权限的信息。该信息来自mysql.db授权表。
标准名称 |
SHOW名称 |
注释 |
GRANTEE |
|
例如“user'@'host” |
TABLE_CATALOG |
|
NULL |
TABLE_SCHEMA |
|
|
PRIVILEGE_TYPE |
|
|
IS_GRANTABLE |
|
|
注释:
· 这是一个非标准表。其值来自mysql.db表。
TABLE_PRIVILEGES(表权限)表给出了关于表权限的信息。该信息源自mysql.tables_priv授权表。
标准名称 |
SHOW名称 |
注释 |
GRANTEE |
|
例如“user'@'host” |
TABLE_CATALOG |
|
NULL |
TABLE_SCHEMA |
|
|
TABLE_NAME |
|
|
PRIVILEGE_TYPE |
|
|
IS_GRANTABLE |
|
|
下述语句不等效:
SELECT ... FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES
SHOW GRANTS ...
PRIVILEGE_TYPE可以包含这些值之一(仅能一个):SELECT、INSERT、UPDATE、REFERENCES、ALTER、INDEX、DROP、CREATE VIEW。
COLUMN_PRIVILEGES(列权限)表给出了关于列权限的信息。该信息源自mysql.columns_priv授权表。
标准名称 |
SHOW名称 |
注释 |
GRANTEE |
|
例如“user'@'host” |
TABLE_CATALOG |
|
NULL |
TABLE_SCHEMA |
|
|
TABLE_NAME |
|
|
COLUMN_NAME |
|
|
PRIVILEGE_TYPE |
|
|
IS_GRANTABLE |
|
|
注释:
· 在SHOW FULL COLUMNS(显示完整列)的输出中,权限值位于一个字段并采用小写形式,例如select、insert、update、references。在COLUMN_PRIVILEGES中,每种权限占一行,并为大写形式。
· PRIVILEGE_TYPE可以包含这些值之一(仅能一个):SELECT, INSERT, UPDATE, REFERENCES.
· 如果用户有GRANT OPTION权限,那么IS_GRANTABLE应为YES。否则,IS_GRANTABLE应为NO。在输出中,不会将GRANT OPTION作为单独权限列出。
下述语句不等效:
SELECT ... FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES
SHOW GRANTS ...
CHARACTER_SETS(字符集)表提供了关于可用字符集的信息。
标准名称 |
SHOW名称 |
注释 |
CHARACTER_SET_NAME |
Charset |
|
DEFAULT_COLLATE_NAME |
Default collation |
|
DESCRIPION |
Description |
MySQL扩展 |
MAXLEN |
Maxlen |
MySQL扩展 |
注释:
· 我们增加了两个非标准列,分别对应于SHOW CHARACTER SET输出的Description(描述)和Maxlen(最大长度)列。
下述语句是等效的:
SELECT * FROM INFORMATION_SCHEMA.CHARACTER_SETS
[WHERE name LIKE 'wild']
SHOW CHARACTER SET
[LIKE 'wild']
COLLATIONS表提供了关于各字符集的对照信息。
标准名称 |
SHOW名称 |
注释 |
COLLATION_NAME |
Collation |
|
注释:
· 我们增加了5个非标准列,分别对应于SHOW COLLATION输出的Charset、Id、Default、Compiled和Sortlen列。
下述语句是等效的:
SELECT COLLATION_NAME FROM INFORMATION_SCHEMA.COLLATIONS
[WHERE collation_name LIKE 'wild']
SHOW COLLATION
[LIKE 'wild']
COLLATION_CHARACTER_SET_APPLICABILITY表指明了可用于校对的字符集。这些列等效于SHOW COLLATION的前两个显示字段。
标准名称 |
SHOW名称 |
注释 |
COLLATION_NAME |
Collation |
|
CHARACTER_SET_NAME |
Charset |
|
TABLE_CONSTRAINTS表描述了存在约束的表。
标准名称 |
SHOW名称 |
注释 |
CONSTRAINT_CATALOG |
|
NULL |
CONSTRAINT_SCHEMA |
|
|
CONSTRAINT_NAME |
|
|
TABLE_SCHEMA |
|
|
TABLE_NAME |
|
|
CONSTRAINT_TYPE |
|
|
注释:
· CONSTRAINT_TYPE的值可以是UNIQUE(唯一)、PRIMARY KEY(主键)或FOREIGN KEY(外键)。
· 当Non_unique字段为0时,UNIQUE和PRIMARY KEY信息与SHOW INDEX输出的Key_name字段中给出的信息基本相同。
· CONSTRAINT_TYPE列可包含下述值之一:UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK。这是一个CHAR(非ENUM)列。在我们支持CHECK前,CHECK值不可用。
KEY_COLUMN_USAGE表描述了具有约束的键列。
标准名称 |
SHOW名称 |
注释 |
CONSTRAINT_CATALOG |
|
NULL |
CONSTRAINT_SCHEMA |
|
|
CONSTRAINT_NAME |
|
|
TABLE_CATALOG |
|
|
TABLE_SCHEMA |
|
|
TABLE_NAME |
|
|
COLUMN_NAME |
|
|
ORDINAL_POSITION |
|
|
POSITION_IN_UNIQUE_CONSTRAINT |
|
|
REFERENCED_TABLE_SCHEMA |
|
|
REFERENCED_TABLE_NAME |
|
|
REFERENCED_COLUMN_NAME |
|
|
注释:
· 如果约束为外键,这就是外键列,而不是外键引用的列。
· ORDINAL_POSITION的值是列在约束中的位置,而不是列在表中的位置。列位置采用从1开始的数值编号。
· 对于“唯一”和“主键”约束,POSITION_IN_UNIQUE_CONSTRAINT的值为NULL。对于“外键”约束,它是所引用表内键中的顺序位置。
例如,假定有两个具有下述定义的表t1和t3:
CREATE TABLE t1
(
s1 INT,
s2 INT,
s3 INT,
PRIMARY KEY(s3)
) ENGINE=InnoDB;
CREATE TABLE t3
(
s1 INT,
s2 INT,
s3 INT,
KEY(s1),
CONSTRAINT CO FOREIGN KEY (s2) REFERENCES t1(s3)
) ENGINE=InnoDB;
对于这两个表,KEY_COLUMN_USAGE表有两行:
o 一行含有CONSTRAINT_NAME='PRIMARY', TABLE_NAME='t1', COLUMN_NAME='s3', ORDINAL_POSITION=1, POSITION_IN_UNIQUE_CONSTRAINT=NULL。
o 另一行含有CONSTRAINT_NAME='CO', TABLE_NAME='t3', COLUMN_NAME='s2', ORDINAL_POSITION=1, POSITION_IN_UNIQUE_CONSTRAINT=1。