我对SQL和Access非常陌生。我有所有这些语句来创建表,但我得到的不是语法错误就是;找不到表或约束

我对SQL和Access非常陌生。我有所有这些语句来创建表,但我得到的不是语法错误就是;找不到表或约束,sql,ms-access,Sql,Ms Access,正如标题所示,我在创建这两个表时遇到了问题。我做的另外两个我没有异议。我对SQL非常陌生,并试图自学,所以我很抱歉我的无知,但这让我发疯。我正在使用MS Access 2016 表1(语法错误): 第一个错误是通过声明GPA编号(3,2)调用的,因为NUMBER不是SQL中的数据类型。将其更改为数值(3,2)或十进制(3,2)将解决此问题。第二个错误是拉取,因为您试图在学生表上创建一个外键,但由于第一个错误,该外键不存在。为什么还要使用SQL构建表?使用访问表设计器。您是否在成功的SQL中使用了

正如标题所示,我在创建这两个表时遇到了问题。我做的另外两个我没有异议。我对SQL非常陌生,并试图自学,所以我很抱歉我的无知,但这让我发疯。我正在使用MS Access 2016

表1(语法错误):


第一个错误是通过声明
GPA编号(3,2)
调用的,因为
NUMBER
不是SQL中的数据类型。将其更改为
数值(3,2)
十进制(3,2)
将解决此问题。第二个错误是拉取,因为您试图在
学生
表上创建一个
外键
,但由于第一个错误,该外键不存在。

为什么还要使用SQL构建表?使用访问表设计器。您是否在成功的SQL中使用了VARCHAR?错误似乎是使用数字作为数据类型。。我用DOUBLE代替了数字(3,2),现在它在check()上出错了。您从哪里获得SQL语法?并不是所有的SQL都是一样的。在第一个SQL中,我将数字(3,2)改为双精度,并删除了3个检查行。然后查询工作。第二个运行时没有更改。我猜另一个引用Access SQL引擎无法识别Check()。
CREATE TABLE STUDENT(
studentID INTEGER,
firstName varchar(20),
lastName varchar(20),
gender char(1),
majorDept integer,
class varchar(10),
GPA NUMBER(3,2),
PRIMARY KEY(studentID),
FOREIGN key (majorDept) REFERENCES Department(deptID),
check(gender in ('M', 'F')),
check(class IN ('Freshman','Sophomore','Junior','Senior')),
CHECK (GPA >=0.00 AND GPA <=4.00)); 
CREATE TABLE Enrollment(
studentID INTEGER,
courseID integer,
PRIMARY key(studentID),
FOREIGN KEY(studentID) REFERENCES STUDENT(studentID),
FOREIGN KEY(courseID) REFERENCES Course(CourseID));