我正在尝试完成我的实验室,但找不到找不到的右括号,这表示我正在丢失。我已经完成了课程表,而且一切正确,但是我在其他所有表上都遇到了错误,有人可以帮忙吗?
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));
答案 0 :(得分:1)
这个评论太长了。
练习的一部分目的是让您学习如何调试代码。学术环境中的试错法比“现实世界”中的效率高得多。
要调试,请简化!第一个问题是:错误发生在哪里?它是否在第一次创建表时发生?在第二?等等。您可以通过创建第一个表来确定。然后是前两个表,依此类推。
有了表后,您也许可以快速发现错误。如果没有,则可以一次注释掉列定义。
执行此操作时,至少会发现两个错误:
此外,如果您使用的是Oracle,则建议的字符串类型为varchar2()
,而不是varchar()
。
答案 1 :(得分:0)
我认为您忘记了专栏
let pls a b = max a b
let r = pls 4 5
;;
ORA-00904:“ CLASS_SECTION”:无效的标识符
答案 2 :(得分:0)
这里是对代码问题的逐表分析。
表COURSE
:确定
表CLASS
:
CLASS_CODE INTEGER(5) NOT NULL
INTEGER
数据类型不接受长度
CHECK (CLASS_SECTION IN (0,1,2,3,4,5,6,7,8))
表中的列CLASS_SECTION
不存在。我想你的意思是CLASS_CODE
。
CRS_CODE REFERENCES COURSE(CRS_CODE)
外键约束的声明应直接放置在定义引用列的行中。
表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)
);