MySQL元数据查询–使用COLUMNS表获取列结构和定义

140 阅读1分钟

MySQL元数据查询–使用COLUMNS表获取列结构和定义

Joshua Otwell 【hudson译】

2022年9月14号

INFORMATION_SCHEMA数据库包含有关数据库的信息和元数据。列是必需的,它们的定义确保了良好的存储和数据完整性。使用COLUMNS表了解所有相关信息。

澄清:INFORMATION_SCHEMA中的表实际上是视图。

INFORMATION_SCHEMA COLUMNS表

虽然columns表由几列组成,但在这个查询中,我只选择几列,让您了解可用的内容:

SELECT COLUMN_NAME, ORDINAL_POSITION, DATA_TYPE, COLUMN_DEFAULT, IS_NULLABLE
FROM COLUMNS
WHERE TABLE_SCHEMA = 'walking'
AND TABLE_NAME = 'walking_stats';

img

像往常一样,检索您感兴趣的特定行的关键是基于WHERE子句条件。

相关资料: MySQL 初学者系列:用WHERE子句限制返回的行

在COLUMNS表中,归根结底是根据TABLE_SCHEMA和TABLE_NAME列筛选行。

推荐初学者书籍:我强烈推荐这本书,学习SQL:生成 ,操作,和 查询数据 ,适用于SQL初学者。这是我第一本真正的SQL书,帮助我巩固了很多概念。你不会失望的。

在脚本中使用 INFORMATION_SCHEMA COLUMNS

从COLUMNS表中的数据创建一些 ‘基础脚本‘ 可能很有用。创建数据定义语言 (DDL)脚本绝对有其他方法,但您可以自己制作其中一些脚本。

SELECT
CONCAT('ALTER TABLE some_table ADD COLUMN ' ,COLUMN_NAME, ' ',
CASE WHEN UPPER(DATA_TYPE) = 'DECIMAL' THEN CONCAT(UPPER(DATA_TYPE),'(', NUMERIC_PRECISION,',', NUMERIC_SCALE, ')')
ELSE UPPER(DATA_TYPE) END,
';') AS cols_definition
FROM COLUMNS
WHERE TABLE_SCHEMA = 'walking'
AND TABLE_NAME = 'walking_stats';

img

使用SQL创建SQL非常强大而且方便。虽然上面示例生成的“粗略脚本”只是开头,但您已经对可以使用COLUMNS表中的一些信息你爱编写SQL脚本有些认识。