你是否遵循了描述你应该如何做你正在做的事情的文档?因为,你似乎在课堂上没有太多注意力,也没有阅读文档
组成
做一些错误的或根本不存在的事情。
考虑删除所有这些混乱,重新开始。
以下是一些指导原则;试着纠正那些错误,如果仍然不起作用,请回来。
在
课程
表格:
-
不使用CHAR,但使用VARCHAR2数据类型
-
不能在不存在的列上创建约束(例如,CRS\U CREDIT列上的检查约束,而将该列命名为CREDIT)
在
截面图
表格:
-
不使用CHAR数据类型
-
不能使用SECTION表中不存在的列(在外键约束中)(例如SEC\u CRS\u COURSE),也不能使用引用的表中不存在的列(例如COURSE表中的CRS\u COURSE)
-
Oracle中没有更新级联和删除限制
这同样适用于
拿
桌子
[编辑,在您之后
几乎
使其工作]
祝贺你现在离得太近了!节和TAKES表需要进行一些调整(缺少列-请看,我用注释标记了它们),然后成功创建了表。
再一次(因为您不会听):去掉CHAR数据类型列-改用VARCHAR2。
SQL> CREATE TABLE PROFESSOR
2 (
3 NAME CHAR (15) CONSTRAINT nn_name NOT NULL,
4 EMPID VARCHAR2 (8) CONSTRAINT pk_empid PRIMARY KEY,
5 PHONE NUMBER (10),
6 DATEHIRED DATE,
7 SALARY NUMBER
8 );
Table created.
SQL>
SQL> CREATE TABLE COURSE
2 (
3 NAME CHAR (24) CONSTRAINT nn_names NOT NULL,
4 COURSE# CHAR (10) CONSTRAINT pk_course# PRIMARY KEY,
5 CREDIT CHAR (6) CONSTRAINT nn_credit NOT NULL,
6 COLLEGE CHAR (20),
7 HRS NUMBER (1),
8 CONSTRAINT chk_credit CHECK (credit IN ('U', 'G')),
9 CONSTRAINT chk_college CHECK
10 (college IN ('Arts and Sciences',
11 'Education',
12 'Engineering',
13 'Business')),
14 CONSTRAINT chk_course CHECK
15 ( (credit = 'U' AND hrs <= 4) OR (credit = 'G' AND hrs = 3)),
16 CONSTRAINT unq_course UNIQUE (name, college)
17 );
Table created.
SQL>
SQL> CREATE TABLE STUDENT
2 (
3 SID VARCHAR2 (7) CONSTRAINT pk_sid PRIMARY KEY,
4 NAME CHAR (14),
5 ADDRESS CHAR (22),
6 BIRTHDATE DATE,
7 GRADELEVEL CHAR (2) CONSTRAINT nn_glvl NOT NULL
8 );
Table created.
SQL>
SQL> CREATE TABLE SECTION
2 (
3 SECTION# VARCHAR2 (8) CONSTRAINT pk_section# PRIMARY KEY,
4 TIME CHAR (5),
5 MAXST NUMBER (2),
6 ROOM VARCHAR2 (14),
7 course# CHAR (10), -- added by LF
8 empid VARCHAR2 (8), -- added by LF
9 CONSTRAINT chk_maxst CHECK (maxst <= 35),
10 CONSTRAINT fk_crs FOREIGN KEY (course#) REFERENCES course (course#),
11 CONSTRAINT fk_pro FOREIGN KEY (empid) REFERENCES professor (empid)
12 );
Table created.
SQL>
SQL> CREATE TABLE TAKES
2 (
3 GRADE CHAR (5) CONSTRAINT nn_grade NOT NULL,
4 section# VARCHAR2 (8), -- added by LF
5 sid VARCHAR2 (7), -- added by LF
6 CONSTRAINT chk_grade CHECK (grade IN ('A', 'B', 'C')),
7 CONSTRAINT fk_sec FOREIGN KEY (section#) REFERENCES section (section#),
8 CONSTRAINT fk_stu FOREIGN KEY (sid) REFERENCES student (sid)
9 );
Table created.
SQL>