SELECT
b.TABLE_SCHEMA AS '数据库名',
b.TABLE_NAME AS '表名',
a.TABLE_COMMENT AS '表中文名',
b.COLUMN_NAME AS '列名',
b.COLUMN_TYPE AS '类型',
b.COLUMN_DEFAULT AS '默认值',
b.IS_NULLABLE AS '允许为空',
b.DATA_TYPE AS '数据类型',
b.CHARACTER_MAXIMUM_LENGTH AS '字符最大长度',
b.NUMERIC_PRECISION AS '数字精度',
b.NUMERIC_SCALE AS '小数位数',
b.COLUMN_COMMENT AS '字段说明'
FROM
information_schema.TABLES a
LEFT JOIN information_schema.COLUMNS b ON a.table_name = b.TABLE_NAME
WHERE
a.TABLE_SCHEMA = 'test'
SELECT 子句
SELECT
b.TABLE_SCHEMA AS '数据库名',
b.TABLE_NAME AS '表名',
a.TABLE_COMMENT AS '表中文名',
b.COLUMN_NAME AS '列名',
b.COLUMN_TYPE AS '类型',
b.COLUMN_DEFAULT AS '默认值',
b.IS_NULLABLE AS '允许为空',
b.DATA_TYPE AS '数据类型',
b.CHARACTER_MAXIMUM_LENGTH AS '字符最大长度',
b.NUMERIC_PRECISION AS '数字精度',
b.NUMERIC_SCALE AS '小数位数',
b.COLUMN_COMMENT AS '字段说明'
b.TABLE_SCHEMA
:数据库的名称。b.TABLE_NAME
:表的名称。a.TABLE_COMMENT
:表的注释(中文名)。b.COLUMN_NAME
:列的名称。b.COLUMN_TYPE
:列的类型(如 VARCHAR(255)
)。b.COLUMN_DEFAULT
:列的默认值。b.IS_NULLABLE
:列是否允许为空(YES 或 NO)。b.DATA_TYPE
:列的数据类型(如 VARCHAR、INT 等)。b.CHARACTER_MAXIMUM_LENGTH
:字符型数据的最大长度。b.NUMERIC_PRECISION
:数字型数据的精度。b.NUMERIC_SCALE
:数字型数据的小数位数。b.COLUMN_COMMENT
:列的注释。
FROM 子句
FROM
information_schema.TABLES a
LEFT JOIN information_schema.COLUMNS b ON a.table_name = b.TABLE_NAME
information_schema.TABLES a
:包含表的元数据。LEFT JOIN information_schema.COLUMNS b
:包含列的元数据。使用 LEFT JOIN
将 information_schema.COLUMNS
中的列信息与 information_schema.TABLES
中的表信息连接起来。- 连接条件是
a.table_name = b.TABLE_NAME
,这意味着 TABLES
表和 COLUMNS
表中表名相同的记录会被连接。
WHERE 子句
WHERE
a.TABLE_SCHEMA = 'test'
a.TABLE_SCHEMA = 'test'
:只获取 TABLE_SCHEMA
为 'test'
的表及其列的信息。也就是说,只检索 test
数据库中的表和列。