我有一个中央数据库Student
,我的所有其他表Foriegn Key to,反过来我的Courses
数据库中各种记录的外键。
CREATE TABLE student(
FIRST_NAME varchar(50),
LAST_NAME varchar(50),
OSIS number(10,0),
OFCL varchar(5),
GRADE number(4,0),
COURSE_0 varchar(5),
COURSE_1 varchar(5),
COURSE_2 varchar(5),
COURSE_3 varchar(5),
COURSE_4 varchar(5),
COURSE_5 varchar(5),
COURSE_6 varchar(5),
COURSE_7 varchar(5),
COURSE_8 varchar(5),
COURSE_9 varchar(5),
COURSE_10 varchar(5),
CONSTRAINT pk_student PRIMARY KEY (OSIS),
CONSTRAINT course_0 FOREIGN KEY (COURSE_0) REFERENCES course(COURSE_ID),
CONSTRAINT course_1 FOREIGN KEY (COURSE_1) REFERENCES course(COURSE_ID),
CONSTRAINT course_2 FOREIGN KEY (COURSE_2) REFERENCES course(COURSE_ID),
CONSTRAINT course_3 FOREIGN KEY (COURSE_3) REFERENCES course(COURSE_ID),
CONSTRAINT course_4 FOREIGN KEY (COURSE_4) REFERENCES course(COURSE_ID),
CONSTRAINT course_5 FOREIGN KEY (COURSE_5) REFERENCES course(COURSE_ID),
CONSTRAINT course_6 FOREIGN KEY (COURSE_6) REFERENCES course(COURSE_ID),
CONSTRAINT course_7 FOREIGN KEY (COURSE_7) REFERENCES course(COURSE_ID),
CONSTRAINT course_8 FOREIGN KEY (COURSE_8) REFERENCES course(COURSE_ID),
CONSTRAINT course_9 FOREIGN KEY (COURSE_9) REFERENCES course(COURSE_ID),
CONSTRAINT course_10 FOREIGN KEY (COURSE_10) REFERENCES course(COURSE_ID)
)
CREATE TABLE course(
TITLE varchar(25),
COURSE_ID varchar(5),
PERID number(10,0),
OSIS number(10,0),
CONSTRAINT fk_teacher FOREIGN KEY (OSIS) REFERENCES teacher(OSIS),
CONSTRAINT pk_course PRIMARY KEY(COURSE_ID)
)
我还有一个Absent
数据库,其中包含Student
数据库的外键。
CREATE TABLE absent(
OSIS number(10,0),
CONSTRAINT student_absent FOREIGN KEY (OSIS) REFERENCES student(OSIS)
)
我正在寻找一种使用Student
上的外键访问Absent
上的数据的方法。例如,如果我在OSIS
和1234567890
上有Student
个号Absent
,我希望在{{{{}}上访问与1234567890
配对的数据1}}在Student
上使用1234567890
的外键。我发现有关调用外键的文档相对较少(仅设置它们),那么我应该采取哪些步骤来调用Absent
的外键?
答案 0 :(得分:1)
外键是约束而不是程序构造。它们阻止我们在absence
中插入一条记录,该记录未引用student
中的现有记录。
所以你需要做的就是加入表格:
select s.*
from student s
join absence a
on a.osis = s.osis
where a.osis = 124466 -- or whatever
顺便提一下,所有这些course
列都非常难看:你应该规范化数据模型并在两个表之间引入一个交集表,比如说student_course