Mysql 尝试创建表时出错

Mysql 尝试创建表时出错,mysql,syntax,Mysql,Syntax,我找不到语法错误: Drop Table if Exists Classes; Drop Table if Exists Grades; Drop Table if Exists Faculty; Drop Table if Exists Students; CREATE TABLE Faculty (StaffID INTEGER( 11 ), StaffFirstName VARCHAR( 50 ), StaffLastName VARCHAR( 50 ), StaffPhone VARC

我找不到语法错误:

Drop Table if Exists Classes;
Drop Table if Exists Grades;
Drop Table if Exists Faculty;
Drop Table if Exists Students;

CREATE TABLE Faculty (StaffID INTEGER( 11 ),
StaffFirstName VARCHAR( 50 ),
StaffLastName VARCHAR( 50 ),
StaffPhone VARCHAR, CONSTRAINT PRIMARY KEY (StaffID) ) ENGINE = innodb;

CREATE TABLE Students (
  StudentID INTEGER( 11 ) NOT NULL ,
   StudentFirstName VARCHAR( 50 ) NOT NULL ,
   StudentLastName VARCHAR( 50 ) NOT NULL ,
   StudentPhone VARCHAR NOT NULL,
   CONSTRAINT PRIMARY KEY (StudentID)
  ) ENGINE = innodb ;

 CREATE TABLE Classes (
  ClassID VARCHAR NOT NULL ,
  ClassName VARCHAR( 50 ) NOT NULL ,
  CONSTRAINT PRIMARY KEY (ClassID)
) ENGINE = innodb ;

 CREATE TABLE Grades (
 StaffID INTEGER( 11 ) NOT NULL ,  
 StudentID INTEGER( 11 ) NOT NULL ,
 ClassID VARCHAR (11)NOT NULL ,
   Grade VARCHAR( 2 ),  
   CONSTRAINT PRIMARY KEY (StaffID, StudentID, ClassID),
 FOREIGN KEY (StaffID) references Faculty(StaffID),
 FOREIGN KEY (StudentID) references Students(StudentID),
 FOREIGN KEY (ClassID) references Classes(ClassID)
 ) ENGINE = innodb ;'
我试着去掉空格和逗号,加上一些我就是找不到的地方。这就是错误:

CREATE TABLE Faculty (StaffID INTEGER( 11 ),
StaffFirstName VARCHAR( 50 ),
StaffLastName VARCHAR( 50 ),
StaffPhone VARCHAR, CONSTRAINT PRIMARY KEY (StaffID) ) ENGINE = innodb;
MySQL说:

文档#1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第4行使用“CONSTRAINT PRIMARY KEY(StaffID))ENGINE=innodb”附近的正确语法


我对MySql不是很熟悉,但是有必要给整型列添加长度吗?您是说第一列的类型为

整数(11)


您不应该为StaffPhone VARCHAR列指定一个长度吗,例如VARCHAR(11)?这不是必需的,我实际上拿出了我的not NULL指示符。这并不总是必需的,但为了匹配一个已经存在的表,我需要定义相同的值,我实际上终于让它工作了,我不知道我做了什么,我只是不断删除空格,以防有回车符或制表符,我为所有的VARCHAR类型定义了值。。。