标题重写为:成功解决 - 无法使用mysql命令行更新mySQL列名的问题
P粉343408929
2023-08-20 21:03:11
<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>
你应该保留名为todo的列;当你选择时,你可以随时更改输出,如下所示:
如果你真的觉得必须在列名中包含空格或破折号,在mysql中你可以使用任意标识符,只要将它们用反引号括起来:
但是每次在sql中引用该列时,你都需要将其用反引号括起来: