1

SQL查询:

CREATE TABLE  summertraining.student(

studentID VARCHAR( 9 ) NOT NULL ,
Name VARCHAR( 20 ) NOT NULL ,
KSUEmail VARCHAR( 20 ) NOT NULL ,
PhoneNo VARCHAR( 14 ) NOT NULL ,
coordinatorName VARCHAR( 20 ) NULL ,
supervisorName VARCHAR( 20 ) NULL ,
GPA DOUBLE( 4 ) NOT NULL ,
password VARCHAR( 10 ) NOT NULL ,
registerFlag VARCHAR( 7 ) NOT NULL ,
PRIMARY KEY (  studentID )
) ENGINE = INNODB;

MySQL 说:

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行强文本中的 ') NOT NULL, passwordVARCHAR(10) NOT NULL, VARCHAR(7) NOT NULL,' 附近使用正确的语法registerFlag

4

2 回答 2

0

错误在行:

GPA DOUBLE( 4 ) NOT NULL ,

需要使用:

GPA DOUBLE NOT NULL ,
于 2013-03-23T12:57:47.873 回答
0

问题确实是DOUBLE(4)@Serg 指出的部分。如果要为双精度值指定精度,则需要至少有两个数字来指定精度,而不仅仅是一个。来自 MySQL 手册:

MySQL 允许使用非标准语法:FLOAT(M,D) 或 REAL(M,D) 或 DOUBLE PRECISION(M,D)。这里,“(M,D)”是指总共最多可以存储M位的值,其中D位可以在小数点之后。例如,定义为 FLOAT(7,4) 的列在显示时看起来像 -999.9999。MySQL 在存储值时执行舍入,因此如果将 999.00009 插入 FLOAT(7,4) 列,则近似结果为 999.0001。

但是,您可能只想坚持使用,DOUBLE因为这种语法是 MySQL 特有的:

为了获得最大的可移植性,需要存储近似数值数据值的代码应使用 FLOAT 或 DOUBLE PRECISION,而无需指定精度或位数。

这是手册中相关页面的链接:http: //dev.mysql.com/doc/refman/5.6/en/floating-point-types.html

于 2013-03-23T13:17:59.317 回答