首页  >  问答  >  正文

标题重写为:成功解决 - 无法使用mysql命令行更新mySQL列名的问题

<p>我无法更改我创建的mysql数据库中的列名。</p> <p>我尝试了以下命令,但似乎都没有起作用。</p> <pre class="brush:php;toolbar:false;">alter table (mytablename) CHANGE COLUMN (oldcolumnname) (newcolumnname) varchar(120);</pre> <pre class="brush:php;toolbar:false;">alter table (mytablename) RENAME COLUMN (oldcolumnname) (newcolumnname) varchar(120);</pre> <pre class="brush:php;toolbar:false;">ALTER TABLE (mytablename) CHANGE (oldcolumnname) (newcolumnname) varchar(120);</pre> <p>其中(mytablename)是我创建的表的名称,(oldcolumnname)是原始列名,(newcolumnname)是新的列名。</p> <p>这是我创建的一个简单的待办事项列表,用于学习MySQL,其中包含以下项目:</p> <table class="s-table"> <thead> <tr> <th>id</th> <th>todo</th> <th>completed</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>准备起飞</td> <td>是</td> </tr> <tr> <td>2</td> <td>学习一些MySQL</td> <td>是</td> </tr> <tr> <td>3</td> <td>记住那个该死的分号</td> <td>否</td> </tr> </tbody> </table> <p>在这种情况下,我尝试将列'todo'更改为'To Do'或'To-Do',但每次我尝试这些命令时,都会出现著名的“检查您的SQL版本手册”。</p> <p>有关我可能做错了什么的提示吗?谢谢!</p> <p>我已经查看了多个教程网站,甚至查看了另一个StackOverflow的问题</p> <p><strong>更新</strong> 最终的解决方案是两个步骤。首先,我需要在列名之间使用<strong>TO</strong>短语。其次,列名不喜欢特殊字符。</p> <p>最终起作用的查询是:</p> <pre class="brush:php;toolbar:false;">ALTER TABLE mytablename CHANGE COLUMN todo TO ToDo</pre> <p><br /></p>
P粉343408929P粉343408929402 天前524

全部回复(1)我来回复

  • P粉448130258

    P粉4481302582023-08-21 19:44:33

    你应该保留名为todo的列;当你选择时,你可以随时更改输出,如下所示:

    select id, todo as 'To Do', completed from ...

    如果你真的觉得必须在列名中包含空格或破折号,在mysql中你可以使用任意标识符,只要将它们用反引号括起来:

    alter table ... rename column todo to `To Do`

    但是每次在sql中引用该列时,你都需要将其用反引号括起来:

    select id,`To Do`,completed from ... where `To Do` like '%learn%'

    回复
    0
  • 取消回复