|
|
mysql问题
SELECT
`COLUMN_NAME`
`COLUMN_COMMENT`
`DATA_TYPE`
CASE
WHEN `DATA_TYPE` IN ('char', 'varchar') THEN CHARACTER_MAXIMUM_LENGTH
WHEN `DATA_TYPE` IN ('decimal', 'numeric') THEN NUMERIC_PRECISION
ELSE NULL
END
CASE
WHEN `DATA_TYPE` IN ('decimal', 'numeric') THEN NUMERIC_SCALE
ELSE 0
END
FROM `INFORMATION_SCHEMA`.`COLUMNS`
代码之中
`INFORMATION_SCHEMA`.`COLUMNS`
是sql什么用法啊
我上网搜索不知道在那里学习
你好!INFORMATION_SCHEMA.COLUMNS 是 MySQL 中的一个系统视图(表),它存储了数据库中所有表的列信息(元数据)。简单来说,通过查询它,你可以获取到某个表有哪些列、每列的数据类型、注释等详细信息。
在你提供的 SQL 语句中,目的是从该视图查询列名、注释、数据类型,并根据数据类型计算长度或精度。不过,你的 SQL 有几处语法错误,我修正如下:
- SELECT
- `COLUMN_NAME`,
- `COLUMN_COMMENT`,
- `DATA_TYPE`,
- CASE
- WHEN `DATA_TYPE` IN ('char', 'varchar') THEN CHARACTER_MAXIMUM_LENGTH
- WHEN `DATA_TYPE` IN ('decimal', 'numeric') THEN NUMERIC_PRECISION
- ELSE NULL
- END AS '长度/精度',
- CASE
- WHEN `DATA_TYPE` IN ('decimal', 'numeric') THEN NUMERIC_SCALE
- ELSE 0
- END AS '小数位数'
- FROM `INFORMATION_SCHEMA`.`COLUMNS`
- WHERE `TABLE_SCHEMA` = '你的数据库名' AND `TABLE_NAME` = '你的表名';
复制代码
主要修正:
- 添加了逗号分隔各列。
- 为两个 CASE 表达式添加了别名(AS)。
- 增加了 WHERE 条件,用于指定数据库和表名,否则会返回所有数据库的所有列,数据量巨大。
关于如何学习 INFORMATION_SCHEMA:
- 官方文档:最权威的学习资料是 MySQL 官方手册。你可以搜索“MySQL INFORMATION_SCHEMA COLUMNS”来找到官方文档页面,其中详细介绍了这个视图包含哪些字段以及含义。
- 实践查询:直接在 MySQL 中运行 DESC INFORMATION_SCHEMA.COLUMNS; 或 SELECT * FROM INFORMATION_SCHEMA.COLUMNS LIMIT 1; 来查看它的结构。
- 书籍和教程:许多 SQL 或 MySQL 的书籍和在线教程中,都会有“元数据查询”或“系统表”相关章节,里面会介绍 INFORMATION_SCHEMA。
- 社区和论坛:像 FishC 这样的技术社区,有很多讨论和示例可以参考。
简单来说,INFORMATION_SCHEMA 是 MySQL 提供的一个信息数据库,用于查询数据库、表、列、权限等元数据信息,是进行数据库管理和维护的重要工具。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|