gpt4 book ai didi

mysql - 从 INFORMATION_SCHEMA COLUMNS 表构建列定义

转载 作者:行者123 更新时间:2023-11-29 04:12:11 26 4
gpt4 key购买 nike

我想以编程方式重命名数据库中的列,而 MySQL 强制我在 CHANGE 语句中指定列定义。

ALTER TABLE table_name CHANGE old_name new_name column_definition 

因此,我想从 INFORMATION_SCHEMA.COLUMNS 表构建列定义。我已经阅读了调整我以解析 SHOW CREATE TABLE table_name 输出的答案,但由于某些原因我不想这样做。

如果可能的话,我希望将列定义作为单个 SQL 脚本的结果。

最佳答案

试试这个:

select COLUMN_TYPE from INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '{database name}' AND TABLE_NAME = '{table name}' AND COLUMN_NAME = '{column name}';

您需要填写正确的值,但它应该为您提供您需要填写到 ALTER 语句中的精确字符串。您将需要做一些额外的工作来处理默认语句和 NULL 设置。

完整示例:

SELECT CONCAT(
CAST(COLUMN_NAME AS CHAR),
' ',
CAST(COLUMN_TYPE AS CHAR),
IF(ISNULL(CHARACTER_SET_NAME),
'',
CONCAT(' CHARACTER SET ', CHARACTER_SET_NAME)),
IF(ISNULL(COLLATION_NAME), '', CONCAT(' COLLATE ', COLLATION_NAME)),
' ',
IF(IS_NULLABLE = 'NO', 'NOT NULL ', ''),
IF(IS_NULLABLE = 'NO' AND ISNULL(COLUMN_DEFAULT),
'',
CONCAT('DEFAULT ', QUOTE(COLUMN_DEFAULT), ' ')),
UPPER(extra))
AS column_definition
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'table_schema'
AND TABLE_NAME = 'table_name'
AND COLUMN_NAME = 'column_name';

编辑 添加了默认值、排序规则和字符集的引用。

关于mysql - 从 INFORMATION_SCHEMA COLUMNS 表构建列定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7419225/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com