mysql alter语法解析,试图更好地理解MySQL ALTER语法

我通过阅读《 Head First SQL》一书来学习MySQL,但是我遇到了麻烦.我似乎无法绕过下面的代码.具体来说,我有几个问题.

>当我尝试在控制台上运行整个代码(Wamp上的MySQL)时,出现多个错误.但是当我分开每条ALTER命令时(例如ALTER table_name RENAME TO new_table_name;),大多数代码通过控制台都不会出现任何问题.这是为什么?根据这本书,整个代码应该起作用.

>当我分别复制/粘贴代码时遇到的错误之一是关于ORDERing的错误,例如“ FIRST”,“ SECOND”,“ AFTER”等.为什么会发生这种情况?

>最后,为什么某些ALTER命令(例如RENAME和ADD COLUMN)需要ALTER TABLE table_name,而其他命令(例如CHANGE或MODIFY COLUMN)则不需要呢?这本书在解释任何事情上都做得不好,所以我很好奇为什么我只允许使用部分而非全部代码来做.

我得到的错误可能是过时的代码导致的吗?该书于2007年出版,所以我不确定代码是否过时.

所有和任何建议都将不胜感激.感谢您的时间!

码:

ALTER TABLE table_name

重命名为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);

解决方法:

您正在使用的示例代码已损坏.特殊情况是ADD COLUMN,CHANGE COLUMN和MODIFY COLUMN的FIRST关键字;例如,没有类似的SECOND关键字.相反,必须将超出第一列的列描述为another_column之后的列.

此外,由于某种原因,第二条ALTER TABLE已滑入该语句的中间.实际语法中没有这种不一致;这只是您书中的错误.

最后,“修改列”更改必须包括新类型的列. (如果ALTER的目标只是将列移动到表中的其他位置,则可以指定列的当前类型.)

这是查询的更正版本,带有注释.请注意,我尚未在真实表上测试过此查询,因此不确定它是否完全正确. (特别是,我将column4和column5的类型保留为SOME_TYPE,因为我不知道它们的类型应该是什么.)

ALTER TABLE new_table_name

ADD COLUMN column1 INT NOT NULL AUTO_INCREMENT FIRST,

ADD PRIMARY KEY(column1),

ADD COLUMN column2 VARCHAR(16) AFTER column1, -- no extra ALTER; not SECOND

CHANGE COLUMN column3 new_column3 VARCHAR(20),

MODIFY COLUMN column4 SOME_TYPE AFTER new_column3, -- need type, and must

-- use new column name

MODIFY COLUMN column5 SOME_TYPE AFTER column4, -- not SIXTH

CHANGE COLUMN column6 DECIMAL(7,2);

标签:alter,mysql

来源: https://codeday.me/bug/20191120/2043934.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值