带有“DECIMAL”

时间:2015-05-14 23:41:04

标签: mysql

这是我在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”但我真的想要“原子序数。”

谢谢! :)

2 个答案:

答案 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)

但是,你应该考虑使用FLOATDOUBLE而不是DECIMAL来获取像原子量这样的值。两位小数的精确度并不能代表实际的科学真理。

最后,如果你想将列名包装在像这样的反引号中

 `Atomic Mass`

在您使用它们的任何地方,您都可以在列名称中添加空格。但是,我怀疑,当你编写代码时,这会让你发疯。