这是我在mySQL上学习SQL的第5天。
我不明白为什么系统告诉我以下是错误。
我的代码是:
CREATE TABLE elements(
Name VARCHAR(20),
Symbol VARCHAR(2) PRIMARY KEY,
AtomicNumber TINYINT,
AtomicMass DEC(4,2) -- ending doesn't need , similar to SAS
);
INSERT INTO elements
VALUES ('Actinium','Ac',89,227);
-- here we want to modify the field type of the existing table because Aluminum has decimal #'s in mass
ALTER TABLE elements
MODIFY AtomicMass DECIMAL(9,3);
-- Q: I do not understand this why this is an syntax error.
系统消息:“语法错误:意外'DECIMAL(十进制)'” 它运行并更改字段约束,但错误消息仍然存在。
附加问题(完全没有问题,请容忍我):你如何将'空格'放在列的名称中?就像现在我使用“AtomicNumber”但我真的想要“原子序数。”
谢谢! :)
答案 0 :(得分:0)
咨询https://dev.mysql.com/doc/refman/5.6/en/alter-table.html。
您缺少COLUMN
。
ALTER TABLE elements
MODIFY COLUMN `AtomicMass` DECIMAL(9,3);
答案 1 :(得分:0)
MySQL数据类型的名称为DECIMAL
,而不是DEC
。因此,您的原始表定义语句应如下所示:
CREATE TABLE elements(
Name VARCHAR(20),
Symbol VARCHAR(2) PRIMARY KEY,
AtomicNumber TINYINT,
AtomicMass DECIMAL(4,2) -- ending doesn't need , similar to SAS
);
您的修改应如下所示:
ALTER TABLE elements
CHANGE COLUMN AtomicMass AtomicMass DECIMAL(10,2)
但是,你应该考虑使用FLOAT
或DOUBLE
而不是DECIMAL
来获取像原子量这样的值。两位小数的精确度并不能代表实际的科学真理。
最后,如果你想将列名包装在像这样的反引号中
`Atomic Mass`
在您使用它们的任何地方,您都可以在列名称中添加空格。但是,我怀疑,当你编写代码时,这会让你发疯。