【发布时间】:2015-04-23 20:14:53
【问题描述】:
我正在通过阅读“Head First SQL”一书来学习 MySQL,但我遇到了障碍。我似乎无法理解下面的代码。具体来说,我有几个问题。
当我尝试在控制台(Wamp 上的 MySQL)上运行整个代码时,出现多个错误。但是,当我将每个 ALTER 命令(例如 ALTER table_name RENAME TO new_table_name;)分开时,大部分代码都会毫无问题地通过控制台。这是为什么?根据这本书,整个代码应该可以工作。
我在单独复制/粘贴代码时遇到的一个错误与排序有关,例如“FIRST”、“SECOND”、“AFTER”等。为什么会发生这种情况?
最后,为什么有些 ALTER 命令,例如 RENAME 和 ADD COLUMN 需要 ALTER TABLE table_name,而其他命令,例如 CHANGE 或修改列不?这本书没有很好地解释这方面的任何内容,所以我很好奇为什么允许我用一些但不是所有的代码来做这件事。
我遇到的错误可能是代码过时的结果吗?这本书出版于 2007 年,所以我不确定代码是否过时。
非常感谢所有和任何建议。感谢您的时间!
代码: ALTER TABLE 表名 重命名为 new_table_name,
ALTER TABLE new_table_name
ADD COLUMN column1 INT NOT NULL AUTO_INCREMENT FIRST,
ADD PRIMARY KEY(column1),
ALTER TABLE new_table_name
ADD COLUMN column2 VARCHAR(16) SECOND,
CHANGE COLUMN column3 new_column3 VARCHAR(20),
MODIFY COLUMN column4 AFTER column3,
MODIFY COLUMN column5 SIXTH,
CHANGE COLUMN column6 DECIMAL(7,2);
【问题讨论】:
-
ALTER语句之间需要分号(终止符)我认为 -
@Ejay 不,他们没有。您可以在单个语句中对同一个表运行多个 ALTER,实际上这样做通常是有益的。
-
@duskwuff:是的,您可以在一个 alter 中更改多个字段,但如果您有多个 alter 语句(或任何其他语句),则需要
;。例如alter table1 field1_stuff, field2_stuff, etc...与alter table1 field1stuff; alter table1 field2_stuff.