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类型定义了值。。。