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

Gen*_*nik 53 mysql

我有一个目前的专栏,varchar(100)我想成功10000.

就像它一样简单

alter table table_name set column col_name varchar (10000);
Run Code Online (Sandbox Code Playgroud)

我害怕破坏现有的数据.如果我运行此查询,我会没事吗?或者我应该alter以另一种方式做我的专栏?

谢谢!

Lyn*_*ing 94

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

如果它可以帮助您高枕无忧,请记住,在更改数据结构之前,您始终可以运行数据库备份.

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

ALTER TABLE table_name MODIFY col_name VARCHAR(10000)
Run Code Online (Sandbox Code Playgroud)

此外,如果以前允许列/没有允许空值,你应该适当的语法添加到ALTER TABLE语句的末尾,列类型之后.

  • +1首先推荐备份.无论这种改变最初看起来多么温和.总是做一个备份.:) (10认同)
  • 使用`show create table someTableName`在更改列之前确定列的其他功能! (7认同)

hjp*_*r92 47

我通常使用这个声明:

ALTER TABLE `table_name`
  CHANGE COLUMN `col_name` `col_name` VARCHAR(10000);
Run Code Online (Sandbox Code Playgroud)

但是,我认为SET也会起作用,从未尝试过.:)

  • 请小心你的外壳,因为mysql很乐意为你改变专栏的情况. (4认同)
  • 在postgres中它是`ALTER TABLE \`tablename \`ALTER COLUMN \`columnname \`TYPE VARCHAR(64);`我提到它是因为没有提到mysql的搜索让我来到这里 (3认同)

Mik*_*ser 18

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

用于添加/删除列的默认值:

ALTER TABLE table_name
ALTER COLUMN col_name {SET DEFAULT literal | DROP DEFAULT}
Run Code Online (Sandbox Code Playgroud)

对于重命名列,更改其数据类型以及可选地更改列顺序:

ALTER TABLE table_name
CHANGE [COLUMN] old_col_name new_col_name column_definition
[FIRST|AFTER col_name]
Run Code Online (Sandbox Code Playgroud)

要更改列的数据类型并可选择更改列顺序,请执行以下操作:

ALTER TABLE table_name
MODIFY [COLUMN] col_name column_definition
[FIRST | AFTER col_name]
Run Code Online (Sandbox Code Playgroud)

  • +1 用于在不同情况下使用不同的命令(`alter`、`change` 和 `modify`)给出更多记录的响应。 (2认同)