【问题标题】:How to rearrange MySQL columns?如何重新排列 MySQL 列?
【发布时间】:2011-02-25 10:23:19
【问题描述】:

我需要移动现有列的位置(以获得更好的可见性)。

如何在不影响数据的情况下做到这一点?

【问题讨论】:

标签: mysql


【解决方案1】:

Modify 也可以。看看:

ALTER TABLE foo MODIFY bar bartype AFTER baz;

【讨论】:

  • 谁能解释一下 CHANGE COLUMN 和 MODIFY 之间的区别? MODIFY 是轻量级的操作吗?它不锁表吗?谢谢。更新:看起来很像 CHANGE 和 MODIFY 是同义词,其中 MODIFY 是为 Oracle 用户添加的。 dev.mysql.com/doc/refman/5.7/en/alter-table.html
  • 这可行,但请注意(至少在我的设置中)移动列会从该列中删除任何 auto_increment 设置。
  • 如果您没有在 alter 语句中指定默认值,也会丢失默认值。
【解决方案2】:

我知道的唯一方法是更改​​列。您将首先使用SHOW CREATE TABLE 提取列定义并发出ALTER TABLE

ALTER TABLE foo
CHANGE COLUMN bar
bar COLUMN_DEFINITION_HERE
FIRST;

或者如果你想要它某个其他列之后:

... AFTER OTHER_COLUMN;

【讨论】:

  • 我在使用BEFORE 时遇到了问题,而我使用了FIRST
  • MySQL语法link中没有BEFORE,只有AFTER和FIRST
  • 如果您只想对列重新排序,ALTER TABLE ... MODIFY 更可取,因为它不会以语法格式再次要求您输入列名,您可以不小心重命名列,而 MODIFY 不会.
【解决方案3】:
  1. 先Alter Table table_name修改column_name column_datatype;
  2. Alter Table table_name modify column_name column_datatype after other_column_name;

【讨论】:

    【解决方案4】:

    基于@VKGS 的回答:

    如果您的表名为 language 是:

    |      description    |         name     |
    |---------------------|------------------|
    |      fbi agent      |         jane     |
    |---------------------|------------------|
    |      mi6 agent      |         kurt     |
    |---------------------|------------------|
    

    而你想让列名成为第一列或描述之前,执行这个:

    ALTER TABLE language MODIFY description varchar(100) AFTER name;
    

    不要忘记列的类型。

    【讨论】:

    • 通过修改,你必须把整个列定义包括NULL / NOT NULL,DEFAULT value,COMMENT...
    【解决方案5】:

    这里是sql查询:

    ALTER TABLE table_name MODIFY COLUMN misplaced_column Column-definition AFTER other_column;
    

    Column-definition 中的这里是完整的列定义。如果您使用 phpMyAdmin,要查看列定义,请单击结构选项卡。然后单击所需列上的更改链接。然后不修改任何东西点击保存。它会显示你的sql。复制sql并在末尾添加AFTER other_column

    如果您想将 misplaced_column 放到第一个位置,那么:

    ALTER TABLE table_name MODIFY COLUMN misplaced_column Column-definition FIRST;
    

    【讨论】:

      【解决方案6】:

      转到Structure 并单击Move Columns,然后只需拖动列即可重新排列。

      【讨论】:

      • 你没有提到你正在使用什么工具。
      猜你喜欢
      • 1970-01-01
      • 2017-08-25
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 2017-12-19
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      相关资源
      最近更新 更多