phpMyadmin错误sql语法

时间:2013-03-23 12:44:10

标签: phpmyadmin

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服务器版本对应的手册,以便在')NOT NULL附近使用正确的语法,password VARCHAR(10)NOT NULL,registerFlag VARCHAR(7)NOT NULL,'在第1行强文

2 个答案:

答案 0 :(得分:0)

错误符合:

GPA DOUBLE( 4 ) NOT NULL ,

需要使用:

GPA DOUBLE NOT NULL ,

答案 1 :(得分:0)

问题确实是DOUBLE(4)部分,正如@Serg指出的那样。如果要为double值指定精度,则需要至少两个数字来指定精度,而不仅仅是一个。从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