MySQL - 如何在不破坏现有数据的情况下增加数据库中现有列的 varchar 大小?

问题描述 投票:0回答:7

我有一个专栏目前是

varchar(100)
,我想将其制作为
10000

是不是这么简单

alter table table_name set column col_name varchar (10000);

我担心会损坏现有数据。如果我运行这个查询可以吗?或者我应该用另一种方式

alter
专栏?

mysql
7个回答
131
投票

增加 varchar 列的大小是安全的。您不会损坏您的数据。

如果这有助于您安心,请记住,您可以在更改数据结构之前始终运行数据库备份

顺便说一下,正确的语法是:

ALTER TABLE table_name MODIFY col_name VARCHAR(10000)

此外,如果列之前允许/不允许空值,则应将适当的语法添加到 alter table 语句的末尾、列类型之后。


64
投票

我通常使用这个说法:

ALTER TABLE `table_name`
  CHANGE COLUMN `col_name` `col_name` VARCHAR(10000);

但是,我认为SET也可以,从来没有尝试过。 :)


25
投票

我想解释不同的 alter table 语法 - 请参阅 MySQL 文档

添加/删除列上的默认值:

ALTER TABLE table_name
ALTER COLUMN col_name {SET DEFAULT literal | DROP DEFAULT}

要重命名列、更改其数据类型并可选择更改列顺序:

ALTER TABLE table_name
CHANGE [COLUMN] old_col_name new_col_name column_definition
[FIRST|AFTER col_name]

要更改列的数据类型并可选择更改列顺序:

ALTER TABLE table_name
MODIFY [COLUMN] col_name column_definition
[FIRST | AFTER col_name]

1
投票

对我来说这个是有效的:

ALTER TABLE 表名 MODIFY 字段名 VARCHAR(128) NOT NULL;


0
投票

我发帖只是为了以防万一有人最近有这个问题,就像我一样。

要更改数据类型以接受 Mysql 中更大的数据,请声明 在实现(在本例中)新的较大数据类型之前两次列名:

ALTER TABLE TableName 
CHANGE CurrentColumnName CurrentColumnName NewDataType;

-3
投票

我正在使用 mysql,下面的语法对我来说效果很好,

ALTER TABLE table_name MODIFY col_name VARCHAR(12);

-3
投票

对我来说这很有效-

更改表表名 更改列列名称 VARCHAR(50)

© www.soinside.com 2019 - 2024. All rights reserved.