我正在努力完成我的实验室,但我找不到丢失的右括号,它显示我丢失了。我已经完成了课程表,它是正确的,但我得到了一个错误,在每个其他的表,有人可以帮助吗?
CREATE TABLE COURSE(
CRS_CODE VARCHAR(8) NOT NULL,
CRS_DESCRIPTION VARCHAR(35) NOT NULL,
CRS_CREDIT INTEGER DEFAULT 4 NOT NULL CHECK(CRS_CREDIT IN (1,2,3,4)),
PRIMARY KEY (CRS_CODE));
CREATE TABLE CLASS (
CRS_CODE VARCHAR(8) NOT NULL,
CLASS_CODE INTEGER (5) NOT NULL,
CHECK (CLASS_SECTION IN (0,1,2,3,4,5,6,7,8)),
CLASS_TIME VARCHAR(25) NOT NULL,
CLASS_ROOM CHAR(6),
CRS_CODE REFERENCES COURSE(CRS_CODE),
PRIMARY KEY (CLASS_CODE));
CREATE TABLE STUDENT(
STU_NUM INTEGER NOT NULL,
STU_LNAME VARCHAR(25) NOT NULL,
STU_FNAME VARCHAR(20) NOT NULL,
STU_INIT VARCHAR(1),
STU_DOB DATE,
STU_HRS INTEGER DEFAULT 0 CHECK (STU_HRS>=0 AND STU_HRS<1000),
STU_CLASS VARCHAR(2) CHECK (STU_CLASS IN ('Fr', 'So', 'Jr', 'Sr', 'Gr')),
STU_GPA DECIMAL(3,2) DEFAULT 0.00 CHECK (STU_GPA BETWEEN 0.00 AND 4.00),
STU_PHONE INTEGER(4),
PRIMARY KEY (STU_NUM));
CREATE TABLE ENROLL(
ENROLL_GRADE VARCHAR(1) DEFAULT 'Z' CHECK (ENROLL_GRADE IN('A','B','C','D','F','I','W','Z')),
STU_NUM INTEGER REFERENCES STUDENT(STU_NUM),
CLASS_CODE INTEGER (5) REFERENCES CLASS(CLASS_CODE));发布于 2019-10-20 20:02:40
这篇评论太长了。
实验的部分目的是让你学习如何调试你的代码。学术环境中的试错比“现实世界”中的效率要高得多。
要调试,请简化!第一个问题是:错误发生在哪里?在第一次创建表时会发生这种情况吗?在第二个?诸若此类。可以通过创建第一个表来确定这一点。然后是前两个表,等等。
一旦你有了这个表,你就可以很快地发现错误。如果没有,您可以一次注释掉一个列定义。
执行此操作时,您将发现至少两个错误:
此外,如果您使用的是Oracle,那么建议的字符串类型是varchar2(),而不是varchar()。
发布于 2019-10-20 22:19:11
我想你忘了一篇专栏
CREATE TABLE CLASS (
CRS_CODE VARCHAR(8) NOT NULL,
CLASS_CODE INTEGER (5) NOT NULL,
CHECK (CLASS_SECTION IN (0,1,2,3,4,5,6,7,8)),
CLASS_TIME VARCHAR(25) NOT NULL,
CLASS_ROOM CHAR(6),
CRS_CODE REFERENCES COURSE(CRS_CODE),
PRIMARY KEY (CLASS_CODE));ORA-00904:"CLASS_SECTION":无效的标识符
发布于 2019-10-22 07:30:47
下面是对代码问题的逐表分析。
COURSE**:**确定的表
CLASS**:**的表
CLASS_CODE INTEGER(5) NOT NULLINTEGER数据类型不接受长度
CHECK (CLASS_SECTION IN (0,1,2,3,4,5,6,7,8))表中不存在列CLASS_SECTION。我想你指的是CLASS_CODE。
CRS_CODE REFERENCES COURSE(CRS_CODE)foreign key约束的声明应直接放在定义引用列的行中。
STUDENT**:**的表
STU_PHONE INTEGER(4)见上文
ENROLL**:**的表
CLASS_CODE INTEGER (5)请参见上面的。
一旦解决了这些问题,就可以成功创建这4个表。
CREATE TABLE COURSE(
CRS_CODE VARCHAR(8) NOT NULL,
CRS_DESCRIPTION VARCHAR(35) NOT NULL,
CRS_CREDIT INTEGER DEFAULT 4 NOT NULL CHECK(CRS_CREDIT IN (1,2,3,4)),
PRIMARY KEY (CRS_CODE));
CREATE TABLE CLASS (
CRS_CODE VARCHAR(8) NOT NULL REFERENCES COURSE(CRS_CODE),
CLASS_CODE INTEGER NOT NULL CHECK (CLASS_CODE IN (0,1,2,3,4,5,6,7,8)),
CLASS_TIME VARCHAR(25) NOT NULL,
CLASS_ROOM CHAR(6),
PRIMARY KEY (CLASS_CODE)
);
CREATE TABLE STUDENT(
STU_NUM INTEGER NOT NULL,
STU_LNAME VARCHAR(25) NOT NULL,
STU_FNAME VARCHAR(20) NOT NULL,
STU_INIT VARCHAR(1),
STU_DOB DATE,
STU_HRS INTEGER DEFAULT 0 CHECK (STU_HRS>=0 AND STU_HRS<1000),
STU_CLASS VARCHAR(2) CHECK (STU_CLASS IN ('Fr', 'So', 'Jr', 'Sr', 'Gr')),
STU_GPA DECIMAL(3,2) DEFAULT 0.00 CHECK (STU_GPA BETWEEN 0.00 AND 4.00),
STU_PHONE INTEGER,
PRIMARY KEY (STU_NUM));
CREATE TABLE ENROLL(
ENROLL_GRADE VARCHAR(1) DEFAULT 'Z' CHECK (ENROLL_GRADE IN('A','B','C','D','F','I','W','Z')),
STU_NUM INTEGER REFERENCES STUDENT(STU_NUM),
CLASS_CODE INTEGER REFERENCES CLASS(CLASS_CODE)
);https://stackoverflow.com/questions/58472741
复制相似问题