当前位置: 代码迷 >> Oracle管理 >> 如何根据外键查询关联表数据
  详细解决方案

如何根据外键查询关联表数据

热度:68   发布时间:2016-04-24 05:15:16.0
怎么根据外键查询关联表数据?
study表:
id         name   class
11001   张三   110
11002   李四   110
11101   张三   111
11202   王五   112
exam表:
id         subject   scores
11001   数学         80
11002   数学         90
11101   数学         67
11201   数学         87
11001   语文         54
11002   语文         90
11101   语文         98
11201   语文         67
我已经将EXAM表的id设为主键,那么外键应该怎么设置,怎么查询这个外键呢?

------解决方案--------------------
LZ你太有才了,exam表中id有重復也可以設為主鍵呀
SQL code
alter table study add constraint pk_study(id) primary keyalter table exam add constraint pk_exam(id,subject) primary keyalter table exam add constraint fk_exam_id foreign key(id)references study(id)
------解决方案--------------------
应该是study表的id为主键吧? 学员ID应该不会重复 

然后exam表的id 对应的是study表的id 相当于外键 


查询的时候 如果是要查询每个人的姓名学科分数 直接关联就可以了


------解决方案--------------------
列举简单的例子 查询存在分数的学员姓名学科分数

SQL code
create table study (id number(10),name varchar2(20),class number(5));insert into study values (11001,'张三',110);insert into study values (11002,'李四',110);insert into study values (11101,'张三',111);insert into study values (11202,'王五',112);create table exam (id number(10),subject varchar2(20),scores number(5));insert into exam values (11001,'数学',80);insert into exam values (11002,'数学',90);insert into exam values (11101,'数学',67);insert into exam values (11202,'数学',87);insert into exam values (11001,'语文',54);insert into exam values (11002,'语文',90);insert into exam values (11101,'语文',98);insert into exam values (11202,'语文',87);commit;select a.name,b.subject,b.scoresfrom study a,exam b where a.id = b.idorder by a.id      id    name   subject  scores---------------------------------1    11001    张三    数学    802    11001    张三    语文    543    11002    李四    数学    904    11002    李四    语文    905    11101    张三    语文    986    11101    张三    数学    677    11202    王五    语文    878    11202    王五    数学    87
  相关解决方案